001// $ANTLR 2.7.7 (20060906): "ACIItem.g" -> "AntlrACIItemParser.java"$ 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 * 021 */ 022 023 024package org.apache.directory.api.ldap.aci; 025 026 027import java.util.List; 028import java.util.ArrayList; 029import java.util.HashSet; 030import java.util.Map; 031import java.util.Set; 032import java.util.Enumeration; 033 034import org.apache.directory.api.ldap.model.filter.BranchNode; 035import org.apache.directory.api.ldap.model.filter.AndNode; 036import org.apache.directory.api.ldap.model.filter.OrNode; 037import org.apache.directory.api.ldap.model.filter.NotNode; 038import org.apache.directory.api.ldap.model.filter.ExprNode; 039import org.apache.directory.api.ldap.model.filter.LeafNode; 040import org.apache.directory.api.ldap.model.filter.EqualityNode; 041import org.apache.directory.api.ldap.model.filter.FilterParser; 042import org.apache.directory.api.ldap.model.schema.normalizers.NameComponentNormalizer; 043import org.apache.directory.api.ldap.model.subtree.SubtreeSpecification; 044import org.apache.directory.api.ldap.model.subtree.SubtreeSpecificationModifier; 045import org.apache.directory.api.util.ComponentsMonitor; 046import org.apache.directory.api.util.MandatoryAndOptionalComponentsMonitor; 047import org.apache.directory.api.util.MandatoryComponentsMonitor; 048import org.apache.directory.api.ldap.model.name.DnUtils; 049import org.apache.directory.api.util.NoDuplicateKeysMap; 050import org.apache.directory.api.util.OptionalComponentsMonitor; 051import org.apache.directory.api.ldap.model.name.Dn; 052import org.apache.directory.api.ldap.model.name.Rdn; 053import org.apache.directory.api.ldap.model.schema.AttributeType; 054import org.apache.directory.api.ldap.model.schema.SchemaManager; 055import org.apache.directory.api.ldap.model.constants.SchemaConstants; 056import org.apache.directory.api.ldap.model.constants.AuthenticationLevel; 057import org.apache.directory.api.ldap.model.entry.StringValue; 058import org.apache.directory.api.ldap.model.entry.Attribute; 059import org.apache.directory.api.ldap.model.entry.DefaultAttribute; 060import org.apache.directory.api.ldap.model.exception.LdapException; 061import org.apache.directory.api.ldap.aci.protectedItem.AllAttributeValuesItem; 062import org.apache.directory.api.ldap.aci.protectedItem.AttributeTypeItem; 063import org.apache.directory.api.ldap.aci.protectedItem.AttributeValueItem; 064import org.apache.directory.api.ldap.aci.protectedItem.SelfValueItem; 065import org.apache.directory.api.ldap.aci.protectedItem.ClassesItem; 066import org.apache.directory.api.ldap.aci.protectedItem.EntryItem; 067import org.apache.directory.api.ldap.aci.protectedItem.RangeOfValuesItem; 068import org.apache.directory.api.ldap.aci.protectedItem.MaxImmSubItem; 069import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountElem; 070import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountItem; 071import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByElem; 072import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByItem; 073import org.slf4j.Logger; 074import org.slf4j.LoggerFactory; 075 076 077import antlr.TokenBuffer; 078import antlr.TokenStreamException; 079import antlr.TokenStreamIOException; 080import antlr.ANTLRException; 081import antlr.LLkParser; 082import antlr.Token; 083import antlr.TokenStream; 084import antlr.RecognitionException; 085import antlr.NoViableAltException; 086import antlr.MismatchedTokenException; 087import antlr.SemanticException; 088import antlr.ParserSharedInputState; 089import antlr.collections.impl.BitSet; 090 091/** 092 * The antlr generated ACIItem parser. 093 * 094 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 095 */ 096public class AntlrACIItemParser extends antlr.LLkParser implements AntlrACIItemParserTokenTypes 097 { 098 099 private static final Logger log = LoggerFactory.getLogger( AntlrACIItemParser.class ); 100 101 NameComponentNormalizer normalizer; 102 103 // nonshared global data needed to avoid extensive pass/return stuff 104 // these are only used by three first order components 105 private String identificationTag; 106 private AuthenticationLevel authenticationLevel; 107 private Integer aciPrecedence = null; 108 109 private boolean isItemFirstACIItem; 110 111 // shared global data needed to avoid extensive pass/return stuff 112 private Set<ProtectedItem> protectedItems; 113 private Map<String, ProtectedItem> protectedItemsMap; 114 private Set<UserClass> userClasses; 115 private Map<String, UserClass> userClassesMap; 116 private Set<ItemPermission> itemPermissions; 117 private Integer precedence = null; 118 private Set<GrantAndDenial> grantsAndDenials; 119 private Set<UserPermission> userPermissions; 120 121 /** The SchemaManager */ 122 private SchemaManager schemaManager; 123 124 private Set<Dn> chopBeforeExclusions; 125 private Set<Dn> chopAfterExclusions; 126 private SubtreeSpecificationModifier ssModifier = null; 127 128 private ComponentsMonitor mainACIItemComponentsMonitor; 129 private ComponentsMonitor itemPermissionComponentsMonitor; 130 private ComponentsMonitor userPermissionComponentsMonitor; 131 private ComponentsMonitor subtreeSpecificationComponentsMonitor; 132 133 134 /** 135 * Creates a (normalizing) subordinate DnParser for parsing Names. 136 * This method MUST be called for each instance while we cannot do 137 * constructor overloading for this class. 138 * 139 * @return the DnParser to be used for parsing Names 140 */ 141 public void init( SchemaManager schemaManager ) 142 { 143 this.schemaManager = schemaManager; 144 } 145 146 /** 147 * Sets the NameComponentNormalizer for this parser's dnParser. 148 */ 149 public void setNormalizer(NameComponentNormalizer normalizer) 150 { 151 this.normalizer = normalizer; 152 } 153 154 private int token2Integer( Token token ) throws RecognitionException 155 { 156 int i = 0; 157 158 try 159 { 160 i = Integer.parseInt( token.getText()); 161 } 162 catch ( NumberFormatException e ) 163 { 164 throw new RecognitionException( "Value of INTEGER token " + 165 token.getText() + 166 " cannot be converted to an Integer" ); 167 } 168 169 return i; 170 } 171 172protected AntlrACIItemParser(TokenBuffer tokenBuf, int k) { 173 super(tokenBuf,k); 174 tokenNames = _tokenNames; 175} 176 177public AntlrACIItemParser(TokenBuffer tokenBuf) { 178 this(tokenBuf,1); 179} 180 181protected AntlrACIItemParser(TokenStream lexer, int k) { 182 super(lexer,k); 183 tokenNames = _tokenNames; 184} 185 186public AntlrACIItemParser(TokenStream lexer) { 187 this(lexer,1); 188} 189 190public AntlrACIItemParser(ParserSharedInputState state) { 191 super(state,1); 192 tokenNames = _tokenNames; 193} 194 195 public final ACIItem wrapperEntryPoint() throws RecognitionException, TokenStreamException { 196 ACIItem aciItem ; 197 198 199 log.debug( "entered wrapperEntryPoint()" ); 200 aciItem = null; 201 202 203 { 204 _loop3: 205 do { 206 if ((LA(1)==SP)) { 207 match(SP); 208 } 209 else { 210 break _loop3; 211 } 212 213 } while (true); 214 } 215 aciItem=theACIItem(); 216 { 217 _loop5: 218 do { 219 if ((LA(1)==SP)) { 220 match(SP); 221 } 222 else { 223 break _loop5; 224 } 225 226 } while (true); 227 } 228 match(Token.EOF_TYPE); 229 return aciItem ; 230 } 231 232 public final ACIItem theACIItem() throws RecognitionException, TokenStreamException { 233 ACIItem aciItem ; 234 235 236 log.debug( "entered theACIItem()" ); 237 aciItem = null; 238 mainACIItemComponentsMonitor = new MandatoryComponentsMonitor( 239 new String [] { "identificationTag", "precedence", "authenticationLevel", "itemOrUserFirst" } ); 240 241 242 match(OPEN_CURLY); 243 { 244 _loop8: 245 do { 246 if ((LA(1)==SP)) { 247 match(SP); 248 } 249 else { 250 break _loop8; 251 } 252 253 } while (true); 254 } 255 mainACIItemComponent(); 256 { 257 _loop10: 258 do { 259 if ((LA(1)==SP)) { 260 match(SP); 261 } 262 else { 263 break _loop10; 264 } 265 266 } while (true); 267 } 268 { 269 _loop16: 270 do { 271 if ((LA(1)==SEP)) { 272 match(SEP); 273 { 274 _loop13: 275 do { 276 if ((LA(1)==SP)) { 277 match(SP); 278 } 279 else { 280 break _loop13; 281 } 282 283 } while (true); 284 } 285 mainACIItemComponent(); 286 { 287 _loop15: 288 do { 289 if ((LA(1)==SP)) { 290 match(SP); 291 } 292 else { 293 break _loop15; 294 } 295 296 } while (true); 297 } 298 } 299 else { 300 break _loop16; 301 } 302 303 } while (true); 304 } 305 match(CLOSE_CURLY); 306 307 if ( !mainACIItemComponentsMonitor.finalStateValid() ) 308 { 309 throw new RecognitionException( "Missing mandatory ACIItem components: " 310 + mainACIItemComponentsMonitor.getRemainingComponents() ); 311 } 312 313 if ( isItemFirstACIItem ) 314 { 315 aciItem = new ItemFirstACIItem( 316 identificationTag, 317 aciPrecedence, 318 authenticationLevel, 319 protectedItems, 320 itemPermissions ); 321 } 322 else 323 { 324 aciItem = new UserFirstACIItem( 325 identificationTag, 326 aciPrecedence, 327 authenticationLevel, 328 userClasses, 329 userPermissions ); 330 } 331 332 return aciItem ; 333 } 334 335 public final void mainACIItemComponent() throws RecognitionException, TokenStreamException { 336 337 338 log.debug( "entered mainACIItemComponent()" ); 339 340 341 try { // for error handling 342 switch ( LA(1)) { 343 case ID_identificationTag: 344 { 345 aci_identificationTag(); 346 347 mainACIItemComponentsMonitor.useComponent( "identificationTag" ); 348 349 break; 350 } 351 case ID_precedence: 352 { 353 aci_precedence(); 354 355 mainACIItemComponentsMonitor.useComponent( "precedence" ); 356 357 break; 358 } 359 case ID_authenticationLevel: 360 { 361 aci_authenticationLevel(); 362 363 mainACIItemComponentsMonitor.useComponent( "authenticationLevel" ); 364 365 break; 366 } 367 case ID_itemOrUserFirst: 368 { 369 aci_itemOrUserFirst(); 370 371 mainACIItemComponentsMonitor.useComponent( "itemOrUserFirst" ); 372 373 break; 374 } 375 default: 376 { 377 throw new NoViableAltException(LT(1), getFilename()); 378 } 379 } 380 } 381 catch (IllegalArgumentException e) { 382 383 throw new RecognitionException( e.getMessage() ); 384 385 } 386 } 387 388 public final void aci_identificationTag() throws RecognitionException, TokenStreamException { 389 390 Token token = null; 391 392 log.debug( "entered aci_identificationTag()" ); 393 394 395 match(ID_identificationTag); 396 { 397 int _cnt20=0; 398 _loop20: 399 do { 400 if ((LA(1)==SP)) { 401 match(SP); 402 } 403 else { 404 if ( _cnt20>=1 ) { break _loop20; } else {throw new NoViableAltException(LT(1), getFilename());} 405 } 406 407 _cnt20++; 408 } while (true); 409 } 410 token = LT(1); 411 match(SAFEUTF8STRING); 412 413 identificationTag = token.getText(); 414 415 } 416 417 public final void aci_precedence() throws RecognitionException, TokenStreamException { 418 419 420 log.debug( "entered aci_precedence()" ); 421 422 423 precedence(); 424 425 aciPrecedence = Integer.valueOf( precedence ); 426 precedence = null; 427 428 } 429 430 public final void aci_authenticationLevel() throws RecognitionException, TokenStreamException { 431 432 433 log.debug( "entered aci_authenticationLevel()" ); 434 435 436 match(ID_authenticationLevel); 437 { 438 int _cnt27=0; 439 _loop27: 440 do { 441 if ((LA(1)==SP)) { 442 match(SP); 443 } 444 else { 445 if ( _cnt27>=1 ) { break _loop27; } else {throw new NoViableAltException(LT(1), getFilename());} 446 } 447 448 _cnt27++; 449 } while (true); 450 } 451 authenticationLevel(); 452 } 453 454 public final void aci_itemOrUserFirst() throws RecognitionException, TokenStreamException { 455 456 457 log.debug( "entered aci_itemOrUserFirst()" ); 458 459 460 match(ID_itemOrUserFirst); 461 { 462 int _cnt31=0; 463 _loop31: 464 do { 465 if ((LA(1)==SP)) { 466 match(SP); 467 } 468 else { 469 if ( _cnt31>=1 ) { break _loop31; } else {throw new NoViableAltException(LT(1), getFilename());} 470 } 471 472 _cnt31++; 473 } while (true); 474 } 475 itemOrUserFirst(); 476 } 477 478 public final void precedence() throws RecognitionException, TokenStreamException { 479 480 Token token = null; 481 482 log.debug( "entered precedence()" ); 483 484 485 match(ID_precedence); 486 { 487 int _cnt24=0; 488 _loop24: 489 do { 490 if ((LA(1)==SP)) { 491 match(SP); 492 } 493 else { 494 if ( _cnt24>=1 ) { break _loop24; } else {throw new NoViableAltException(LT(1), getFilename());} 495 } 496 497 _cnt24++; 498 } while (true); 499 } 500 token = LT(1); 501 match(INTEGER); 502 503 precedence = Integer.valueOf( token2Integer( token ) ); 504 505 if ( ( precedence < 0 ) || ( precedence > 255 ) ) 506 { 507 throw new RecognitionException( "Expecting INTEGER token having an Integer value between 0 and 255, found " + precedence ); 508 } 509 510 } 511 512 public final void authenticationLevel() throws RecognitionException, TokenStreamException { 513 514 515 log.debug( "entered authenticationLevel()" ); 516 517 518 switch ( LA(1)) { 519 case ID_none: 520 { 521 match(ID_none); 522 523 authenticationLevel = AuthenticationLevel.NONE; 524 525 break; 526 } 527 case ID_simple: 528 { 529 match(ID_simple); 530 531 authenticationLevel = AuthenticationLevel.SIMPLE; 532 533 break; 534 } 535 case ID_strong: 536 { 537 match(ID_strong); 538 539 authenticationLevel = AuthenticationLevel.STRONG; 540 541 break; 542 } 543 default: 544 { 545 throw new NoViableAltException(LT(1), getFilename()); 546 } 547 } 548 } 549 550 public final void itemOrUserFirst() throws RecognitionException, TokenStreamException { 551 552 553 log.debug( "entered itemOrUserFirst()" ); 554 555 556 switch ( LA(1)) { 557 case ID_itemFirst: 558 { 559 itemFirst(); 560 break; 561 } 562 case ID_userFirst: 563 { 564 userFirst(); 565 break; 566 } 567 default: 568 { 569 throw new NoViableAltException(LT(1), getFilename()); 570 } 571 } 572 } 573 574 public final void itemFirst() throws RecognitionException, TokenStreamException { 575 576 577 log.debug( "entered itemFirst()" ); 578 579 580 match(ID_itemFirst); 581 { 582 _loop35: 583 do { 584 if ((LA(1)==SP)) { 585 match(SP); 586 } 587 else { 588 break _loop35; 589 } 590 591 } while (true); 592 } 593 match(COLON); 594 { 595 _loop37: 596 do { 597 if ((LA(1)==SP)) { 598 match(SP); 599 } 600 else { 601 break _loop37; 602 } 603 604 } while (true); 605 } 606 match(OPEN_CURLY); 607 { 608 _loop39: 609 do { 610 if ((LA(1)==SP)) { 611 match(SP); 612 } 613 else { 614 break _loop39; 615 } 616 617 } while (true); 618 } 619 protectedItems(); 620 { 621 _loop41: 622 do { 623 if ((LA(1)==SP)) { 624 match(SP); 625 } 626 else { 627 break _loop41; 628 } 629 630 } while (true); 631 } 632 match(SEP); 633 { 634 _loop43: 635 do { 636 if ((LA(1)==SP)) { 637 match(SP); 638 } 639 else { 640 break _loop43; 641 } 642 643 } while (true); 644 } 645 itemPermissions(); 646 { 647 _loop45: 648 do { 649 if ((LA(1)==SP)) { 650 match(SP); 651 } 652 else { 653 break _loop45; 654 } 655 656 } while (true); 657 } 658 match(CLOSE_CURLY); 659 660 isItemFirstACIItem = true; 661 662 } 663 664 public final void userFirst() throws RecognitionException, TokenStreamException { 665 666 667 log.debug( "entered userFirst()" ); 668 669 670 match(ID_userFirst); 671 { 672 _loop48: 673 do { 674 if ((LA(1)==SP)) { 675 match(SP); 676 } 677 else { 678 break _loop48; 679 } 680 681 } while (true); 682 } 683 match(COLON); 684 { 685 _loop50: 686 do { 687 if ((LA(1)==SP)) { 688 match(SP); 689 } 690 else { 691 break _loop50; 692 } 693 694 } while (true); 695 } 696 match(OPEN_CURLY); 697 { 698 _loop52: 699 do { 700 if ((LA(1)==SP)) { 701 match(SP); 702 } 703 else { 704 break _loop52; 705 } 706 707 } while (true); 708 } 709 userClasses(); 710 { 711 _loop54: 712 do { 713 if ((LA(1)==SP)) { 714 match(SP); 715 } 716 else { 717 break _loop54; 718 } 719 720 } while (true); 721 } 722 match(SEP); 723 { 724 _loop56: 725 do { 726 if ((LA(1)==SP)) { 727 match(SP); 728 } 729 else { 730 break _loop56; 731 } 732 733 } while (true); 734 } 735 userPermissions(); 736 { 737 _loop58: 738 do { 739 if ((LA(1)==SP)) { 740 match(SP); 741 } 742 else { 743 break _loop58; 744 } 745 746 } while (true); 747 } 748 match(CLOSE_CURLY); 749 750 isItemFirstACIItem = false; 751 752 } 753 754 public final void protectedItems() throws RecognitionException, TokenStreamException { 755 756 757 log.debug( "entered protectedItems()" ); 758 protectedItemsMap = new NoDuplicateKeysMap(); 759 760 761 try { // for error handling 762 match(ID_protectedItems); 763 { 764 _loop61: 765 do { 766 if ((LA(1)==SP)) { 767 match(SP); 768 } 769 else { 770 break _loop61; 771 } 772 773 } while (true); 774 } 775 match(OPEN_CURLY); 776 { 777 _loop63: 778 do { 779 if ((LA(1)==SP)) { 780 match(SP); 781 } 782 else { 783 break _loop63; 784 } 785 786 } while (true); 787 } 788 { 789 switch ( LA(1)) { 790 case ATTRIBUTE_VALUE_CANDIDATE: 791 case RANGE_OF_VALUES_CANDIDATE: 792 case ID_entry: 793 case ID_allUserAttributeTypes: 794 case ID_attributeType: 795 case ID_allAttributeValues: 796 case ID_allUserAttributeTypesAndValues: 797 case ID_selfValue: 798 case ID_maxValueCount: 799 case ID_maxImmSub: 800 case ID_restrictedBy: 801 case ID_classes: 802 { 803 protectedItem(); 804 { 805 _loop66: 806 do { 807 if ((LA(1)==SP)) { 808 match(SP); 809 } 810 else { 811 break _loop66; 812 } 813 814 } while (true); 815 } 816 { 817 _loop72: 818 do { 819 if ((LA(1)==SEP)) { 820 match(SEP); 821 { 822 _loop69: 823 do { 824 if ((LA(1)==SP)) { 825 match(SP); 826 } 827 else { 828 break _loop69; 829 } 830 831 } while (true); 832 } 833 protectedItem(); 834 { 835 _loop71: 836 do { 837 if ((LA(1)==SP)) { 838 match(SP); 839 } 840 else { 841 break _loop71; 842 } 843 844 } while (true); 845 } 846 } 847 else { 848 break _loop72; 849 } 850 851 } while (true); 852 } 853 break; 854 } 855 case CLOSE_CURLY: 856 { 857 break; 858 } 859 default: 860 { 861 throw new NoViableAltException(LT(1), getFilename()); 862 } 863 } 864 } 865 match(CLOSE_CURLY); 866 867 protectedItems = new HashSet<ProtectedItem>( protectedItemsMap.values() ); 868 869 } 870 catch (IllegalArgumentException e) { 871 872 throw new RecognitionException( "Protected Items cannot be duplicated. " + e.getMessage() ); 873 874 } 875 } 876 877 public final void itemPermissions() throws RecognitionException, TokenStreamException { 878 879 880 log.debug( "entered itemPermissions()" ); 881 itemPermissions = new HashSet<ItemPermission>(); 882 ItemPermission itemPermission = null; 883 884 885 match(ID_itemPermissions); 886 { 887 int _cnt177=0; 888 _loop177: 889 do { 890 if ((LA(1)==SP)) { 891 match(SP); 892 } 893 else { 894 if ( _cnt177>=1 ) { break _loop177; } else {throw new NoViableAltException(LT(1), getFilename());} 895 } 896 897 _cnt177++; 898 } while (true); 899 } 900 match(OPEN_CURLY); 901 { 902 _loop179: 903 do { 904 if ((LA(1)==SP)) { 905 match(SP); 906 } 907 else { 908 break _loop179; 909 } 910 911 } while (true); 912 } 913 { 914 switch ( LA(1)) { 915 case OPEN_CURLY: 916 { 917 itemPermission=itemPermission(); 918 { 919 _loop182: 920 do { 921 if ((LA(1)==SP)) { 922 match(SP); 923 } 924 else { 925 break _loop182; 926 } 927 928 } while (true); 929 } 930 931 itemPermissions.add( itemPermission ); 932 933 { 934 _loop188: 935 do { 936 if ((LA(1)==SEP)) { 937 match(SEP); 938 { 939 _loop185: 940 do { 941 if ((LA(1)==SP)) { 942 match(SP); 943 } 944 else { 945 break _loop185; 946 } 947 948 } while (true); 949 } 950 itemPermission=itemPermission(); 951 { 952 _loop187: 953 do { 954 if ((LA(1)==SP)) { 955 match(SP); 956 } 957 else { 958 break _loop187; 959 } 960 961 } while (true); 962 } 963 964 itemPermissions.add( itemPermission ); 965 966 } 967 else { 968 break _loop188; 969 } 970 971 } while (true); 972 } 973 break; 974 } 975 case CLOSE_CURLY: 976 { 977 break; 978 } 979 default: 980 { 981 throw new NoViableAltException(LT(1), getFilename()); 982 } 983 } 984 } 985 match(CLOSE_CURLY); 986 } 987 988 public final void userClasses() throws RecognitionException, TokenStreamException { 989 990 991 log.debug( "entered userClasses()" ); 992 userClassesMap = new NoDuplicateKeysMap(); 993 994 995 try { // for error handling 996 match(ID_userClasses); 997 { 998 int _cnt218=0; 999 _loop218: 1000 do { 1001 if ((LA(1)==SP)) { 1002 match(SP); 1003 } 1004 else { 1005 if ( _cnt218>=1 ) { break _loop218; } else {throw new NoViableAltException(LT(1), getFilename());} 1006 } 1007 1008 _cnt218++; 1009 } while (true); 1010 } 1011 match(OPEN_CURLY); 1012 { 1013 _loop220: 1014 do { 1015 if ((LA(1)==SP)) { 1016 match(SP); 1017 } 1018 else { 1019 break _loop220; 1020 } 1021 1022 } while (true); 1023 } 1024 { 1025 switch ( LA(1)) { 1026 case ID_allUsers: 1027 case ID_thisEntry: 1028 case ID_parentOfEntry: 1029 case ID_name: 1030 case ID_userGroup: 1031 case ID_subtree: 1032 { 1033 userClass(); 1034 { 1035 _loop223: 1036 do { 1037 if ((LA(1)==SP)) { 1038 match(SP); 1039 } 1040 else { 1041 break _loop223; 1042 } 1043 1044 } while (true); 1045 } 1046 { 1047 _loop229: 1048 do { 1049 if ((LA(1)==SEP)) { 1050 match(SEP); 1051 { 1052 _loop226: 1053 do { 1054 if ((LA(1)==SP)) { 1055 match(SP); 1056 } 1057 else { 1058 break _loop226; 1059 } 1060 1061 } while (true); 1062 } 1063 userClass(); 1064 { 1065 _loop228: 1066 do { 1067 if ((LA(1)==SP)) { 1068 match(SP); 1069 } 1070 else { 1071 break _loop228; 1072 } 1073 1074 } while (true); 1075 } 1076 } 1077 else { 1078 break _loop229; 1079 } 1080 1081 } while (true); 1082 } 1083 break; 1084 } 1085 case CLOSE_CURLY: 1086 { 1087 break; 1088 } 1089 default: 1090 { 1091 throw new NoViableAltException(LT(1), getFilename()); 1092 } 1093 } 1094 } 1095 match(CLOSE_CURLY); 1096 1097 userClasses = new HashSet<UserClass>( userClassesMap.values() ); 1098 1099 } 1100 catch (IllegalArgumentException e) { 1101 1102 throw new RecognitionException( "User Classes cannot be duplicated. " + e.getMessage() ); 1103 1104 } 1105 } 1106 1107 public final void userPermissions() throws RecognitionException, TokenStreamException { 1108 1109 1110 log.debug( "entered userPermissions()" ); 1111 userPermissions = new HashSet<UserPermission>(); 1112 UserPermission userPermission = null; 1113 1114 1115 match(ID_userPermissions); 1116 { 1117 int _cnt275=0; 1118 _loop275: 1119 do { 1120 if ((LA(1)==SP)) { 1121 match(SP); 1122 } 1123 else { 1124 if ( _cnt275>=1 ) { break _loop275; } else {throw new NoViableAltException(LT(1), getFilename());} 1125 } 1126 1127 _cnt275++; 1128 } while (true); 1129 } 1130 match(OPEN_CURLY); 1131 { 1132 _loop277: 1133 do { 1134 if ((LA(1)==SP)) { 1135 match(SP); 1136 } 1137 else { 1138 break _loop277; 1139 } 1140 1141 } while (true); 1142 } 1143 { 1144 switch ( LA(1)) { 1145 case OPEN_CURLY: 1146 { 1147 userPermission=userPermission(); 1148 { 1149 _loop280: 1150 do { 1151 if ((LA(1)==SP)) { 1152 match(SP); 1153 } 1154 else { 1155 break _loop280; 1156 } 1157 1158 } while (true); 1159 } 1160 1161 userPermissions.add( userPermission ); 1162 1163 { 1164 _loop286: 1165 do { 1166 if ((LA(1)==SEP)) { 1167 match(SEP); 1168 { 1169 _loop283: 1170 do { 1171 if ((LA(1)==SP)) { 1172 match(SP); 1173 } 1174 else { 1175 break _loop283; 1176 } 1177 1178 } while (true); 1179 } 1180 userPermission=userPermission(); 1181 { 1182 _loop285: 1183 do { 1184 if ((LA(1)==SP)) { 1185 match(SP); 1186 } 1187 else { 1188 break _loop285; 1189 } 1190 1191 } while (true); 1192 } 1193 1194 userPermissions.add( userPermission ); 1195 1196 } 1197 else { 1198 break _loop286; 1199 } 1200 1201 } while (true); 1202 } 1203 break; 1204 } 1205 case CLOSE_CURLY: 1206 { 1207 break; 1208 } 1209 default: 1210 { 1211 throw new NoViableAltException(LT(1), getFilename()); 1212 } 1213 } 1214 } 1215 match(CLOSE_CURLY); 1216 } 1217 1218 public final void protectedItem() throws RecognitionException, TokenStreamException { 1219 1220 1221 log.debug( "entered protectedItem()" ); 1222 1223 1224 switch ( LA(1)) { 1225 case ID_entry: 1226 { 1227 entry(); 1228 break; 1229 } 1230 case ID_allUserAttributeTypes: 1231 { 1232 allUserAttributeTypes(); 1233 break; 1234 } 1235 case ID_attributeType: 1236 { 1237 attributeType(); 1238 break; 1239 } 1240 case ID_allAttributeValues: 1241 { 1242 allAttributeValues(); 1243 break; 1244 } 1245 case ID_allUserAttributeTypesAndValues: 1246 { 1247 allUserAttributeTypesAndValues(); 1248 break; 1249 } 1250 case ATTRIBUTE_VALUE_CANDIDATE: 1251 { 1252 attributeValue(); 1253 break; 1254 } 1255 case ID_selfValue: 1256 { 1257 selfValue(); 1258 break; 1259 } 1260 case RANGE_OF_VALUES_CANDIDATE: 1261 { 1262 rangeOfValues(); 1263 break; 1264 } 1265 case ID_maxValueCount: 1266 { 1267 maxValueCount(); 1268 break; 1269 } 1270 case ID_maxImmSub: 1271 { 1272 maxImmSub(); 1273 break; 1274 } 1275 case ID_restrictedBy: 1276 { 1277 restrictedBy(); 1278 break; 1279 } 1280 case ID_classes: 1281 { 1282 classes(); 1283 break; 1284 } 1285 default: 1286 { 1287 throw new NoViableAltException(LT(1), getFilename()); 1288 } 1289 } 1290 } 1291 1292 public final void entry() throws RecognitionException, TokenStreamException { 1293 1294 1295 log.debug( "entered entry()" ); 1296 1297 1298 match(ID_entry); 1299 1300 protectedItemsMap.put( "entry", ProtectedItem.ENTRY ); 1301 1302 } 1303 1304 public final void allUserAttributeTypes() throws RecognitionException, TokenStreamException { 1305 1306 1307 log.debug( "entered allUserAttributeTypes()" ); 1308 1309 1310 match(ID_allUserAttributeTypes); 1311 1312 protectedItemsMap.put( "allUserAttributeTypes", ProtectedItem.ALL_USER_ATTRIBUTE_TYPES ); 1313 1314 } 1315 1316 public final void attributeType() throws RecognitionException, TokenStreamException { 1317 1318 1319 log.debug( "entered attributeType()" ); 1320 Set<AttributeType> attributeTypeSet = null; 1321 1322 1323 match(ID_attributeType); 1324 { 1325 int _cnt78=0; 1326 _loop78: 1327 do { 1328 if ((LA(1)==SP)) { 1329 match(SP); 1330 } 1331 else { 1332 if ( _cnt78>=1 ) { break _loop78; } else {throw new NoViableAltException(LT(1), getFilename());} 1333 } 1334 1335 _cnt78++; 1336 } while (true); 1337 } 1338 attributeTypeSet=attributeTypeSet(); 1339 1340 protectedItemsMap.put( "attributeType", new AttributeTypeItem(attributeTypeSet ) ); 1341 1342 } 1343 1344 public final void allAttributeValues() throws RecognitionException, TokenStreamException { 1345 1346 1347 log.debug( "entered allAttributeValues()" ); 1348 Set<AttributeType> attributeTypeSet = null; 1349 1350 1351 match(ID_allAttributeValues); 1352 { 1353 int _cnt81=0; 1354 _loop81: 1355 do { 1356 if ((LA(1)==SP)) { 1357 match(SP); 1358 } 1359 else { 1360 if ( _cnt81>=1 ) { break _loop81; } else {throw new NoViableAltException(LT(1), getFilename());} 1361 } 1362 1363 _cnt81++; 1364 } while (true); 1365 } 1366 attributeTypeSet=attributeTypeSet(); 1367 1368 protectedItemsMap.put( "allAttributeValues", new AllAttributeValuesItem( attributeTypeSet ) ); 1369 1370 } 1371 1372 public final void allUserAttributeTypesAndValues() throws RecognitionException, TokenStreamException { 1373 1374 1375 log.debug( "entered allUserAttributeTypesAndValues()" ); 1376 1377 1378 match(ID_allUserAttributeTypesAndValues); 1379 1380 protectedItemsMap.put( "allUserAttributeTypesAndValues", ProtectedItem.ALL_USER_ATTRIBUTE_TYPES_AND_VALUES ); 1381 1382 } 1383 1384 public final void attributeValue() throws RecognitionException, TokenStreamException { 1385 1386 Token token = null; 1387 1388 log.debug( "entered attributeValue()" ); 1389 String attributeTypeAndValue = null; 1390 String attributeType = null; 1391 String attributeValue = null; 1392 Set<Attribute> attributeSet = new HashSet<Attribute>(); 1393 1394 1395 try { // for error handling 1396 token = LT(1); 1397 match(ATTRIBUTE_VALUE_CANDIDATE); 1398 1399 // A Dn can be considered as a set of attributeTypeAndValues 1400 // So, parse the set as a Dn and extract each attributeTypeAndValue 1401 Dn attributeTypeAndValueSetAsDn = new Dn( token.getText() ); 1402 1403 if ( schemaManager != null ) 1404 { 1405 attributeTypeAndValueSetAsDn.apply( schemaManager ); 1406 } 1407 1408 for ( Rdn rdn : attributeTypeAndValueSetAsDn ) 1409 { 1410 attributeTypeAndValue = rdn.getNormName(); 1411 attributeType = DnUtils.getRdnAttributeType( attributeTypeAndValue ); 1412 attributeValue = DnUtils.getRdnValue( attributeTypeAndValue ); 1413 1414 attributeSet.add( new DefaultAttribute( attributeType, attributeValue ) ); 1415 log.debug( "An attributeTypeAndValue from the set: " + attributeType + "=" + attributeValue); 1416 } 1417 1418 protectedItemsMap.put( "attributeValue", new AttributeValueItem( attributeSet ) ); 1419 1420 } 1421 catch (Exception e) { 1422 1423 throw new RecognitionException( "dnParser failed for " + token.getText() + " , " + e.getMessage() ); 1424 1425 } 1426 } 1427 1428 public final void selfValue() throws RecognitionException, TokenStreamException { 1429 1430 1431 log.debug( "entered selfValue()" ); 1432 Set<AttributeType> attributeTypeSet = null; 1433 1434 1435 match(ID_selfValue); 1436 { 1437 int _cnt86=0; 1438 _loop86: 1439 do { 1440 if ((LA(1)==SP)) { 1441 match(SP); 1442 } 1443 else { 1444 if ( _cnt86>=1 ) { break _loop86; } else {throw new NoViableAltException(LT(1), getFilename());} 1445 } 1446 1447 _cnt86++; 1448 } while (true); 1449 } 1450 attributeTypeSet=attributeTypeSet(); 1451 1452 protectedItemsMap.put( "sefValue", new SelfValueItem( attributeTypeSet ) ); 1453 1454 } 1455 1456 public final void rangeOfValues() throws RecognitionException, TokenStreamException { 1457 1458 Token token = null; 1459 1460 log.debug( "entered rangeOfValues()" ); 1461 1462 1463 try { // for error handling 1464 token = LT(1); 1465 match(RANGE_OF_VALUES_CANDIDATE); 1466 1467 protectedItemsMap.put( "rangeOfValues", 1468 new RangeOfValuesItem( 1469 FilterParser.parse( token.getText() ) ) ); 1470 log.debug( "filterParser parsed " + token.getText() ); 1471 1472 } 1473 catch (Exception e) { 1474 1475 throw new RecognitionException( "filterParser failed. " + e.getMessage() ); 1476 1477 } 1478 } 1479 1480 public final void maxValueCount() throws RecognitionException, TokenStreamException { 1481 1482 1483 log.debug( "entered maxValueCount()" ); 1484 MaxValueCountElem maxValueCount = null; 1485 Set<MaxValueCountElem> maxValueCountSet = new HashSet<MaxValueCountElem>(); 1486 1487 1488 match(ID_maxValueCount); 1489 { 1490 int _cnt90=0; 1491 _loop90: 1492 do { 1493 if ((LA(1)==SP)) { 1494 match(SP); 1495 } 1496 else { 1497 if ( _cnt90>=1 ) { break _loop90; } else {throw new NoViableAltException(LT(1), getFilename());} 1498 } 1499 1500 _cnt90++; 1501 } while (true); 1502 } 1503 match(OPEN_CURLY); 1504 { 1505 _loop92: 1506 do { 1507 if ((LA(1)==SP)) { 1508 match(SP); 1509 } 1510 else { 1511 break _loop92; 1512 } 1513 1514 } while (true); 1515 } 1516 maxValueCount=aMaxValueCount(); 1517 { 1518 _loop94: 1519 do { 1520 if ((LA(1)==SP)) { 1521 match(SP); 1522 } 1523 else { 1524 break _loop94; 1525 } 1526 1527 } while (true); 1528 } 1529 1530 maxValueCountSet.add( maxValueCount ); 1531 1532 { 1533 _loop100: 1534 do { 1535 if ((LA(1)==SEP)) { 1536 match(SEP); 1537 { 1538 _loop97: 1539 do { 1540 if ((LA(1)==SP)) { 1541 match(SP); 1542 } 1543 else { 1544 break _loop97; 1545 } 1546 1547 } while (true); 1548 } 1549 maxValueCount=aMaxValueCount(); 1550 { 1551 _loop99: 1552 do { 1553 if ((LA(1)==SP)) { 1554 match(SP); 1555 } 1556 else { 1557 break _loop99; 1558 } 1559 1560 } while (true); 1561 } 1562 1563 maxValueCountSet.add( maxValueCount ); 1564 1565 } 1566 else { 1567 break _loop100; 1568 } 1569 1570 } while (true); 1571 } 1572 match(CLOSE_CURLY); 1573 1574 protectedItemsMap.put( "maxValueCount", new MaxValueCountItem( maxValueCountSet ) ); 1575 1576 } 1577 1578 public final void maxImmSub() throws RecognitionException, TokenStreamException { 1579 1580 Token token = null; 1581 1582 log.debug( "entered maxImmSub()" ); 1583 1584 1585 match(ID_maxImmSub); 1586 { 1587 int _cnt125=0; 1588 _loop125: 1589 do { 1590 if ((LA(1)==SP)) { 1591 match(SP); 1592 } 1593 else { 1594 if ( _cnt125>=1 ) { break _loop125; } else {throw new NoViableAltException(LT(1), getFilename());} 1595 } 1596 1597 _cnt125++; 1598 } while (true); 1599 } 1600 token = LT(1); 1601 match(INTEGER); 1602 1603 1604 protectedItemsMap.put( "maxImmSub", 1605 new MaxImmSubItem( 1606 token2Integer( token ) ) ); 1607 1608 } 1609 1610 public final void restrictedBy() throws RecognitionException, TokenStreamException { 1611 1612 1613 log.debug( "entered restrictedBy()" ); 1614 RestrictedByElem restrictedValue = null; 1615 Set<RestrictedByElem> restrictedBy = new HashSet<RestrictedByElem>(); 1616 1617 1618 match(ID_restrictedBy); 1619 { 1620 int _cnt128=0; 1621 _loop128: 1622 do { 1623 if ((LA(1)==SP)) { 1624 match(SP); 1625 } 1626 else { 1627 if ( _cnt128>=1 ) { break _loop128; } else {throw new NoViableAltException(LT(1), getFilename());} 1628 } 1629 1630 _cnt128++; 1631 } while (true); 1632 } 1633 match(OPEN_CURLY); 1634 { 1635 _loop130: 1636 do { 1637 if ((LA(1)==SP)) { 1638 match(SP); 1639 } 1640 else { 1641 break _loop130; 1642 } 1643 1644 } while (true); 1645 } 1646 restrictedValue=restrictedValue(); 1647 { 1648 _loop132: 1649 do { 1650 if ((LA(1)==SP)) { 1651 match(SP); 1652 } 1653 else { 1654 break _loop132; 1655 } 1656 1657 } while (true); 1658 } 1659 1660 restrictedBy.add( restrictedValue ); 1661 1662 { 1663 _loop138: 1664 do { 1665 if ((LA(1)==SEP)) { 1666 match(SEP); 1667 { 1668 _loop135: 1669 do { 1670 if ((LA(1)==SP)) { 1671 match(SP); 1672 } 1673 else { 1674 break _loop135; 1675 } 1676 1677 } while (true); 1678 } 1679 restrictedValue=restrictedValue(); 1680 { 1681 _loop137: 1682 do { 1683 if ((LA(1)==SP)) { 1684 match(SP); 1685 } 1686 else { 1687 break _loop137; 1688 } 1689 1690 } while (true); 1691 } 1692 1693 restrictedBy.add( restrictedValue ); 1694 1695 } 1696 else { 1697 break _loop138; 1698 } 1699 1700 } while (true); 1701 } 1702 match(CLOSE_CURLY); 1703 1704 protectedItemsMap.put( "restrictedBy", new RestrictedByItem( restrictedBy ) ); 1705 1706 } 1707 1708 public final void classes() throws RecognitionException, TokenStreamException { 1709 1710 1711 log.debug( "entered classes()" ); 1712 ExprNode classes = null; 1713 1714 1715 match(ID_classes); 1716 { 1717 int _cnt174=0; 1718 _loop174: 1719 do { 1720 if ((LA(1)==SP)) { 1721 match(SP); 1722 } 1723 else { 1724 if ( _cnt174>=1 ) { break _loop174; } else {throw new NoViableAltException(LT(1), getFilename());} 1725 } 1726 1727 _cnt174++; 1728 } while (true); 1729 } 1730 classes=refinement(); 1731 1732 protectedItemsMap.put( "classes", new ClassesItem( classes ) ); 1733 1734 } 1735 1736 public final Set<AttributeType> attributeTypeSet() throws RecognitionException, TokenStreamException { 1737 Set<AttributeType> attributeTypeSet ; 1738 1739 1740 log.debug( "entered attributeTypeSet()" ); 1741 String oid = null; 1742 attributeTypeSet = new HashSet<AttributeType>(); 1743 AttributeType attributeType = null; 1744 1745 1746 match(OPEN_CURLY); 1747 { 1748 _loop163: 1749 do { 1750 if ((LA(1)==SP)) { 1751 match(SP); 1752 } 1753 else { 1754 break _loop163; 1755 } 1756 1757 } while (true); 1758 } 1759 oid=oid(); 1760 { 1761 _loop165: 1762 do { 1763 if ((LA(1)==SP)) { 1764 match(SP); 1765 } 1766 else { 1767 break _loop165; 1768 } 1769 1770 } while (true); 1771 } 1772 1773 try 1774 { 1775 if ( schemaManager != null ) 1776 { 1777 attributeType = schemaManager.lookupAttributeTypeRegistry( oid ); 1778 } 1779 else 1780 { 1781 attributeType = new AttributeType( oid ); 1782 } 1783 1784 attributeTypeSet.add( attributeType ); 1785 } 1786 catch ( LdapException le ) 1787 { 1788 // The oid does not exist 1789 // TODO : deal with such an exception 1790 } 1791 1792 { 1793 _loop171: 1794 do { 1795 if ((LA(1)==SEP)) { 1796 match(SEP); 1797 { 1798 _loop168: 1799 do { 1800 if ((LA(1)==SP)) { 1801 match(SP); 1802 } 1803 else { 1804 break _loop168; 1805 } 1806 1807 } while (true); 1808 } 1809 oid=oid(); 1810 { 1811 _loop170: 1812 do { 1813 if ((LA(1)==SP)) { 1814 match(SP); 1815 } 1816 else { 1817 break _loop170; 1818 } 1819 1820 } while (true); 1821 } 1822 1823 try 1824 { 1825 if ( schemaManager != null ) 1826 { 1827 attributeType = schemaManager.lookupAttributeTypeRegistry( oid ); 1828 } 1829 else 1830 { 1831 attributeType = new AttributeType( oid ); 1832 } 1833 1834 attributeTypeSet.add( attributeType ); 1835 } 1836 catch ( LdapException le ) 1837 { 1838 // The oid does not exist 1839 // TODO : deal with such an exception 1840 } 1841 1842 } 1843 else { 1844 break _loop171; 1845 } 1846 1847 } while (true); 1848 } 1849 match(CLOSE_CURLY); 1850 return attributeTypeSet ; 1851 } 1852 1853 public final MaxValueCountElem aMaxValueCount() throws RecognitionException, TokenStreamException { 1854 MaxValueCountElem maxValueCount ; 1855 1856 Token token1 = null; 1857 Token token2 = null; 1858 1859 log.debug( "entered aMaxValueCount()" ); 1860 maxValueCount = null; 1861 String oid = null; 1862 Token token = null; 1863 AttributeType attributeType = null; 1864 1865 1866 match(OPEN_CURLY); 1867 { 1868 _loop103: 1869 do { 1870 if ((LA(1)==SP)) { 1871 match(SP); 1872 } 1873 else { 1874 break _loop103; 1875 } 1876 1877 } while (true); 1878 } 1879 { 1880 switch ( LA(1)) { 1881 case ID_type: 1882 { 1883 match(ID_type); 1884 { 1885 int _cnt106=0; 1886 _loop106: 1887 do { 1888 if ((LA(1)==SP)) { 1889 match(SP); 1890 } 1891 else { 1892 if ( _cnt106>=1 ) { break _loop106; } else {throw new NoViableAltException(LT(1), getFilename());} 1893 } 1894 1895 _cnt106++; 1896 } while (true); 1897 } 1898 oid=oid(); 1899 { 1900 _loop108: 1901 do { 1902 if ((LA(1)==SP)) { 1903 match(SP); 1904 } 1905 else { 1906 break _loop108; 1907 } 1908 1909 } while (true); 1910 } 1911 match(SEP); 1912 { 1913 _loop110: 1914 do { 1915 if ((LA(1)==SP)) { 1916 match(SP); 1917 } 1918 else { 1919 break _loop110; 1920 } 1921 1922 } while (true); 1923 } 1924 match(ID_maxCount); 1925 { 1926 int _cnt112=0; 1927 _loop112: 1928 do { 1929 if ((LA(1)==SP)) { 1930 match(SP); 1931 } 1932 else { 1933 if ( _cnt112>=1 ) { break _loop112; } else {throw new NoViableAltException(LT(1), getFilename());} 1934 } 1935 1936 _cnt112++; 1937 } while (true); 1938 } 1939 token1 = LT(1); 1940 match(INTEGER); 1941 token = token1; 1942 break; 1943 } 1944 case ID_maxCount: 1945 { 1946 match(ID_maxCount); 1947 { 1948 int _cnt114=0; 1949 _loop114: 1950 do { 1951 if ((LA(1)==SP)) { 1952 match(SP); 1953 } 1954 else { 1955 if ( _cnt114>=1 ) { break _loop114; } else {throw new NoViableAltException(LT(1), getFilename());} 1956 } 1957 1958 _cnt114++; 1959 } while (true); 1960 } 1961 token2 = LT(1); 1962 match(INTEGER); 1963 { 1964 _loop116: 1965 do { 1966 if ((LA(1)==SP)) { 1967 match(SP); 1968 } 1969 else { 1970 break _loop116; 1971 } 1972 1973 } while (true); 1974 } 1975 match(SEP); 1976 { 1977 _loop118: 1978 do { 1979 if ((LA(1)==SP)) { 1980 match(SP); 1981 } 1982 else { 1983 break _loop118; 1984 } 1985 1986 } while (true); 1987 } 1988 match(ID_type); 1989 { 1990 int _cnt120=0; 1991 _loop120: 1992 do { 1993 if ((LA(1)==SP)) { 1994 match(SP); 1995 } 1996 else { 1997 if ( _cnt120>=1 ) { break _loop120; } else {throw new NoViableAltException(LT(1), getFilename());} 1998 } 1999 2000 _cnt120++; 2001 } while (true); 2002 } 2003 oid=oid(); 2004 token = token2; 2005 break; 2006 } 2007 default: 2008 { 2009 throw new NoViableAltException(LT(1), getFilename()); 2010 } 2011 } 2012 } 2013 { 2014 _loop122: 2015 do { 2016 if ((LA(1)==SP)) { 2017 match(SP); 2018 } 2019 else { 2020 break _loop122; 2021 } 2022 2023 } while (true); 2024 } 2025 match(CLOSE_CURLY); 2026 2027 try 2028 { 2029 if ( schemaManager != null ) 2030 { 2031 attributeType = schemaManager.lookupAttributeTypeRegistry( oid ); 2032 } 2033 else 2034 { 2035 attributeType = new AttributeType( oid ); 2036 } 2037 2038 maxValueCount = new MaxValueCountElem( attributeType, token2Integer( token ) ); 2039 } 2040 catch ( LdapException le ) 2041 { 2042 // The oid does not exist 2043 // TODO : deal with such an exception 2044 } 2045 2046 return maxValueCount ; 2047 } 2048 2049 public final String oid() throws RecognitionException, TokenStreamException { 2050 String result ; 2051 2052 2053 log.debug( "entered oid()" ); 2054 result = null; 2055 Token token = null; 2056 2057 2058 token = LT( 1 ); 2059 { 2060 switch ( LA(1)) { 2061 case DESCR: 2062 { 2063 match(DESCR); 2064 break; 2065 } 2066 case NUMERICOID: 2067 { 2068 match(NUMERICOID); 2069 break; 2070 } 2071 default: 2072 { 2073 throw new NoViableAltException(LT(1), getFilename()); 2074 } 2075 } 2076 } 2077 2078 result = token.getText(); 2079 log.debug( "recognized an oid: " + result ); 2080 2081 return result ; 2082 } 2083 2084 public final RestrictedByElem restrictedValue() throws RecognitionException, TokenStreamException { 2085 RestrictedByElem restrictedValue ; 2086 2087 2088 log.debug( "entered restrictedValue()" ); 2089 String typeOid = null; 2090 String valuesInOid = null; 2091 restrictedValue = null; 2092 AttributeType attributeType = null; 2093 AttributeType valueInAttributeType = null; 2094 2095 2096 match(OPEN_CURLY); 2097 { 2098 _loop141: 2099 do { 2100 if ((LA(1)==SP)) { 2101 match(SP); 2102 } 2103 else { 2104 break _loop141; 2105 } 2106 2107 } while (true); 2108 } 2109 { 2110 switch ( LA(1)) { 2111 case ID_type: 2112 { 2113 match(ID_type); 2114 { 2115 int _cnt144=0; 2116 _loop144: 2117 do { 2118 if ((LA(1)==SP)) { 2119 match(SP); 2120 } 2121 else { 2122 if ( _cnt144>=1 ) { break _loop144; } else {throw new NoViableAltException(LT(1), getFilename());} 2123 } 2124 2125 _cnt144++; 2126 } while (true); 2127 } 2128 typeOid=oid(); 2129 { 2130 _loop146: 2131 do { 2132 if ((LA(1)==SP)) { 2133 match(SP); 2134 } 2135 else { 2136 break _loop146; 2137 } 2138 2139 } while (true); 2140 } 2141 match(SEP); 2142 { 2143 _loop148: 2144 do { 2145 if ((LA(1)==SP)) { 2146 match(SP); 2147 } 2148 else { 2149 break _loop148; 2150 } 2151 2152 } while (true); 2153 } 2154 match(ID_valuesIn); 2155 { 2156 int _cnt150=0; 2157 _loop150: 2158 do { 2159 if ((LA(1)==SP)) { 2160 match(SP); 2161 } 2162 else { 2163 if ( _cnt150>=1 ) { break _loop150; } else {throw new NoViableAltException(LT(1), getFilename());} 2164 } 2165 2166 _cnt150++; 2167 } while (true); 2168 } 2169 valuesInOid=oid(); 2170 break; 2171 } 2172 case ID_valuesIn: 2173 { 2174 match(ID_valuesIn); 2175 { 2176 int _cnt152=0; 2177 _loop152: 2178 do { 2179 if ((LA(1)==SP)) { 2180 match(SP); 2181 } 2182 else { 2183 if ( _cnt152>=1 ) { break _loop152; } else {throw new NoViableAltException(LT(1), getFilename());} 2184 } 2185 2186 _cnt152++; 2187 } while (true); 2188 } 2189 valuesInOid=oid(); 2190 { 2191 _loop154: 2192 do { 2193 if ((LA(1)==SP)) { 2194 match(SP); 2195 } 2196 else { 2197 break _loop154; 2198 } 2199 2200 } while (true); 2201 } 2202 match(SEP); 2203 { 2204 _loop156: 2205 do { 2206 if ((LA(1)==SP)) { 2207 match(SP); 2208 } 2209 else { 2210 break _loop156; 2211 } 2212 2213 } while (true); 2214 } 2215 match(ID_type); 2216 { 2217 int _cnt158=0; 2218 _loop158: 2219 do { 2220 if ((LA(1)==SP)) { 2221 match(SP); 2222 } 2223 else { 2224 if ( _cnt158>=1 ) { break _loop158; } else {throw new NoViableAltException(LT(1), getFilename());} 2225 } 2226 2227 _cnt158++; 2228 } while (true); 2229 } 2230 typeOid=oid(); 2231 break; 2232 } 2233 default: 2234 { 2235 throw new NoViableAltException(LT(1), getFilename()); 2236 } 2237 } 2238 } 2239 { 2240 _loop160: 2241 do { 2242 if ((LA(1)==SP)) { 2243 match(SP); 2244 } 2245 else { 2246 break _loop160; 2247 } 2248 2249 } while (true); 2250 } 2251 match(CLOSE_CURLY); 2252 2253 try 2254 { 2255 if ( schemaManager != null ) 2256 { 2257 attributeType = schemaManager.lookupAttributeTypeRegistry( typeOid ); 2258 valueInAttributeType = schemaManager.lookupAttributeTypeRegistry( valuesInOid ); 2259 } 2260 else 2261 { 2262 attributeType = new AttributeType( typeOid ); 2263 valueInAttributeType = new AttributeType( valuesInOid ); 2264 } 2265 2266 restrictedValue = new RestrictedByElem( attributeType, valueInAttributeType ); 2267 } 2268 catch ( LdapException le ) 2269 { 2270 // The oid does not exist 2271 // TODO : deal with such an exception 2272 } 2273 2274 return restrictedValue ; 2275 } 2276 2277 public final ExprNode refinement() throws RecognitionException, TokenStreamException { 2278 ExprNode node ; 2279 2280 2281 log.debug( "entered refinement()" ); 2282 node = null; 2283 2284 2285 switch ( LA(1)) { 2286 case ID_item: 2287 { 2288 node=item(); 2289 break; 2290 } 2291 case ID_and: 2292 { 2293 node=and(); 2294 break; 2295 } 2296 case ID_or: 2297 { 2298 node=or(); 2299 break; 2300 } 2301 case ID_not: 2302 { 2303 node=not(); 2304 break; 2305 } 2306 default: 2307 { 2308 throw new NoViableAltException(LT(1), getFilename()); 2309 } 2310 } 2311 return node ; 2312 } 2313 2314 public final ItemPermission itemPermission() throws RecognitionException, TokenStreamException { 2315 ItemPermission itemPermission ; 2316 2317 2318 log.debug( "entered itemPermission()" ); 2319 itemPermission = null; 2320 itemPermissionComponentsMonitor = new MandatoryAndOptionalComponentsMonitor( 2321 new String [] { "userClasses", "grantsAndDenials" }, new String [] { "precedence" } ); 2322 2323 2324 match(OPEN_CURLY); 2325 { 2326 _loop191: 2327 do { 2328 if ((LA(1)==SP)) { 2329 match(SP); 2330 } 2331 else { 2332 break _loop191; 2333 } 2334 2335 } while (true); 2336 } 2337 anyItemPermission(); 2338 { 2339 _loop193: 2340 do { 2341 if ((LA(1)==SP)) { 2342 match(SP); 2343 } 2344 else { 2345 break _loop193; 2346 } 2347 2348 } while (true); 2349 } 2350 { 2351 _loop199: 2352 do { 2353 if ((LA(1)==SEP)) { 2354 match(SEP); 2355 { 2356 _loop196: 2357 do { 2358 if ((LA(1)==SP)) { 2359 match(SP); 2360 } 2361 else { 2362 break _loop196; 2363 } 2364 2365 } while (true); 2366 } 2367 anyItemPermission(); 2368 { 2369 _loop198: 2370 do { 2371 if ((LA(1)==SP)) { 2372 match(SP); 2373 } 2374 else { 2375 break _loop198; 2376 } 2377 2378 } while (true); 2379 } 2380 } 2381 else { 2382 break _loop199; 2383 } 2384 2385 } while (true); 2386 } 2387 match(CLOSE_CURLY); 2388 2389 if ( !itemPermissionComponentsMonitor.finalStateValid() ) 2390 { 2391 throw new RecognitionException( "Missing mandatory itemPermission components: " 2392 + itemPermissionComponentsMonitor.getRemainingComponents() ); 2393 } 2394 2395 itemPermission = new ItemPermission( precedence, grantsAndDenials, userClasses ); 2396 precedence = null; 2397 2398 return itemPermission ; 2399 } 2400 2401 public final void anyItemPermission() throws RecognitionException, TokenStreamException { 2402 2403 2404 try { // for error handling 2405 switch ( LA(1)) { 2406 case ID_precedence: 2407 { 2408 precedence(); 2409 2410 itemPermissionComponentsMonitor.useComponent( "precedence" ); 2411 2412 break; 2413 } 2414 case ID_userClasses: 2415 { 2416 userClasses(); 2417 2418 itemPermissionComponentsMonitor.useComponent( "userClasses" ); 2419 2420 break; 2421 } 2422 case ID_grantsAndDenials: 2423 { 2424 grantsAndDenials(); 2425 2426 itemPermissionComponentsMonitor.useComponent( "grantsAndDenials" ); 2427 2428 break; 2429 } 2430 default: 2431 { 2432 throw new NoViableAltException(LT(1), getFilename()); 2433 } 2434 } 2435 } 2436 catch (IllegalArgumentException e) { 2437 2438 throw new RecognitionException( e.getMessage() ); 2439 2440 } 2441 } 2442 2443 public final void grantsAndDenials() throws RecognitionException, TokenStreamException { 2444 2445 2446 log.debug( "entered grantsAndDenials()" ); 2447 grantsAndDenials = new HashSet<GrantAndDenial>(); 2448 GrantAndDenial grantAndDenial = null; 2449 2450 2451 match(ID_grantsAndDenials); 2452 { 2453 int _cnt203=0; 2454 _loop203: 2455 do { 2456 if ((LA(1)==SP)) { 2457 match(SP); 2458 } 2459 else { 2460 if ( _cnt203>=1 ) { break _loop203; } else {throw new NoViableAltException(LT(1), getFilename());} 2461 } 2462 2463 _cnt203++; 2464 } while (true); 2465 } 2466 match(OPEN_CURLY); 2467 { 2468 _loop205: 2469 do { 2470 if ((LA(1)==SP)) { 2471 match(SP); 2472 } 2473 else { 2474 break _loop205; 2475 } 2476 2477 } while (true); 2478 } 2479 { 2480 switch ( LA(1)) { 2481 case ID_grantAdd: 2482 case ID_denyAdd: 2483 case ID_grantDiscloseOnError: 2484 case ID_denyDiscloseOnError: 2485 case ID_grantRead: 2486 case ID_denyRead: 2487 case ID_grantRemove: 2488 case ID_denyRemove: 2489 case ID_grantBrowse: 2490 case ID_denyBrowse: 2491 case ID_grantExport: 2492 case ID_denyExport: 2493 case ID_grantImport: 2494 case ID_denyImport: 2495 case ID_grantModify: 2496 case ID_denyModify: 2497 case ID_grantRename: 2498 case ID_denyRename: 2499 case ID_grantReturnDN: 2500 case ID_denyReturnDN: 2501 case ID_grantCompare: 2502 case ID_denyCompare: 2503 case ID_grantFilterMatch: 2504 case ID_denyFilterMatch: 2505 case ID_grantInvoke: 2506 case ID_denyInvoke: 2507 { 2508 grantAndDenial=grantAndDenial(); 2509 { 2510 _loop208: 2511 do { 2512 if ((LA(1)==SP)) { 2513 match(SP); 2514 } 2515 else { 2516 break _loop208; 2517 } 2518 2519 } while (true); 2520 } 2521 2522 if ( !grantsAndDenials.add( grantAndDenial )) 2523 { 2524 throw new RecognitionException( "Duplicated GrantAndDenial bit: " + grantAndDenial ); 2525 } 2526 2527 { 2528 _loop214: 2529 do { 2530 if ((LA(1)==SEP)) { 2531 match(SEP); 2532 { 2533 _loop211: 2534 do { 2535 if ((LA(1)==SP)) { 2536 match(SP); 2537 } 2538 else { 2539 break _loop211; 2540 } 2541 2542 } while (true); 2543 } 2544 grantAndDenial=grantAndDenial(); 2545 { 2546 _loop213: 2547 do { 2548 if ((LA(1)==SP)) { 2549 match(SP); 2550 } 2551 else { 2552 break _loop213; 2553 } 2554 2555 } while (true); 2556 } 2557 2558 if ( !grantsAndDenials.add( grantAndDenial )) 2559 { 2560 throw new RecognitionException( "Duplicated GrantAndDenial bit: " + grantAndDenial ); 2561 } 2562 2563 } 2564 else { 2565 break _loop214; 2566 } 2567 2568 } while (true); 2569 } 2570 break; 2571 } 2572 case CLOSE_CURLY: 2573 { 2574 break; 2575 } 2576 default: 2577 { 2578 throw new NoViableAltException(LT(1), getFilename()); 2579 } 2580 } 2581 } 2582 match(CLOSE_CURLY); 2583 } 2584 2585 public final GrantAndDenial grantAndDenial() throws RecognitionException, TokenStreamException { 2586 GrantAndDenial l_grantAndDenial ; 2587 2588 2589 log.debug( "entered grantAndDenialsBit()" ); 2590 l_grantAndDenial = null; 2591 2592 2593 switch ( LA(1)) { 2594 case ID_grantAdd: 2595 { 2596 match(ID_grantAdd); 2597 l_grantAndDenial = GrantAndDenial.GRANT_ADD; 2598 break; 2599 } 2600 case ID_denyAdd: 2601 { 2602 match(ID_denyAdd); 2603 l_grantAndDenial = GrantAndDenial.DENY_ADD; 2604 break; 2605 } 2606 case ID_grantDiscloseOnError: 2607 { 2608 match(ID_grantDiscloseOnError); 2609 l_grantAndDenial = GrantAndDenial.GRANT_DISCLOSE_ON_ERROR; 2610 break; 2611 } 2612 case ID_denyDiscloseOnError: 2613 { 2614 match(ID_denyDiscloseOnError); 2615 l_grantAndDenial = GrantAndDenial.DENY_DISCLOSE_ON_ERROR; 2616 break; 2617 } 2618 case ID_grantRead: 2619 { 2620 match(ID_grantRead); 2621 l_grantAndDenial = GrantAndDenial.GRANT_READ; 2622 break; 2623 } 2624 case ID_denyRead: 2625 { 2626 match(ID_denyRead); 2627 l_grantAndDenial = GrantAndDenial.DENY_READ; 2628 break; 2629 } 2630 case ID_grantRemove: 2631 { 2632 match(ID_grantRemove); 2633 l_grantAndDenial = GrantAndDenial.GRANT_REMOVE; 2634 break; 2635 } 2636 case ID_denyRemove: 2637 { 2638 match(ID_denyRemove); 2639 l_grantAndDenial = GrantAndDenial.DENY_REMOVE; 2640 break; 2641 } 2642 case ID_grantBrowse: 2643 { 2644 match(ID_grantBrowse); 2645 l_grantAndDenial = GrantAndDenial.GRANT_BROWSE; 2646 break; 2647 } 2648 case ID_denyBrowse: 2649 { 2650 match(ID_denyBrowse); 2651 l_grantAndDenial = GrantAndDenial.DENY_BROWSE; 2652 break; 2653 } 2654 case ID_grantExport: 2655 { 2656 match(ID_grantExport); 2657 l_grantAndDenial = GrantAndDenial.GRANT_EXPORT; 2658 break; 2659 } 2660 case ID_denyExport: 2661 { 2662 match(ID_denyExport); 2663 l_grantAndDenial = GrantAndDenial.DENY_EXPORT; 2664 break; 2665 } 2666 case ID_grantImport: 2667 { 2668 match(ID_grantImport); 2669 l_grantAndDenial = GrantAndDenial.GRANT_IMPORT; 2670 break; 2671 } 2672 case ID_denyImport: 2673 { 2674 match(ID_denyImport); 2675 l_grantAndDenial = GrantAndDenial.DENY_IMPORT; 2676 break; 2677 } 2678 case ID_grantModify: 2679 { 2680 match(ID_grantModify); 2681 l_grantAndDenial = GrantAndDenial.GRANT_MODIFY; 2682 break; 2683 } 2684 case ID_denyModify: 2685 { 2686 match(ID_denyModify); 2687 l_grantAndDenial = GrantAndDenial.DENY_MODIFY; 2688 break; 2689 } 2690 case ID_grantRename: 2691 { 2692 match(ID_grantRename); 2693 l_grantAndDenial = GrantAndDenial.GRANT_RENAME; 2694 break; 2695 } 2696 case ID_denyRename: 2697 { 2698 match(ID_denyRename); 2699 l_grantAndDenial = GrantAndDenial.DENY_RENAME; 2700 break; 2701 } 2702 case ID_grantReturnDN: 2703 { 2704 match(ID_grantReturnDN); 2705 l_grantAndDenial = GrantAndDenial.GRANT_RETURN_DN; 2706 break; 2707 } 2708 case ID_denyReturnDN: 2709 { 2710 match(ID_denyReturnDN); 2711 l_grantAndDenial = GrantAndDenial.DENY_RETURN_DN; 2712 break; 2713 } 2714 case ID_grantCompare: 2715 { 2716 match(ID_grantCompare); 2717 l_grantAndDenial = GrantAndDenial.GRANT_COMPARE; 2718 break; 2719 } 2720 case ID_denyCompare: 2721 { 2722 match(ID_denyCompare); 2723 l_grantAndDenial = GrantAndDenial.DENY_COMPARE; 2724 break; 2725 } 2726 case ID_grantFilterMatch: 2727 { 2728 match(ID_grantFilterMatch); 2729 l_grantAndDenial = GrantAndDenial.GRANT_FILTER_MATCH; 2730 break; 2731 } 2732 case ID_denyFilterMatch: 2733 { 2734 match(ID_denyFilterMatch); 2735 l_grantAndDenial = GrantAndDenial.DENY_FILTER_MATCH; 2736 break; 2737 } 2738 case ID_grantInvoke: 2739 { 2740 match(ID_grantInvoke); 2741 l_grantAndDenial = GrantAndDenial.GRANT_INVOKE; 2742 break; 2743 } 2744 case ID_denyInvoke: 2745 { 2746 match(ID_denyInvoke); 2747 l_grantAndDenial = GrantAndDenial.DENY_INVOKE; 2748 break; 2749 } 2750 default: 2751 { 2752 throw new NoViableAltException(LT(1), getFilename()); 2753 } 2754 } 2755 return l_grantAndDenial ; 2756 } 2757 2758 public final void userClass() throws RecognitionException, TokenStreamException { 2759 2760 2761 log.debug( "entered userClasses()" ); 2762 2763 2764 switch ( LA(1)) { 2765 case ID_allUsers: 2766 { 2767 allUsers(); 2768 break; 2769 } 2770 case ID_thisEntry: 2771 { 2772 thisEntry(); 2773 break; 2774 } 2775 case ID_parentOfEntry: 2776 { 2777 parentOfEntry(); 2778 break; 2779 } 2780 case ID_name: 2781 { 2782 name(); 2783 break; 2784 } 2785 case ID_userGroup: 2786 { 2787 userGroup(); 2788 break; 2789 } 2790 case ID_subtree: 2791 { 2792 subtree(); 2793 break; 2794 } 2795 default: 2796 { 2797 throw new NoViableAltException(LT(1), getFilename()); 2798 } 2799 } 2800 } 2801 2802 public final void allUsers() throws RecognitionException, TokenStreamException { 2803 2804 2805 log.debug( "entered allUsers()" ); 2806 2807 2808 match(ID_allUsers); 2809 2810 userClassesMap.put( "allUsers", UserClass.ALL_USERS ); 2811 2812 } 2813 2814 public final void thisEntry() throws RecognitionException, TokenStreamException { 2815 2816 2817 log.debug( "entered thisEntry()" ); 2818 2819 2820 match(ID_thisEntry); 2821 2822 userClassesMap.put( "thisEntry", UserClass.THIS_ENTRY ); 2823 2824 } 2825 2826 public final void parentOfEntry() throws RecognitionException, TokenStreamException { 2827 2828 2829 log.debug( "entered parentOfEntry()" ); 2830 2831 2832 match(ID_parentOfEntry); 2833 2834 userClassesMap.put( "parentOfEntry", UserClass.PARENT_OF_ENTRY ); 2835 2836 } 2837 2838 public final void name() throws RecognitionException, TokenStreamException { 2839 2840 2841 log.debug( "entered name()" ); 2842 Set<Dn> names = new HashSet<Dn>(); 2843 Dn distinguishedName = null; 2844 2845 2846 match(ID_name); 2847 { 2848 int _cnt236=0; 2849 _loop236: 2850 do { 2851 if ((LA(1)==SP)) { 2852 match(SP); 2853 } 2854 else { 2855 if ( _cnt236>=1 ) { break _loop236; } else {throw new NoViableAltException(LT(1), getFilename());} 2856 } 2857 2858 _cnt236++; 2859 } while (true); 2860 } 2861 match(OPEN_CURLY); 2862 { 2863 _loop238: 2864 do { 2865 if ((LA(1)==SP)) { 2866 match(SP); 2867 } 2868 else { 2869 break _loop238; 2870 } 2871 2872 } while (true); 2873 } 2874 distinguishedName=distinguishedName(); 2875 { 2876 _loop240: 2877 do { 2878 if ((LA(1)==SP)) { 2879 match(SP); 2880 } 2881 else { 2882 break _loop240; 2883 } 2884 2885 } while (true); 2886 } 2887 2888 names.add( distinguishedName ); 2889 2890 { 2891 _loop246: 2892 do { 2893 if ((LA(1)==SEP)) { 2894 match(SEP); 2895 { 2896 _loop243: 2897 do { 2898 if ((LA(1)==SP)) { 2899 match(SP); 2900 } 2901 else { 2902 break _loop243; 2903 } 2904 2905 } while (true); 2906 } 2907 distinguishedName=distinguishedName(); 2908 { 2909 _loop245: 2910 do { 2911 if ((LA(1)==SP)) { 2912 match(SP); 2913 } 2914 else { 2915 break _loop245; 2916 } 2917 2918 } while (true); 2919 } 2920 2921 names.add( distinguishedName ); 2922 2923 } 2924 else { 2925 break _loop246; 2926 } 2927 2928 } while (true); 2929 } 2930 match(CLOSE_CURLY); 2931 2932 userClassesMap.put( "name", new UserClass.Name( names ) ); 2933 2934 } 2935 2936 public final void userGroup() throws RecognitionException, TokenStreamException { 2937 2938 2939 log.debug( "entered userGroup()" ); 2940 Set<Dn> userGroup = new HashSet<Dn>(); 2941 Dn distinguishedName = null; 2942 2943 2944 match(ID_userGroup); 2945 { 2946 int _cnt249=0; 2947 _loop249: 2948 do { 2949 if ((LA(1)==SP)) { 2950 match(SP); 2951 } 2952 else { 2953 if ( _cnt249>=1 ) { break _loop249; } else {throw new NoViableAltException(LT(1), getFilename());} 2954 } 2955 2956 _cnt249++; 2957 } while (true); 2958 } 2959 match(OPEN_CURLY); 2960 { 2961 _loop251: 2962 do { 2963 if ((LA(1)==SP)) { 2964 match(SP); 2965 } 2966 else { 2967 break _loop251; 2968 } 2969 2970 } while (true); 2971 } 2972 distinguishedName=distinguishedName(); 2973 { 2974 _loop253: 2975 do { 2976 if ((LA(1)==SP)) { 2977 match(SP); 2978 } 2979 else { 2980 break _loop253; 2981 } 2982 2983 } while (true); 2984 } 2985 2986 userGroup.add( distinguishedName ); 2987 2988 { 2989 _loop259: 2990 do { 2991 if ((LA(1)==SEP)) { 2992 match(SEP); 2993 { 2994 _loop256: 2995 do { 2996 if ((LA(1)==SP)) { 2997 match(SP); 2998 } 2999 else { 3000 break _loop256; 3001 } 3002 3003 } while (true); 3004 } 3005 distinguishedName=distinguishedName(); 3006 { 3007 _loop258: 3008 do { 3009 if ((LA(1)==SP)) { 3010 match(SP); 3011 } 3012 else { 3013 break _loop258; 3014 } 3015 3016 } while (true); 3017 } 3018 3019 userGroup.add( distinguishedName ); 3020 3021 } 3022 else { 3023 break _loop259; 3024 } 3025 3026 } while (true); 3027 } 3028 match(CLOSE_CURLY); 3029 3030 userClassesMap.put( "userGroup", new UserClass.UserGroup( userGroup ) ); 3031 3032 } 3033 3034 public final void subtree() throws RecognitionException, TokenStreamException { 3035 3036 3037 log.debug( "entered subtree()" ); 3038 Set<SubtreeSpecification> subtrees = new HashSet<SubtreeSpecification>(); 3039 SubtreeSpecification subtreeSpecification = null; 3040 3041 3042 match(ID_subtree); 3043 { 3044 int _cnt262=0; 3045 _loop262: 3046 do { 3047 if ((LA(1)==SP)) { 3048 match(SP); 3049 } 3050 else { 3051 if ( _cnt262>=1 ) { break _loop262; } else {throw new NoViableAltException(LT(1), getFilename());} 3052 } 3053 3054 _cnt262++; 3055 } while (true); 3056 } 3057 match(OPEN_CURLY); 3058 { 3059 _loop264: 3060 do { 3061 if ((LA(1)==SP)) { 3062 match(SP); 3063 } 3064 else { 3065 break _loop264; 3066 } 3067 3068 } while (true); 3069 } 3070 subtreeSpecification=subtreeSpecification(); 3071 { 3072 _loop266: 3073 do { 3074 if ((LA(1)==SP)) { 3075 match(SP); 3076 } 3077 else { 3078 break _loop266; 3079 } 3080 3081 } while (true); 3082 } 3083 3084 subtrees.add( subtreeSpecification ); 3085 3086 { 3087 _loop272: 3088 do { 3089 if ((LA(1)==SEP)) { 3090 match(SEP); 3091 { 3092 _loop269: 3093 do { 3094 if ((LA(1)==SP)) { 3095 match(SP); 3096 } 3097 else { 3098 break _loop269; 3099 } 3100 3101 } while (true); 3102 } 3103 subtreeSpecification=subtreeSpecification(); 3104 { 3105 _loop271: 3106 do { 3107 if ((LA(1)==SP)) { 3108 match(SP); 3109 } 3110 else { 3111 break _loop271; 3112 } 3113 3114 } while (true); 3115 } 3116 3117 subtrees.add( subtreeSpecification ); 3118 3119 } 3120 else { 3121 break _loop272; 3122 } 3123 3124 } while (true); 3125 } 3126 match(CLOSE_CURLY); 3127 3128 userClassesMap.put( "subtree", new UserClass.Subtree( subtrees ) ); 3129 3130 } 3131 3132 public final Dn distinguishedName() throws RecognitionException, TokenStreamException { 3133 Dn name ; 3134 3135 Token token = null; 3136 3137 log.debug( "entered distinguishedName()" ); 3138 name = null; 3139 3140 3141 try { // for error handling 3142 token = LT(1); 3143 match(SAFEUTF8STRING); 3144 3145 name = new Dn( token.getText() ); 3146 if ( schemaManager != null ) 3147 { 3148 name.apply( schemaManager ); 3149 } 3150 log.debug( "recognized a DistinguishedName: " + token.getText() ); 3151 3152 } 3153 catch (Exception e) { 3154 3155 throw new RecognitionException( "dnParser failed for " + token.getText() + " " + e.getMessage() ); 3156 3157 } 3158 return name ; 3159 } 3160 3161 public final SubtreeSpecification subtreeSpecification() throws RecognitionException, TokenStreamException { 3162 SubtreeSpecification ss; 3163 3164 3165 log.debug( "entered subtreeSpecification()" ); 3166 // clear out ss, ssModifier, chopBeforeExclusions and chopAfterExclusions 3167 // in case something is left from the last parse 3168 ss = null; 3169 ssModifier = new SubtreeSpecificationModifier(); 3170 chopBeforeExclusions = new HashSet<Dn>(); 3171 chopAfterExclusions = new HashSet<Dn>(); 3172 subtreeSpecificationComponentsMonitor = new OptionalComponentsMonitor( 3173 new String [] { "base", "specificExclusions", "minimum", "maximum" } ); 3174 3175 3176 match(OPEN_CURLY); 3177 { 3178 _loop301: 3179 do { 3180 if ((LA(1)==SP)) { 3181 match(SP); 3182 } 3183 else { 3184 break _loop301; 3185 } 3186 3187 } while (true); 3188 } 3189 { 3190 switch ( LA(1)) { 3191 case ID_base: 3192 case ID_specificExclusions: 3193 case ID_minimum: 3194 case ID_maximum: 3195 { 3196 subtreeSpecificationComponent(); 3197 { 3198 _loop304: 3199 do { 3200 if ((LA(1)==SP)) { 3201 match(SP); 3202 } 3203 else { 3204 break _loop304; 3205 } 3206 3207 } while (true); 3208 } 3209 { 3210 _loop310: 3211 do { 3212 if ((LA(1)==SEP)) { 3213 match(SEP); 3214 { 3215 _loop307: 3216 do { 3217 if ((LA(1)==SP)) { 3218 match(SP); 3219 } 3220 else { 3221 break _loop307; 3222 } 3223 3224 } while (true); 3225 } 3226 subtreeSpecificationComponent(); 3227 { 3228 _loop309: 3229 do { 3230 if ((LA(1)==SP)) { 3231 match(SP); 3232 } 3233 else { 3234 break _loop309; 3235 } 3236 3237 } while (true); 3238 } 3239 } 3240 else { 3241 break _loop310; 3242 } 3243 3244 } while (true); 3245 } 3246 break; 3247 } 3248 case CLOSE_CURLY: 3249 { 3250 break; 3251 } 3252 default: 3253 { 3254 throw new NoViableAltException(LT(1), getFilename()); 3255 } 3256 } 3257 } 3258 match(CLOSE_CURLY); 3259 3260 ss = ssModifier.getSubtreeSpecification(); 3261 3262 return ss; 3263 } 3264 3265 public final UserPermission userPermission() throws RecognitionException, TokenStreamException { 3266 UserPermission userPermission ; 3267 3268 3269 log.debug( "entered userPermission()" ); 3270 userPermission = null; 3271 userPermissionComponentsMonitor = new MandatoryAndOptionalComponentsMonitor( 3272 new String [] { "protectedItems", "grantsAndDenials" }, new String [] { "precedence" } ); 3273 3274 3275 match(OPEN_CURLY); 3276 { 3277 _loop289: 3278 do { 3279 if ((LA(1)==SP)) { 3280 match(SP); 3281 } 3282 else { 3283 break _loop289; 3284 } 3285 3286 } while (true); 3287 } 3288 anyUserPermission(); 3289 { 3290 _loop291: 3291 do { 3292 if ((LA(1)==SP)) { 3293 match(SP); 3294 } 3295 else { 3296 break _loop291; 3297 } 3298 3299 } while (true); 3300 } 3301 { 3302 _loop297: 3303 do { 3304 if ((LA(1)==SEP)) { 3305 match(SEP); 3306 { 3307 _loop294: 3308 do { 3309 if ((LA(1)==SP)) { 3310 match(SP); 3311 } 3312 else { 3313 break _loop294; 3314 } 3315 3316 } while (true); 3317 } 3318 anyUserPermission(); 3319 { 3320 _loop296: 3321 do { 3322 if ((LA(1)==SP)) { 3323 match(SP); 3324 } 3325 else { 3326 break _loop296; 3327 } 3328 3329 } while (true); 3330 } 3331 } 3332 else { 3333 break _loop297; 3334 } 3335 3336 } while (true); 3337 } 3338 match(CLOSE_CURLY); 3339 3340 if ( !userPermissionComponentsMonitor.finalStateValid() ) 3341 { 3342 throw new RecognitionException( "Missing mandatory userPermission components: " 3343 + userPermissionComponentsMonitor.getRemainingComponents() ); 3344 } 3345 3346 userPermission = new UserPermission( precedence, grantsAndDenials, protectedItems ); 3347 precedence = null; 3348 3349 return userPermission ; 3350 } 3351 3352 public final void anyUserPermission() throws RecognitionException, TokenStreamException { 3353 3354 3355 try { // for error handling 3356 switch ( LA(1)) { 3357 case ID_precedence: 3358 { 3359 precedence(); 3360 3361 userPermissionComponentsMonitor.useComponent( "precedence" ); 3362 3363 break; 3364 } 3365 case ID_protectedItems: 3366 { 3367 protectedItems(); 3368 3369 userPermissionComponentsMonitor.useComponent( "protectedItems" ); 3370 3371 break; 3372 } 3373 case ID_grantsAndDenials: 3374 { 3375 grantsAndDenials(); 3376 3377 userPermissionComponentsMonitor.useComponent( "grantsAndDenials" ); 3378 3379 break; 3380 } 3381 default: 3382 { 3383 throw new NoViableAltException(LT(1), getFilename()); 3384 } 3385 } 3386 } 3387 catch (IllegalArgumentException e) { 3388 3389 throw new RecognitionException( e.getMessage() ); 3390 3391 } 3392 } 3393 3394 public final void subtreeSpecificationComponent() throws RecognitionException, TokenStreamException { 3395 3396 3397 log.debug( "entered subtreeSpecification()" ); 3398 3399 3400 try { // for error handling 3401 switch ( LA(1)) { 3402 case ID_base: 3403 { 3404 ss_base(); 3405 3406 subtreeSpecificationComponentsMonitor.useComponent( "base" ); 3407 3408 break; 3409 } 3410 case ID_specificExclusions: 3411 { 3412 ss_specificExclusions(); 3413 3414 subtreeSpecificationComponentsMonitor.useComponent( "specificExclusions" ); 3415 3416 break; 3417 } 3418 case ID_minimum: 3419 { 3420 ss_minimum(); 3421 3422 subtreeSpecificationComponentsMonitor.useComponent( "minimum" ); 3423 3424 break; 3425 } 3426 case ID_maximum: 3427 { 3428 ss_maximum(); 3429 3430 subtreeSpecificationComponentsMonitor.useComponent( "maximum" ); 3431 3432 break; 3433 } 3434 default: 3435 { 3436 throw new NoViableAltException(LT(1), getFilename()); 3437 } 3438 } 3439 } 3440 catch (IllegalArgumentException e) { 3441 3442 throw new RecognitionException( e.getMessage() ); 3443 3444 } 3445 } 3446 3447 public final void ss_base() throws RecognitionException, TokenStreamException { 3448 3449 3450 log.debug( "entered ss_base()" ); 3451 Dn base = null; 3452 3453 3454 match(ID_base); 3455 { 3456 int _cnt314=0; 3457 _loop314: 3458 do { 3459 if ((LA(1)==SP)) { 3460 match(SP); 3461 } 3462 else { 3463 if ( _cnt314>=1 ) { break _loop314; } else {throw new NoViableAltException(LT(1), getFilename());} 3464 } 3465 3466 _cnt314++; 3467 } while (true); 3468 } 3469 base=distinguishedName(); 3470 3471 ssModifier.setBase( base ); 3472 3473 } 3474 3475 public final void ss_specificExclusions() throws RecognitionException, TokenStreamException { 3476 3477 3478 log.debug( "entered ss_specificExclusions()" ); 3479 3480 3481 match(ID_specificExclusions); 3482 { 3483 int _cnt317=0; 3484 _loop317: 3485 do { 3486 if ((LA(1)==SP)) { 3487 match(SP); 3488 } 3489 else { 3490 if ( _cnt317>=1 ) { break _loop317; } else {throw new NoViableAltException(LT(1), getFilename());} 3491 } 3492 3493 _cnt317++; 3494 } while (true); 3495 } 3496 specificExclusions(); 3497 3498 ssModifier.setChopBeforeExclusions( chopBeforeExclusions ); 3499 ssModifier.setChopAfterExclusions( chopAfterExclusions ); 3500 3501 } 3502 3503 public final void ss_minimum() throws RecognitionException, TokenStreamException { 3504 3505 3506 log.debug( "entered ss_minimum()" ); 3507 int minimum = 0; 3508 3509 3510 match(ID_minimum); 3511 { 3512 int _cnt343=0; 3513 _loop343: 3514 do { 3515 if ((LA(1)==SP)) { 3516 match(SP); 3517 } 3518 else { 3519 if ( _cnt343>=1 ) { break _loop343; } else {throw new NoViableAltException(LT(1), getFilename());} 3520 } 3521 3522 _cnt343++; 3523 } while (true); 3524 } 3525 minimum=baseDistance(); 3526 3527 ssModifier.setMinBaseDistance( minimum ); 3528 3529 } 3530 3531 public final void ss_maximum() throws RecognitionException, TokenStreamException { 3532 3533 3534 log.debug( "entered ss_maximum()" ); 3535 int maximum = 0; 3536 3537 3538 match(ID_maximum); 3539 { 3540 int _cnt346=0; 3541 _loop346: 3542 do { 3543 if ((LA(1)==SP)) { 3544 match(SP); 3545 } 3546 else { 3547 if ( _cnt346>=1 ) { break _loop346; } else {throw new NoViableAltException(LT(1), getFilename());} 3548 } 3549 3550 _cnt346++; 3551 } while (true); 3552 } 3553 maximum=baseDistance(); 3554 3555 ssModifier.setMaxBaseDistance( maximum ); 3556 3557 } 3558 3559 public final void specificExclusions() throws RecognitionException, TokenStreamException { 3560 3561 3562 log.debug( "entered specificExclusions()" ); 3563 3564 3565 match(OPEN_CURLY); 3566 { 3567 _loop320: 3568 do { 3569 if ((LA(1)==SP)) { 3570 match(SP); 3571 } 3572 else { 3573 break _loop320; 3574 } 3575 3576 } while (true); 3577 } 3578 { 3579 switch ( LA(1)) { 3580 case ID_chopBefore: 3581 case ID_chopAfter: 3582 { 3583 specificExclusion(); 3584 { 3585 _loop323: 3586 do { 3587 if ((LA(1)==SP)) { 3588 match(SP); 3589 } 3590 else { 3591 break _loop323; 3592 } 3593 3594 } while (true); 3595 } 3596 { 3597 _loop329: 3598 do { 3599 if ((LA(1)==SEP)) { 3600 match(SEP); 3601 { 3602 _loop326: 3603 do { 3604 if ((LA(1)==SP)) { 3605 match(SP); 3606 } 3607 else { 3608 break _loop326; 3609 } 3610 3611 } while (true); 3612 } 3613 specificExclusion(); 3614 { 3615 _loop328: 3616 do { 3617 if ((LA(1)==SP)) { 3618 match(SP); 3619 } 3620 else { 3621 break _loop328; 3622 } 3623 3624 } while (true); 3625 } 3626 } 3627 else { 3628 break _loop329; 3629 } 3630 3631 } while (true); 3632 } 3633 break; 3634 } 3635 case CLOSE_CURLY: 3636 { 3637 break; 3638 } 3639 default: 3640 { 3641 throw new NoViableAltException(LT(1), getFilename()); 3642 } 3643 } 3644 } 3645 match(CLOSE_CURLY); 3646 } 3647 3648 public final void specificExclusion() throws RecognitionException, TokenStreamException { 3649 3650 3651 log.debug( "entered specificExclusion()" ); 3652 3653 3654 switch ( LA(1)) { 3655 case ID_chopBefore: 3656 { 3657 chopBefore(); 3658 break; 3659 } 3660 case ID_chopAfter: 3661 { 3662 chopAfter(); 3663 break; 3664 } 3665 default: 3666 { 3667 throw new NoViableAltException(LT(1), getFilename()); 3668 } 3669 } 3670 } 3671 3672 public final void chopBefore() throws RecognitionException, TokenStreamException { 3673 3674 3675 log.debug( "entered chopBefore()" ); 3676 Dn chopBeforeExclusion = null; 3677 3678 3679 match(ID_chopBefore); 3680 { 3681 _loop333: 3682 do { 3683 if ((LA(1)==SP)) { 3684 match(SP); 3685 } 3686 else { 3687 break _loop333; 3688 } 3689 3690 } while (true); 3691 } 3692 match(COLON); 3693 { 3694 _loop335: 3695 do { 3696 if ((LA(1)==SP)) { 3697 match(SP); 3698 } 3699 else { 3700 break _loop335; 3701 } 3702 3703 } while (true); 3704 } 3705 chopBeforeExclusion=distinguishedName(); 3706 3707 chopBeforeExclusions.add( chopBeforeExclusion ); 3708 3709 } 3710 3711 public final void chopAfter() throws RecognitionException, TokenStreamException { 3712 3713 3714 log.debug( "entered chopAfter()" ); 3715 Dn chopAfterExclusion = null; 3716 3717 3718 match(ID_chopAfter); 3719 { 3720 _loop338: 3721 do { 3722 if ((LA(1)==SP)) { 3723 match(SP); 3724 } 3725 else { 3726 break _loop338; 3727 } 3728 3729 } while (true); 3730 } 3731 match(COLON); 3732 { 3733 _loop340: 3734 do { 3735 if ((LA(1)==SP)) { 3736 match(SP); 3737 } 3738 else { 3739 break _loop340; 3740 } 3741 3742 } while (true); 3743 } 3744 chopAfterExclusion=distinguishedName(); 3745 3746 chopAfterExclusions.add( chopAfterExclusion ); 3747 3748 } 3749 3750 public final int baseDistance() throws RecognitionException, TokenStreamException { 3751 int distance ; 3752 3753 Token token = null; 3754 3755 log.debug( "entered baseDistance()" ); 3756 distance = 0; 3757 3758 3759 token = LT(1); 3760 match(INTEGER); 3761 3762 distance = token2Integer( token ); 3763 3764 return distance ; 3765 } 3766 3767 public final LeafNode item() throws RecognitionException, TokenStreamException { 3768 LeafNode node ; 3769 3770 3771 log.debug( "entered item()" ); 3772 node = null; 3773 String oid = null; 3774 3775 3776 match(ID_item); 3777 { 3778 _loop354: 3779 do { 3780 if ((LA(1)==SP)) { 3781 match(SP); 3782 } 3783 else { 3784 break _loop354; 3785 } 3786 3787 } while (true); 3788 } 3789 match(COLON); 3790 { 3791 _loop356: 3792 do { 3793 if ((LA(1)==SP)) { 3794 match(SP); 3795 } 3796 else { 3797 break _loop356; 3798 } 3799 3800 } while (true); 3801 } 3802 oid=oid(); 3803 3804 node = new EqualityNode( SchemaConstants.OBJECT_CLASS_AT , new StringValue( oid ) ); 3805 3806 return node ; 3807 } 3808 3809 public final BranchNode and() throws RecognitionException, TokenStreamException { 3810 BranchNode node ; 3811 3812 3813 log.debug( "entered and()" ); 3814 node = null; 3815 List<ExprNode> children = null; 3816 3817 3818 match(ID_and); 3819 { 3820 _loop359: 3821 do { 3822 if ((LA(1)==SP)) { 3823 match(SP); 3824 } 3825 else { 3826 break _loop359; 3827 } 3828 3829 } while (true); 3830 } 3831 match(COLON); 3832 { 3833 _loop361: 3834 do { 3835 if ((LA(1)==SP)) { 3836 match(SP); 3837 } 3838 else { 3839 break _loop361; 3840 } 3841 3842 } while (true); 3843 } 3844 children=refinements(); 3845 3846 node = new AndNode( children ); 3847 3848 return node ; 3849 } 3850 3851 public final BranchNode or() throws RecognitionException, TokenStreamException { 3852 BranchNode node ; 3853 3854 3855 log.debug( "entered or()" ); 3856 node = null; 3857 List<ExprNode> children = null; 3858 3859 3860 match(ID_or); 3861 { 3862 _loop364: 3863 do { 3864 if ((LA(1)==SP)) { 3865 match(SP); 3866 } 3867 else { 3868 break _loop364; 3869 } 3870 3871 } while (true); 3872 } 3873 match(COLON); 3874 { 3875 _loop366: 3876 do { 3877 if ((LA(1)==SP)) { 3878 match(SP); 3879 } 3880 else { 3881 break _loop366; 3882 } 3883 3884 } while (true); 3885 } 3886 children=refinements(); 3887 3888 node = new OrNode( children ); 3889 3890 return node ; 3891 } 3892 3893 public final BranchNode not() throws RecognitionException, TokenStreamException { 3894 BranchNode node ; 3895 3896 3897 log.debug( "entered not()" ); 3898 node = null; 3899 List<ExprNode> children = null; 3900 3901 3902 match(ID_not); 3903 { 3904 _loop369: 3905 do { 3906 if ((LA(1)==SP)) { 3907 match(SP); 3908 } 3909 else { 3910 break _loop369; 3911 } 3912 3913 } while (true); 3914 } 3915 match(COLON); 3916 { 3917 _loop371: 3918 do { 3919 if ((LA(1)==SP)) { 3920 match(SP); 3921 } 3922 else { 3923 break _loop371; 3924 } 3925 3926 } while (true); 3927 } 3928 children=refinements(); 3929 3930 node = new NotNode( children ); 3931 3932 return node ; 3933 } 3934 3935 public final List<ExprNode> refinements() throws RecognitionException, TokenStreamException { 3936 List<ExprNode> children ; 3937 3938 3939 log.debug( "entered refinements()" ); 3940 children = null; 3941 ExprNode child = null; 3942 List<ExprNode> tempChildren = new ArrayList<ExprNode>(); 3943 3944 3945 match(OPEN_CURLY); 3946 { 3947 _loop374: 3948 do { 3949 if ((LA(1)==SP)) { 3950 match(SP); 3951 } 3952 else { 3953 break _loop374; 3954 } 3955 3956 } while (true); 3957 } 3958 { 3959 switch ( LA(1)) { 3960 case ID_item: 3961 case ID_and: 3962 case ID_or: 3963 case ID_not: 3964 { 3965 child=refinement(); 3966 { 3967 _loop377: 3968 do { 3969 if ((LA(1)==SP)) { 3970 match(SP); 3971 } 3972 else { 3973 break _loop377; 3974 } 3975 3976 } while (true); 3977 } 3978 3979 tempChildren.add( child ); 3980 3981 { 3982 _loop383: 3983 do { 3984 if ((LA(1)==SEP)) { 3985 match(SEP); 3986 { 3987 _loop380: 3988 do { 3989 if ((LA(1)==SP)) { 3990 match(SP); 3991 } 3992 else { 3993 break _loop380; 3994 } 3995 3996 } while (true); 3997 } 3998 child=refinement(); 3999 { 4000 _loop382: 4001 do { 4002 if ((LA(1)==SP)) { 4003 match(SP); 4004 } 4005 else { 4006 break _loop382; 4007 } 4008 4009 } while (true); 4010 } 4011 4012 tempChildren.add( child ); 4013 4014 } 4015 else { 4016 break _loop383; 4017 } 4018 4019 } while (true); 4020 } 4021 break; 4022 } 4023 case CLOSE_CURLY: 4024 { 4025 break; 4026 } 4027 default: 4028 { 4029 throw new NoViableAltException(LT(1), getFilename()); 4030 } 4031 } 4032 } 4033 match(CLOSE_CURLY); 4034 4035 children = tempChildren; 4036 4037 return children ; 4038 } 4039 4040 4041 public static final String[] _tokenNames = { 4042 "<0>", 4043 "EOF", 4044 "<2>", 4045 "NULL_TREE_LOOKAHEAD", 4046 "ATTRIBUTE_VALUE_CANDIDATE", 4047 "RANGE_OF_VALUES_CANDIDATE", 4048 "SP", 4049 "OPEN_CURLY", 4050 "SEP", 4051 "CLOSE_CURLY", 4052 "\"identificationTag\"", 4053 "SAFEUTF8STRING", 4054 "\"precedence\"", 4055 "INTEGER", 4056 "\"authenticationLevel\"", 4057 "\"none\"", 4058 "\"simple\"", 4059 "\"strong\"", 4060 "\"itemOrUserFirst\"", 4061 "\"itemFirst\"", 4062 "COLON", 4063 "\"userFirst\"", 4064 "\"protectedItems\"", 4065 "\"entry\"", 4066 "\"allUserAttributeTypes\"", 4067 "\"attributeType\"", 4068 "\"allAttributeValues\"", 4069 "\"allUserAttributeTypesAndValues\"", 4070 "\"selfValue\"", 4071 "\"maxValueCount\"", 4072 "\"type\"", 4073 "\"maxCount\"", 4074 "\"maxImmSub\"", 4075 "\"restrictedBy\"", 4076 "\"valuesIn\"", 4077 "\"classes\"", 4078 "\"itemPermissions\"", 4079 "\"grantsAndDenials\"", 4080 "\"grantAdd\"", 4081 "\"denyAdd\"", 4082 "\"grantDiscloseOnError\"", 4083 "\"denyDiscloseOnError\"", 4084 "\"grantRead\"", 4085 "\"denyRead\"", 4086 "\"grantRemove\"", 4087 "\"denyRemove\"", 4088 "\"grantBrowse\"", 4089 "\"denyBrowse\"", 4090 "\"grantExport\"", 4091 "\"denyExport\"", 4092 "\"grantImport\"", 4093 "\"denyImport\"", 4094 "\"grantModify\"", 4095 "\"denyModify\"", 4096 "\"grantRename\"", 4097 "\"denyRename\"", 4098 "\"grantReturnDN\"", 4099 "\"denyReturnDN\"", 4100 "\"grantCompare\"", 4101 "\"denyCompare\"", 4102 "\"grantFilterMatch\"", 4103 "\"denyFilterMatch\"", 4104 "\"grantInvoke\"", 4105 "\"denyInvoke\"", 4106 "\"userClasses\"", 4107 "\"allUsers\"", 4108 "\"thisEntry\"", 4109 "\"parentOfEntry\"", 4110 "\"name\"", 4111 "\"userGroup\"", 4112 "\"subtree\"", 4113 "\"userPermissions\"", 4114 "\"base\"", 4115 "\"specificExclusions\"", 4116 "\"chopBefore\"", 4117 "\"chopAfter\"", 4118 "\"minimum\"", 4119 "\"maximum\"", 4120 "DESCR", 4121 "NUMERICOID", 4122 "\"item\"", 4123 "\"and\"", 4124 "\"or\"", 4125 "\"not\"", 4126 "\"FALSE\"", 4127 "\"TRUE\"", 4128 "\"level\"", 4129 "\"basicLevels\"", 4130 "\"localQualifier\"", 4131 "\"signed\"", 4132 "\"rangeOfValues\"", 4133 "\"specificationFilter\"", 4134 "SAFEUTF8CHAR", 4135 "DIGIT", 4136 "LDIGIT", 4137 "ALPHA", 4138 "HYPHEN", 4139 "DOT", 4140 "INTEGER_OR_NUMERICOID", 4141 "FILTER", 4142 "FILTER_VALUE" 4143 }; 4144 4145 4146 }