001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * https://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 * 019 */ 020 021package org.apache.directory.api.dsmlv2.request; 022 023 024import java.io.IOException; 025import java.lang.reflect.Array; 026import java.util.Base64; 027import java.util.HashMap; 028 029import org.apache.directory.api.asn1.DecoderException; 030import org.apache.directory.api.asn1.util.Oid; 031import org.apache.directory.api.dsmlv2.AbstractGrammar; 032import org.apache.directory.api.dsmlv2.DsmlControl; 033import org.apache.directory.api.dsmlv2.DsmlLiterals; 034import org.apache.directory.api.dsmlv2.Dsmlv2Container; 035import org.apache.directory.api.dsmlv2.Dsmlv2StatesEnum; 036import org.apache.directory.api.dsmlv2.Grammar; 037import org.apache.directory.api.dsmlv2.GrammarAction; 038import org.apache.directory.api.dsmlv2.GrammarTransition; 039import org.apache.directory.api.dsmlv2.ParserUtils; 040import org.apache.directory.api.dsmlv2.Tag; 041import org.apache.directory.api.dsmlv2.request.BatchRequestDsml.OnError; 042import org.apache.directory.api.dsmlv2.request.BatchRequestDsml.Processing; 043import org.apache.directory.api.dsmlv2.request.BatchRequestDsml.ResponseOrder; 044import org.apache.directory.api.i18n.I18n; 045import org.apache.directory.api.ldap.codec.api.ControlFactory; 046import org.apache.directory.api.ldap.codec.api.LdapApiService; 047import org.apache.directory.api.ldap.codec.api.LdapApiServiceFactory; 048import org.apache.directory.api.ldap.codec.api.LdapCodecConstants; 049import org.apache.directory.api.ldap.model.entry.Value; 050import org.apache.directory.api.ldap.model.exception.LdapException; 051import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException; 052import org.apache.directory.api.ldap.model.exception.LdapSchemaException; 053import org.apache.directory.api.ldap.model.filter.ExprNode; 054import org.apache.directory.api.ldap.model.message.AbandonRequestImpl; 055import org.apache.directory.api.ldap.model.message.AddRequestImpl; 056import org.apache.directory.api.ldap.model.message.AliasDerefMode; 057import org.apache.directory.api.ldap.model.message.BindRequestImpl; 058import org.apache.directory.api.ldap.model.message.CompareRequest; 059import org.apache.directory.api.ldap.model.message.CompareRequestImpl; 060import org.apache.directory.api.ldap.model.message.Control; 061import org.apache.directory.api.ldap.model.message.DeleteRequestImpl; 062import org.apache.directory.api.ldap.model.message.ModifyDnRequestImpl; 063import org.apache.directory.api.ldap.model.message.ModifyRequestImpl; 064import org.apache.directory.api.ldap.model.message.OpaqueExtendedRequest; 065import org.apache.directory.api.ldap.model.message.Request; 066import org.apache.directory.api.ldap.model.message.SearchRequest; 067import org.apache.directory.api.ldap.model.message.SearchRequestImpl; 068import org.apache.directory.api.ldap.model.message.SearchScope; 069import org.apache.directory.api.ldap.model.message.controls.OpaqueControl; 070import org.apache.directory.api.ldap.model.name.Dn; 071import org.apache.directory.api.ldap.model.name.Rdn; 072import org.apache.directory.api.util.Strings; 073import org.xmlpull.v1.XmlPullParser; 074import org.xmlpull.v1.XmlPullParserException; 075 076 077/** 078 * This Class represents the DSMLv2 Request Grammar 079 * 080 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 081 */ 082public final class Dsmlv2Grammar extends AbstractGrammar implements Grammar 083{ 084 private LdapApiService codec = LdapApiServiceFactory.getSingleton(); 085 086 //************************* 087 //* GRAMMAR ACTIONS * 088 //************************* 089 090 /** 091 * GrammarAction that creates a Batch Request 092 */ 093 private final GrammarAction batchRequestCreation = new GrammarAction( "Create Batch Request" ) 094 { 095 /** 096 * {@inheritDoc} 097 */ 098 @Override 099 public void action( Dsmlv2Container container ) throws XmlPullParserException 100 { 101 BatchRequestDsml batchRequest = new BatchRequestDsml(); 102 103 container.setBatchRequest( batchRequest ); 104 105 XmlPullParser xpp = container.getParser(); 106 107 // Checking and adding the batchRequest's attributes 108 String attributeValue; 109 // requestID 110 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 111 112 if ( attributeValue != null ) 113 { 114 batchRequest.setRequestID( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 115 } 116 // processing 117 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.PROCESSING ); 118 119 if ( attributeValue != null ) 120 { 121 if ( DsmlLiterals.SEQUENTIAL.equals( attributeValue ) ) 122 { 123 batchRequest.setProcessing( Processing.SEQUENTIAL ); 124 } 125 else if ( DsmlLiterals.PARALLEL.equals( attributeValue ) ) 126 { 127 batchRequest.setProcessing( Processing.PARALLEL ); 128 } 129 else 130 { 131 throw new XmlPullParserException( I18n.err( I18n.ERR_03013_UNKNOWN_PROCESSING_VALUE ), xpp, null ); 132 } 133 } 134 else 135 { 136 batchRequest.setProcessing( Processing.SEQUENTIAL ); 137 } 138 139 // onError 140 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.ON_ERROR ); 141 142 if ( attributeValue != null ) 143 { 144 if ( DsmlLiterals.RESUME.equals( attributeValue ) ) 145 { 146 batchRequest.setOnError( OnError.RESUME ); 147 } 148 else if ( DsmlLiterals.EXIT.equals( attributeValue ) ) 149 { 150 batchRequest.setOnError( OnError.EXIT ); 151 } 152 else 153 { 154 throw new XmlPullParserException( I18n.err( I18n.ERR_03014_UNKNOWN_ON_ERROR_VALUE ), xpp, null ); 155 } 156 } 157 else 158 { 159 batchRequest.setOnError( OnError.EXIT ); 160 } 161 162 // responseOrder 163 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.RESPONSE_ORDER ); 164 165 if ( attributeValue != null ) 166 { 167 if ( DsmlLiterals.SEQUENTIAL.equals( attributeValue ) ) 168 { 169 batchRequest.setResponseOrder( ResponseOrder.SEQUENTIAL ); 170 } 171 else if ( DsmlLiterals.UNORDERED.equals( attributeValue ) ) 172 { 173 batchRequest.setResponseOrder( ResponseOrder.UNORDERED ); 174 } 175 else 176 { 177 throw new XmlPullParserException( I18n.err( I18n.ERR_03015_UNKNOWN_RESPONSE_ORDER_VALUE ), xpp, null ); 178 } 179 } 180 else 181 { 182 batchRequest.setResponseOrder( ResponseOrder.SEQUENTIAL ); 183 } 184 } 185 }; 186 187 /** 188 * GrammarAction that creates an Abandon Request 189 */ 190 private final GrammarAction abandonRequestCreation = new GrammarAction( "Create Abandon Request" ) 191 { 192 /** 193 * {@inheritDoc} 194 */ 195 @Override 196 public void action( Dsmlv2Container container ) throws XmlPullParserException 197 { 198 AbandonRequestDsml abandonRequest = new AbandonRequestDsml( codec, new AbandonRequestImpl() ); 199 container.getBatchRequest().addRequest( abandonRequest ); 200 201 XmlPullParser xpp = container.getParser(); 202 203 // Checking and adding the request's attributes 204 String attributeValue; 205 // requestID 206 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 207 208 if ( attributeValue != null ) 209 { 210 abandonRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 211 } 212 else 213 { 214 if ( ParserUtils.isRequestIdNeeded( container ) ) 215 { 216 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 217 } 218 } 219 220 // abandonID 221 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.ABANDON_ID ); 222 223 if ( attributeValue != null ) 224 { 225 try 226 { 227 abandonRequest.setAbandoned( Integer.parseInt( attributeValue ) ); 228 } 229 catch ( NumberFormatException nfe ) 230 { 231 throw new XmlPullParserException( I18n.err( I18n.ERR_03017_ABANDON_ID_NOT_INTEGER ), xpp, nfe ); 232 } 233 } 234 else 235 { 236 throw new XmlPullParserException( I18n.err( I18n.ERR_03018_ABANDON_ID_REQUIRED ), xpp, null ); 237 } 238 } 239 }; 240 241 /** 242 * GrammarAction that creates an Add Request 243 */ 244 private final GrammarAction addRequestCreation = new GrammarAction( "Create Add Request" ) 245 { 246 /** 247 * {@inheritDoc} 248 */ 249 @Override 250 public void action( Dsmlv2Container container ) throws XmlPullParserException 251 { 252 AddRequestDsml addRequest = new AddRequestDsml( codec, new AddRequestImpl() ); 253 container.getBatchRequest().addRequest( addRequest ); 254 255 XmlPullParser xpp = container.getParser(); 256 257 // Checking and adding the request's attributes 258 String attributeValue; 259 // requestID 260 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 261 262 if ( attributeValue != null ) 263 { 264 addRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 265 } 266 else 267 { 268 if ( ParserUtils.isRequestIdNeeded( container ) ) 269 { 270 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 271 } 272 } 273 274 // dn 275 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN ); 276 277 if ( attributeValue != null ) 278 { 279 try 280 { 281 addRequest.setEntryDn( new Dn( attributeValue ) ); 282 } 283 catch ( LdapInvalidDnException lide ) 284 { 285 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 286 } 287 } 288 else 289 { 290 throw new XmlPullParserException( I18n.err( I18n.ERR_03001_DN_ATTRIBUTE_REQUIRED ), xpp, null ); 291 } 292 } 293 }; 294 295 /** 296 * GrammarAction that adds an attribute to an Add Request 297 */ 298 private final GrammarAction addRequestAddAttribute = new GrammarAction( "Add Attribute to Add Request" ) 299 { 300 /** 301 * {@inheritDoc} 302 */ 303 @Override 304 public void action( Dsmlv2Container container ) throws XmlPullParserException 305 { 306 AddRequestDsml addRequest = ( AddRequestDsml ) 307 container.getBatchRequest().getCurrentRequest(); 308 309 XmlPullParser xpp = container.getParser(); 310 311 // Checking and adding the request's attributes 312 String attributeValue; 313 // name 314 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 315 316 if ( attributeValue != null ) 317 { 318 try 319 { 320 addRequest.addAttributeType( attributeValue ); 321 } 322 catch ( LdapException le ) 323 { 324 throw new XmlPullParserException( I18n.err( I18n.ERR_03020_CANT_ADD_ATTRIBUTE_VALUE ), xpp, le ); 325 } 326 } 327 else 328 { 329 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 330 } 331 } 332 }; 333 334 /** 335 * GrammarAction that adds a Value to an Attribute of an Add Request 336 */ 337 private final GrammarAction addRequestAddValue = new GrammarAction( "Add Value to Attribute" ) 338 { 339 /** 340 * {@inheritDoc} 341 */ 342 @Override 343 public void action( Dsmlv2Container container ) throws XmlPullParserException 344 { 345 AddRequestDsml addRequest = ( AddRequestDsml ) 346 container.getBatchRequest().getCurrentRequest(); 347 348 XmlPullParser xpp = container.getParser(); 349 350 try 351 { 352 // We have to catch the type Attribute Value before going to the next Text node 353 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 354 355 // Getting the value 356 String nextText = xpp.nextText(); 357 358 if ( !Strings.isEmpty( nextText ) ) 359 { 360 try 361 { 362 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 363 { 364 addRequest.addAttributeValue( Base64.getDecoder().decode( nextText.trim() ) ); 365 } 366 else 367 { 368 addRequest.addAttributeValue( nextText.trim() ); 369 } 370 } 371 catch ( LdapException le ) 372 { 373 throw new XmlPullParserException( le.getMessage(), xpp, le ); 374 } 375 } 376 } 377 catch ( IOException ioe ) 378 { 379 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 380 } 381 } 382 }; 383 384 /** 385 * GrammarAction that creates an Auth Request 386 */ 387 private final GrammarAction authRequestCreation = new GrammarAction( "Create Auth Request" ) 388 { 389 /** 390 * {@inheritDoc} 391 */ 392 @Override 393 public void action( Dsmlv2Container container ) throws XmlPullParserException 394 { 395 BindRequestDsml authRequest = new BindRequestDsml( codec, new BindRequestImpl() ); 396 container.getBatchRequest().addRequest( authRequest ); 397 398 authRequest.setSimple( true ); 399 authRequest.setVersion3( true ); 400 401 XmlPullParser xpp = container.getParser(); 402 403 // Checking and adding the request's attributes 404 String attributeValue; 405 // requestID 406 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 407 408 if ( attributeValue != null ) 409 { 410 authRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 411 } 412 else 413 { 414 if ( ParserUtils.isRequestIdNeeded( container ) ) 415 { 416 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 417 } 418 } 419 // principal 420 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.PRINCIPAL ); 421 422 if ( attributeValue != null ) 423 { 424 authRequest.setName( attributeValue ); 425 } 426 else 427 { 428 throw new XmlPullParserException( I18n.err( I18n.ERR_03021_PRINCIPAL_ATTRIBUTE_REQUIRED ), xpp, null ); 429 } 430 } 431 }; 432 433 /** 434 * GrammarAction that creates an Compare Request 435 */ 436 private final GrammarAction compareRequestCreation = new GrammarAction( "Create Compare Request" ) 437 { 438 /** 439 * {@inheritDoc} 440 */ 441 @Override 442 public void action( Dsmlv2Container container ) throws XmlPullParserException 443 { 444 CompareRequestDsml compareRequest = new CompareRequestDsml( codec, new CompareRequestImpl() ); 445 container.getBatchRequest().addRequest( compareRequest ); 446 447 XmlPullParser xpp = container.getParser(); 448 449 // Checking and adding the request's attributes 450 String attributeValue; 451 // requestID 452 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 453 454 if ( attributeValue != null ) 455 { 456 compareRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 457 } 458 else 459 { 460 if ( ParserUtils.isRequestIdNeeded( container ) ) 461 { 462 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 463 } 464 } 465 466 // dn 467 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN ); 468 469 if ( attributeValue != null ) 470 { 471 try 472 { 473 compareRequest.setName( new Dn( attributeValue ) ); 474 } 475 catch ( LdapInvalidDnException lide ) 476 { 477 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 478 } 479 } 480 else 481 { 482 throw new XmlPullParserException( I18n.err( I18n.ERR_03001_DN_ATTRIBUTE_REQUIRED ), xpp, null ); 483 } 484 } 485 }; 486 487 /** 488 * GrammarAction that adds an Assertion to a Compare Request 489 */ 490 private final GrammarAction compareRequestAddAssertion = new GrammarAction( "Add Assertion to Compare Request" ) 491 { 492 /** 493 * {@inheritDoc} 494 */ 495 @Override 496 public void action( Dsmlv2Container container ) throws XmlPullParserException 497 { 498 CompareRequest compareRequest = ( CompareRequest ) container.getBatchRequest().getCurrentRequest(); 499 500 XmlPullParser xpp = container.getParser(); 501 502 // Checking and adding the request's attributes 503 String attributeId; 504 505 // name 506 attributeId = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 507 508 if ( attributeId != null ) 509 { 510 compareRequest.setAttributeId( attributeId ); 511 } 512 else 513 { 514 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 515 } 516 } 517 }; 518 519 /** 520 * GrammarAction that adds a Value to a Compare Request 521 */ 522 private final GrammarAction compareRequestAddValue = new GrammarAction( "Add Value to Compare Request" ) 523 { 524 /** 525 * {@inheritDoc} 526 */ 527 @Override 528 public void action( Dsmlv2Container container ) throws XmlPullParserException 529 { 530 CompareRequest compareRequest = ( CompareRequest ) container.getBatchRequest().getCurrentRequest(); 531 532 XmlPullParser xpp = container.getParser(); 533 534 try 535 { 536 // We have to catch the type Attribute Value before going to the next Text node 537 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 538 539 // Getting the value 540 String nextText = xpp.nextText(); 541 542 if ( !Strings.isEmpty( nextText ) ) 543 { 544 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 545 { 546 compareRequest.setAssertionValue( Base64.getDecoder().decode( nextText.trim() ) ); 547 } 548 else 549 { 550 compareRequest.setAssertionValue( nextText.trim() ); 551 } 552 } 553 } 554 catch ( IOException ioe ) 555 { 556 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 557 } 558 } 559 }; 560 561 /** 562 * GrammarAction that creates a Del Request 563 */ 564 private final GrammarAction delRequestCreation = new GrammarAction( "Create Del Request" ) 565 { 566 /** 567 * {@inheritDoc} 568 */ 569 @Override 570 public void action( Dsmlv2Container container ) throws XmlPullParserException 571 { 572 DelRequestDsml delRequest = new DelRequestDsml( codec, new DeleteRequestImpl() ); 573 container.getBatchRequest().addRequest( delRequest ); 574 575 XmlPullParser xpp = container.getParser(); 576 577 // Checking and adding the request's attributes 578 String attributeValue; 579 // requestID 580 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 581 582 if ( attributeValue != null ) 583 { 584 delRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 585 } 586 else 587 { 588 if ( ParserUtils.isRequestIdNeeded( container ) ) 589 { 590 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 591 } 592 } 593 594 // dn 595 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN ); 596 597 if ( attributeValue != null ) 598 { 599 try 600 { 601 delRequest.setName( new Dn( attributeValue ) ); 602 } 603 catch ( LdapInvalidDnException lide ) 604 { 605 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 606 } 607 } 608 else 609 { 610 throw new XmlPullParserException( I18n.err( I18n.ERR_03001_DN_ATTRIBUTE_REQUIRED ), xpp, null ); 611 } 612 } 613 }; 614 615 /** 616 * GrammarAction that creates an Extended Request 617 */ 618 private final GrammarAction extendedRequestCreation = new GrammarAction( "Create Extended Request" ) 619 { 620 /** 621 * {@inheritDoc} 622 */ 623 @Override 624 public void action( Dsmlv2Container container ) throws XmlPullParserException 625 { 626 ExtendedRequestDsml<?, ?> extendedRequest = 627 new ExtendedRequestDsml<>( codec, 628 new OpaqueExtendedRequest() ); 629 container.getBatchRequest().addRequest( extendedRequest ); 630 631 XmlPullParser xpp = container.getParser(); 632 633 // Checking and adding the request's attributes 634 String attributeValue; 635 // requestID 636 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 637 638 if ( attributeValue != null ) 639 { 640 extendedRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 641 } 642 else 643 { 644 if ( ParserUtils.isRequestIdNeeded( container ) ) 645 { 646 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 647 } 648 } 649 } 650 }; 651 652 /** 653 * GrammarAction that adds a Name to an Extended Request 654 */ 655 private final GrammarAction extendedRequestAddName = new GrammarAction( "Add Name to Extended Request" ) 656 { 657 /** 658 * {@inheritDoc} 659 */ 660 @Override 661 public void action( Dsmlv2Container container ) throws XmlPullParserException 662 { 663 ExtendedRequestDsml<?, ?> extendedRequest = ( ExtendedRequestDsml<?, ?> ) 664 container.getBatchRequest().getCurrentRequest(); 665 666 XmlPullParser xpp = container.getParser(); 667 668 try 669 { 670 String nextText = xpp.nextText(); 671 672 if ( Strings.isEmpty( nextText ) ) 673 { 674 throw new XmlPullParserException( I18n.err( I18n.ERR_03022_NULL_REQUEST_NAME ), xpp, null ); 675 } 676 else 677 { 678 String oid = nextText.trim(); 679 680 if ( Oid.isOid( oid ) ) 681 { 682 extendedRequest.setRequestName( nextText.trim() ); 683 } 684 else 685 { 686 throw new XmlPullParserException( I18n.err( I18n.ERR_03038_BAD_OID, oid ), xpp, null ); 687 } 688 } 689 } 690 catch ( IOException ioe ) 691 { 692 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 693 } 694 } 695 }; 696 697 /** 698 * GrammarAction that adds a Value to an Extended Request 699 */ 700 private final GrammarAction extendedRequestAddValue = new GrammarAction( "Add Value to Extended Request" ) 701 { 702 /** 703 * {@inheritDoc} 704 */ 705 @Override 706 public void action( Dsmlv2Container container ) throws XmlPullParserException 707 { 708 ExtendedRequestDsml<?, ?> extendedRequest = ( ExtendedRequestDsml<?, ?> ) 709 container.getBatchRequest().getCurrentRequest(); 710 711 XmlPullParser xpp = container.getParser(); 712 713 try 714 { 715 // We have to catch the type Attribute Value before going to the next Text node 716 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 717 718 // Getting the value 719 String nextText = xpp.nextText(); 720 721 if ( !Strings.isEmpty( nextText ) ) 722 { 723 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 724 { 725 extendedRequest.setRequestValue( Base64.getDecoder().decode( nextText.trim() ) ); 726 } 727 else 728 { 729 extendedRequest.setRequestValue( Strings.getBytesUtf8( nextText.trim() ) ); 730 } 731 } 732 } 733 catch ( IOException ioe ) 734 { 735 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 736 } 737 } 738 }; 739 740 /** 741 * GrammarAction that creates a Modify Dn Request 742 */ 743 private final GrammarAction modDNRequestCreation = new GrammarAction( "Create Modify Dn Request" ) 744 { 745 /** 746 * {@inheritDoc} 747 */ 748 @Override 749 public void action( Dsmlv2Container container ) throws XmlPullParserException 750 { 751 ModifyDNRequestDsml modifyDNRequest = new ModifyDNRequestDsml( codec, new ModifyDnRequestImpl() ); 752 container.getBatchRequest().addRequest( modifyDNRequest ); 753 754 XmlPullParser xpp = container.getParser(); 755 756 // Checking and adding the request's attributes 757 String attributeValue; 758 // requestID 759 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 760 761 if ( attributeValue != null ) 762 { 763 modifyDNRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 764 } 765 else 766 { 767 if ( ParserUtils.isRequestIdNeeded( container ) ) 768 { 769 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 770 } 771 } 772 773 // dn 774 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN ); 775 776 if ( attributeValue != null ) 777 { 778 try 779 { 780 modifyDNRequest.setName( new Dn( attributeValue ) ); 781 } 782 catch ( LdapInvalidDnException lide ) 783 { 784 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 785 } 786 } 787 else 788 { 789 throw new XmlPullParserException( I18n.err( I18n.ERR_03001_DN_ATTRIBUTE_REQUIRED ), xpp, null ); 790 } 791 792 // newrdn 793 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NEW_RDN ); 794 795 if ( attributeValue != null ) 796 { 797 try 798 { 799 modifyDNRequest.setNewRdn( new Rdn( attributeValue ) ); 800 } 801 catch ( LdapInvalidDnException lide ) 802 { 803 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 804 } 805 } 806 else 807 { 808 throw new XmlPullParserException( I18n.err( I18n.ERR_03023_NEW_RDN_ATTRIBUTE_REQUESTED ), xpp, null ); 809 } 810 811 // deleteoldrdn 812 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DELETE_OLD_RDN ); 813 814 if ( attributeValue != null ) 815 { 816 if ( ( attributeValue.equalsIgnoreCase( DsmlLiterals.TRUE ) ) || ( "1".equals( attributeValue ) ) ) 817 { 818 modifyDNRequest.setDeleteOldRdn( true ); 819 } 820 else if ( ( attributeValue.equalsIgnoreCase( DsmlLiterals.FALSE ) ) || ( "0".equals( attributeValue ) ) ) 821 { 822 modifyDNRequest.setDeleteOldRdn( false ); 823 } 824 else 825 { 826 throw new XmlPullParserException( I18n.err( I18n.ERR_03024_INCORRECT_DELETE_OLD_RDN_VALUE ), xpp, null ); 827 } 828 } 829 else 830 { 831 modifyDNRequest.setDeleteOldRdn( true ); 832 } 833 834 // newsuperior 835 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NEW_SUPERIOR ); 836 837 if ( attributeValue != null ) 838 { 839 try 840 { 841 modifyDNRequest.setNewSuperior( new Dn( attributeValue ) ); 842 } 843 catch ( LdapInvalidDnException lide ) 844 { 845 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 846 } 847 } 848 } 849 }; 850 851 /** 852 * GrammarAction that creates a Modify Request 853 */ 854 private final GrammarAction modifyRequestCreation = new GrammarAction( "Create Modify Request" ) 855 { 856 /** 857 * {@inheritDoc} 858 */ 859 @Override 860 public void action( Dsmlv2Container container ) throws XmlPullParserException 861 { 862 ModifyRequestDsml modifyRequest = new ModifyRequestDsml( codec, new ModifyRequestImpl() ); 863 container.getBatchRequest().addRequest( modifyRequest ); 864 865 XmlPullParser xpp = container.getParser(); 866 867 // Checking and adding the request's attributes 868 String attributeValue; 869 // requestID 870 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 871 872 if ( attributeValue != null ) 873 { 874 modifyRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 875 } 876 else 877 { 878 if ( ParserUtils.isRequestIdNeeded( container ) ) 879 { 880 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 881 } 882 } 883 884 // dn 885 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN ); 886 887 if ( attributeValue != null ) 888 { 889 try 890 { 891 modifyRequest.setName( new Dn( attributeValue ) ); 892 } 893 catch ( LdapInvalidDnException lide ) 894 { 895 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getLocalizedMessage() ), xpp, lide ); 896 } 897 } 898 else 899 { 900 throw new XmlPullParserException( I18n.err( I18n.ERR_03001_DN_ATTRIBUTE_REQUIRED ), xpp, null ); 901 } 902 } 903 }; 904 905 /** 906 * GrammarAction that adds a Modification to a Modify Request 907 */ 908 private final GrammarAction modifyRequestAddModification = new GrammarAction( "Adds Modification to Modify Request" ) 909 { 910 /** 911 * {@inheritDoc} 912 */ 913 @Override 914 public void action( Dsmlv2Container container ) throws XmlPullParserException 915 { 916 ModifyRequestDsml modifyRequest = ( ModifyRequestDsml ) 917 container.getBatchRequest().getCurrentRequest(); 918 919 XmlPullParser xpp = container.getParser(); 920 921 // Checking and adding the request's attributes 922 String attributeValue; 923 // operation 924 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.OPERATION ); 925 926 if ( attributeValue != null ) 927 { 928 if ( DsmlLiterals.ADD.equals( attributeValue ) ) 929 { 930 modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_ADD ); 931 } 932 else if ( DsmlLiterals.DELETE.equals( attributeValue ) ) 933 { 934 modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_DELETE ); 935 } 936 else if ( DsmlLiterals.REPLACE.equals( attributeValue ) ) 937 { 938 modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_REPLACE ); 939 } 940 else if ( DsmlLiterals.INCREMENT.equals( attributeValue ) ) 941 { 942 modifyRequest.setCurrentOperation( LdapCodecConstants.OPERATION_INCREMENT ); 943 } 944 else 945 { 946 throw new XmlPullParserException( I18n.err( I18n.ERR_03040_UNKNOWN_OPERATION ), xpp, null ); 947 } 948 } 949 else 950 { 951 throw new XmlPullParserException( I18n.err( I18n.ERR_03025_OPERATION_TTRIBUTE_REQUIRED ), xpp, null ); 952 } 953 954 // name 955 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 956 957 if ( attributeValue != null ) 958 { 959 modifyRequest.addAttributeTypeAndValues( attributeValue ); 960 } 961 else 962 { 963 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 964 } 965 } 966 }; 967 968 /** 969 * GrammarAction that adds a Value to a Modification of a Modify Request 970 */ 971 private final GrammarAction modifyRequestAddValue = new GrammarAction( 972 "Add Value to Modification of Modify Request" ) 973 { 974 /** 975 * {@inheritDoc} 976 */ 977 @Override 978 public void action( Dsmlv2Container container ) throws XmlPullParserException 979 { 980 ModifyRequestDsml modifyRequest = ( ModifyRequestDsml ) 981 container.getBatchRequest().getCurrentRequest(); 982 983 XmlPullParser xpp = container.getParser(); 984 985 try 986 { 987 // We have to catch the type Attribute Value before going to the next Text node 988 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 989 990 // Getting the value 991 String nextText = xpp.nextText(); 992 // We are testing if nextText equals "" since a modification can be "". 993 994 try 995 { 996 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 997 { 998 modifyRequest.addAttributeValue( Base64.getDecoder().decode( nextText.trim() ) ); 999 } 1000 else 1001 { 1002 modifyRequest.addAttributeValue( nextText.trim() ); 1003 } 1004 } 1005 catch ( LdapException le ) 1006 { 1007 throw new XmlPullParserException( le.getMessage(), xpp, le ); 1008 } 1009 } 1010 catch ( IOException ioe ) 1011 { 1012 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 1013 } 1014 } 1015 }; 1016 1017 /** 1018 * GrammarAction that creates a Search Request 1019 */ 1020 private final GrammarAction searchRequestCreation = new GrammarAction( "Create Search Request" ) 1021 { 1022 /** 1023 * {@inheritDoc} 1024 */ 1025 @Override 1026 public void action( Dsmlv2Container container ) throws XmlPullParserException 1027 { 1028 SearchRequestDsml searchRequest = new SearchRequestDsml( codec, new SearchRequestImpl() ); 1029 container.getBatchRequest().addRequest( searchRequest ); 1030 1031 XmlPullParser xpp = container.getParser(); 1032 1033 // Checking and adding the request's attributes 1034 String attributeValue; 1035 // requestID 1036 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.REQUEST_ID ); 1037 1038 if ( attributeValue != null ) 1039 { 1040 searchRequest.setMessageId( ParserUtils.parseAndVerifyRequestID( attributeValue, xpp ) ); 1041 } 1042 else 1043 { 1044 if ( ParserUtils.isRequestIdNeeded( container ) ) 1045 { 1046 throw new XmlPullParserException( I18n.err( I18n.ERR_03000_REQUEST_ID_REQUIRED ), xpp, null ); 1047 } 1048 } 1049 1050 // dn 1051 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN ); 1052 1053 if ( attributeValue != null ) 1054 { 1055 try 1056 { 1057 searchRequest.setBase( new Dn( attributeValue ) ); 1058 } 1059 catch ( LdapInvalidDnException lide ) 1060 { 1061 throw new XmlPullParserException( I18n.err( I18n.ERR_03039_PARSING_ERROR, lide.getMessage() ), xpp, lide ); 1062 } 1063 } 1064 else 1065 { 1066 throw new XmlPullParserException( I18n.err( I18n.ERR_03001_DN_ATTRIBUTE_REQUIRED ), xpp, null ); 1067 } 1068 1069 // scope 1070 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.SCOPE ); 1071 1072 if ( attributeValue != null ) 1073 { 1074 if ( DsmlLiterals.BASE_OBJECT.equals( attributeValue ) ) 1075 { 1076 searchRequest.setScope( SearchScope.OBJECT ); 1077 } 1078 else if ( DsmlLiterals.SINGLE_LEVEL.equals( attributeValue ) ) 1079 { 1080 searchRequest.setScope( SearchScope.ONELEVEL ); 1081 } 1082 else if ( DsmlLiterals.WHOLE_SUBTREE.equals( attributeValue ) ) 1083 { 1084 searchRequest.setScope( SearchScope.SUBTREE ); 1085 } 1086 else 1087 { 1088 throw new XmlPullParserException( I18n.err( I18n.ERR_03026_UNKNOWN_SCOPE ), xpp, null ); 1089 } 1090 } 1091 else 1092 { 1093 throw new XmlPullParserException( I18n.err( I18n.ERR_03027_SCOPE_ATTRIBUTE_REQUIRED ), xpp, null ); 1094 } 1095 1096 // derefAliases 1097 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DEREF_ALIASES ); 1098 1099 if ( attributeValue != null ) 1100 { 1101 if ( DsmlLiterals.NEVER_DEREF_ALIASES.equals( attributeValue ) ) 1102 { 1103 searchRequest.setDerefAliases( AliasDerefMode.NEVER_DEREF_ALIASES ); 1104 } 1105 else if ( DsmlLiterals.DEREF_IN_SEARCHING.equals( attributeValue ) ) 1106 { 1107 searchRequest.setDerefAliases( AliasDerefMode.DEREF_IN_SEARCHING ); 1108 } 1109 else if ( DsmlLiterals.DEREF_FINDING_BASE_OBJ.equals( attributeValue ) ) 1110 { 1111 searchRequest.setDerefAliases( AliasDerefMode.DEREF_FINDING_BASE_OBJ ); 1112 } 1113 else if ( DsmlLiterals.DEREF_ALWAYS.equals( attributeValue ) ) 1114 { 1115 searchRequest.setDerefAliases( AliasDerefMode.DEREF_ALWAYS ); 1116 } 1117 else 1118 { 1119 throw new XmlPullParserException( I18n.err( I18n.ERR_03028_UNKNOWN_DEREFALIAS_VALUE ), xpp, null ); 1120 } 1121 } 1122 else 1123 { 1124 throw new XmlPullParserException( I18n.err( I18n.ERR_03029_DEREFALIA_ATTRIBUTE_REQUIRED ), xpp, null ); 1125 } 1126 1127 // sizeLimit 1128 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.SIZE_LIMIT ); 1129 1130 if ( attributeValue != null ) 1131 { 1132 try 1133 { 1134 searchRequest.setSizeLimit( Long.parseLong( attributeValue ) ); 1135 } 1136 catch ( NumberFormatException nfe ) 1137 { 1138 throw new XmlPullParserException( I18n.err( I18n.ERR_03030_SIZE_LIMIT_NOT_INTEGER ), xpp, nfe ); 1139 } 1140 } 1141 else 1142 { 1143 searchRequest.setSizeLimit( 0L ); 1144 } 1145 1146 // timeLimit 1147 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TIME_LIMIT ); 1148 1149 if ( attributeValue != null ) 1150 { 1151 try 1152 { 1153 searchRequest.setTimeLimit( Integer.parseInt( attributeValue ) ); 1154 } 1155 catch ( NumberFormatException nfe ) 1156 { 1157 throw new XmlPullParserException( I18n.err( I18n.ERR_03031_TIME_LIMIT_NOT_INTEGER ), xpp, nfe ); 1158 } 1159 } 1160 else 1161 { 1162 searchRequest.setTimeLimit( 0 ); 1163 } 1164 1165 // typesOnly 1166 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TYPES_ONLY ); 1167 1168 if ( attributeValue != null ) 1169 { 1170 if ( ( attributeValue.equals( DsmlLiterals.TRUE ) ) || ( "1".equals( attributeValue ) ) ) 1171 { 1172 searchRequest.setTypesOnly( true ); 1173 } 1174 else if ( ( attributeValue.equals( DsmlLiterals.FALSE ) ) || ( "0".equals( attributeValue ) ) ) 1175 { 1176 searchRequest.setTypesOnly( false ); 1177 } 1178 else 1179 { 1180 throw new XmlPullParserException( I18n.err( I18n.ERR_03032_TYPES_ONLY_NOT_BOOLEAN ), xpp, null ); 1181 } 1182 } 1183 else 1184 { 1185 searchRequest.setTypesOnly( false ); 1186 } 1187 } 1188 }; 1189 1190 /** 1191 * GrammarAction that adds an Attribute to a Search Request 1192 */ 1193 private final GrammarAction searchRequestAddAttribute = new GrammarAction( 1194 "Add Value to Modification of Modify Request" ) 1195 { 1196 /** 1197 * {@inheritDoc} 1198 */ 1199 @Override 1200 public void action( Dsmlv2Container container ) throws XmlPullParserException 1201 { 1202 SearchRequest searchRequest = ( SearchRequest ) container.getBatchRequest().getCurrentRequest(); 1203 1204 XmlPullParser xpp = container.getParser(); 1205 1206 // Checking and adding the request's attribute name 1207 String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1208 1209 if ( attributeName != null ) 1210 { 1211 searchRequest.addAttributes( attributeName ); 1212 } 1213 else 1214 { 1215 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1216 } 1217 } 1218 }; 1219 1220 /** 1221 * GrammarAction that create a Substring Filter 1222 */ 1223 private final GrammarAction substringsFilterCreation = new GrammarAction( "Create Substring Filter" ) 1224 { 1225 /** 1226 * {@inheritDoc} 1227 */ 1228 @Override 1229 public void action( Dsmlv2Container container ) throws XmlPullParserException 1230 { 1231 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1232 container.getBatchRequest().getCurrentRequest(); 1233 1234 XmlPullParser xpp = container.getParser(); 1235 1236 SubstringFilter filter = new SubstringFilter(); 1237 1238 // Adding the filter to the Search Filter 1239 try 1240 { 1241 searchRequestDecorator.addCurrentFilter( filter ); 1242 } 1243 catch ( DecoderException de ) 1244 { 1245 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1246 } 1247 1248 searchRequestDecorator.setTerminalFilter( filter ); 1249 1250 // Checking and adding the filter's attributes 1251 String attributeValue; 1252 // name 1253 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1254 1255 if ( attributeValue != null ) 1256 { 1257 filter.setType( attributeValue ); 1258 } 1259 else 1260 { 1261 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1262 } 1263 } 1264 }; 1265 1266 /** 1267 * GrammarAction that sets the Initial value to a Substring Filter 1268 */ 1269 private final GrammarAction substringsFilterSetInitial = new GrammarAction( "Set Initial value to Substring Filter" ) 1270 { 1271 /** 1272 * {@inheritDoc} 1273 */ 1274 @Override 1275 public void action( Dsmlv2Container container ) throws XmlPullParserException 1276 { 1277 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1278 container.getBatchRequest().getCurrentRequest(); 1279 1280 SubstringFilter substringFilter = ( SubstringFilter ) 1281 searchRequestDecorator.getTerminalFilter(); 1282 1283 XmlPullParser xpp = container.getParser(); 1284 1285 try 1286 { 1287 // We have to catch the type Attribute Value before going to the next Text node 1288 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 1289 1290 // Getting the value 1291 String nextText = xpp.nextText(); 1292 1293 if ( !Strings.isEmpty( nextText ) ) 1294 { 1295 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 1296 { 1297 substringFilter 1298 .setInitialSubstrings( Strings.utf8ToString( Base64.getDecoder().decode( nextText.trim() ) ) ); 1299 } 1300 else 1301 { 1302 substringFilter.setInitialSubstrings( nextText.trim() ); 1303 } 1304 } 1305 } 1306 catch ( IOException ioe ) 1307 { 1308 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 1309 } 1310 } 1311 }; 1312 1313 /** 1314 * GrammarAction that adds a Any value to a Substring Filter 1315 */ 1316 private final GrammarAction substringsFilterAddAny = new GrammarAction( "Add Any value to Substring Filter" ) 1317 { 1318 /** 1319 * {@inheritDoc} 1320 */ 1321 @Override 1322 public void action( Dsmlv2Container container ) throws XmlPullParserException 1323 { 1324 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1325 container.getBatchRequest().getCurrentRequest(); 1326 1327 SubstringFilter substringFilter = ( SubstringFilter ) searchRequestDecorator.getTerminalFilter(); 1328 1329 XmlPullParser xpp = container.getParser(); 1330 1331 try 1332 { 1333 // We have to catch the type Attribute Value before going to the next Text node 1334 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 1335 1336 // Getting the value 1337 String nextText = xpp.nextText(); 1338 1339 if ( !Strings.isEmpty( nextText ) ) 1340 { 1341 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 1342 { 1343 substringFilter.addAnySubstrings( Strings.utf8ToString( 1344 Base64.getDecoder().decode( nextText.trim() ) ) ); 1345 } 1346 else 1347 { 1348 substringFilter.addAnySubstrings( nextText.trim() ); 1349 } 1350 } 1351 } 1352 catch ( IOException ioe ) 1353 { 1354 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 1355 } 1356 } 1357 }; 1358 1359 /** 1360 * GrammarAction that sets the Final value to a Substring Filter 1361 */ 1362 private final GrammarAction substringsFilterSetFinal = new GrammarAction( "Set Final value to Substring Filter" ) 1363 { 1364 /** 1365 * {@inheritDoc} 1366 */ 1367 @Override 1368 public void action( Dsmlv2Container container ) throws XmlPullParserException 1369 { 1370 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1371 container.getBatchRequest().getCurrentRequest(); 1372 1373 SubstringFilter substringFilter = ( SubstringFilter ) searchRequestDecorator.getTerminalFilter(); 1374 1375 XmlPullParser xpp = container.getParser(); 1376 1377 try 1378 { 1379 // We have to catch the type Attribute Value before going to the next Text node 1380 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 1381 1382 // Getting the value 1383 String nextText = xpp.nextText(); 1384 1385 if ( !Strings.isEmpty( nextText ) ) 1386 { 1387 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 1388 { 1389 substringFilter 1390 .setFinalSubstrings( Strings.utf8ToString( 1391 Base64.getDecoder().decode( nextText.trim() ) ) ); 1392 } 1393 else 1394 { 1395 substringFilter.setFinalSubstrings( nextText.trim() ); 1396 } 1397 } 1398 } 1399 catch ( IOException ioe ) 1400 { 1401 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 1402 } 1403 } 1404 }; 1405 1406 /** 1407 * GrammarAction that closes a Substring Filter 1408 */ 1409 private final GrammarAction substringsFilterClose = new GrammarAction( "Close Substring Filter" ) 1410 { 1411 /** 1412 * {@inheritDoc} 1413 */ 1414 @Override 1415 public void action( Dsmlv2Container container ) throws XmlPullParserException 1416 { 1417 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1418 container.getBatchRequest().getCurrentRequest(); 1419 1420 searchRequestDecorator.setTerminalFilter( null ); 1421 } 1422 }; 1423 1424 /** 1425 * GrammarAction that create a And Filter 1426 */ 1427 private final GrammarAction andFilterCreation = new GrammarAction( "Create And Filter" ) 1428 { 1429 /** 1430 * {@inheritDoc} 1431 */ 1432 @Override 1433 public void action( Dsmlv2Container container ) throws XmlPullParserException 1434 { 1435 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1436 container.getBatchRequest().getCurrentRequest(); 1437 1438 XmlPullParser xpp = container.getParser(); 1439 1440 AndFilter filter = new AndFilter(); 1441 1442 // Adding the filter to the Search Filter 1443 try 1444 { 1445 searchRequestDecorator.addCurrentFilter( filter ); 1446 } 1447 catch ( DecoderException de ) 1448 { 1449 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1450 } 1451 } 1452 }; 1453 1454 /** 1455 * GrammarAction that closes a Connector Filter (And, Or, Not) 1456 */ 1457 private final GrammarAction connectorFilterClose = new GrammarAction( "Close Connector Filter" ) 1458 { 1459 /** 1460 * {@inheritDoc} 1461 */ 1462 @Override 1463 public void action( Dsmlv2Container container ) throws XmlPullParserException 1464 { 1465 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1466 container.getBatchRequest().getCurrentRequest(); 1467 1468 searchRequestDecorator.endCurrentConnectorFilter(); 1469 } 1470 }; 1471 1472 /** 1473 * GrammarAction that create a Or Filter 1474 */ 1475 private final GrammarAction orFilterCreation = new GrammarAction( "Create Or Filter" ) 1476 { 1477 /** 1478 * {@inheritDoc} 1479 */ 1480 @Override 1481 public void action( Dsmlv2Container container ) throws XmlPullParserException 1482 { 1483 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1484 container.getBatchRequest().getCurrentRequest(); 1485 1486 XmlPullParser xpp = container.getParser(); 1487 1488 OrFilter filter = new OrFilter(); 1489 1490 // Adding the filter to the Search Filter 1491 try 1492 { 1493 searchRequestDecorator.addCurrentFilter( filter ); 1494 } 1495 catch ( DecoderException de ) 1496 { 1497 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1498 } 1499 } 1500 }; 1501 1502 /** 1503 * GrammarAction that create a Not Filter 1504 */ 1505 private final GrammarAction notFilterCreation = new GrammarAction( "Create Not Filter" ) 1506 { 1507 /** 1508 * {@inheritDoc} 1509 */ 1510 @Override 1511 public void action( Dsmlv2Container container ) throws XmlPullParserException 1512 { 1513 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1514 container.getBatchRequest().getCurrentRequest(); 1515 1516 XmlPullParser xpp = container.getParser(); 1517 1518 NotFilter filter = new NotFilter(); 1519 1520 // Adding the filter to the Search Filter 1521 try 1522 { 1523 searchRequestDecorator.addCurrentFilter( filter ); 1524 } 1525 catch ( DecoderException de ) 1526 { 1527 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1528 } 1529 } 1530 }; 1531 1532 /** 1533 * GrammarAction that create a Equality Match Filter 1534 */ 1535 private final GrammarAction equalityMatchFilterCreation = new GrammarAction( "Create Equality Match Filter" ) 1536 { 1537 /** 1538 * {@inheritDoc} 1539 */ 1540 @Override 1541 public void action( Dsmlv2Container container ) throws XmlPullParserException 1542 { 1543 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1544 container.getBatchRequest().getCurrentRequest(); 1545 1546 XmlPullParser xpp = container.getParser(); 1547 1548 AttributeValueAssertion assertion = new AttributeValueAssertion(); 1549 1550 // Checking and adding the filter's attributes 1551 String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1552 1553 if ( attributeName != null ) 1554 { 1555 assertion.setAttributeDesc( attributeName ); 1556 } 1557 else 1558 { 1559 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1560 } 1561 1562 AttributeValueAssertionFilter filter = new AttributeValueAssertionFilter( 1563 LdapCodecConstants.EQUALITY_MATCH_FILTER ); 1564 1565 filter.setAssertion( assertion ); 1566 1567 // Adding the filter to the Search Filter 1568 try 1569 { 1570 searchRequestDecorator.addCurrentFilter( filter ); 1571 } 1572 catch ( DecoderException de ) 1573 { 1574 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1575 } 1576 1577 searchRequestDecorator.setTerminalFilter( filter ); 1578 } 1579 }; 1580 1581 /** 1582 * GrammarAction that create a Greater Or Equal Filter 1583 */ 1584 private final GrammarAction greaterOrEqualFilterCreation = new GrammarAction( "Create Greater Or Equal Filter" ) 1585 { 1586 /** 1587 * {@inheritDoc} 1588 */ 1589 @Override 1590 public void action( Dsmlv2Container container ) throws XmlPullParserException 1591 { 1592 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1593 container.getBatchRequest().getCurrentRequest(); 1594 1595 XmlPullParser xpp = container.getParser(); 1596 1597 AttributeValueAssertion assertion = new AttributeValueAssertion(); 1598 1599 // Checking and adding the filter's attributes 1600 String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1601 1602 if ( attributeName != null ) 1603 { 1604 assertion.setAttributeDesc( attributeName ); 1605 } 1606 else 1607 { 1608 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1609 } 1610 1611 AttributeValueAssertionFilter filter = new AttributeValueAssertionFilter( 1612 LdapCodecConstants.GREATER_OR_EQUAL_FILTER ); 1613 1614 filter.setAssertion( assertion ); 1615 1616 // Adding the filter to the Search Filter 1617 try 1618 { 1619 searchRequestDecorator.addCurrentFilter( filter ); 1620 } 1621 catch ( DecoderException de ) 1622 { 1623 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1624 } 1625 1626 searchRequestDecorator.setTerminalFilter( filter ); 1627 } 1628 }; 1629 1630 /** 1631 * GrammarAction that create a Less Or Equal Filter 1632 */ 1633 private final GrammarAction lessOrEqualFilterCreation = new GrammarAction( "Create Less Or Equal Filter" ) 1634 { 1635 /** 1636 * {@inheritDoc} 1637 */ 1638 @Override 1639 public void action( Dsmlv2Container container ) throws XmlPullParserException 1640 { 1641 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1642 container.getBatchRequest().getCurrentRequest(); 1643 1644 XmlPullParser xpp = container.getParser(); 1645 1646 AttributeValueAssertion assertion = new AttributeValueAssertion(); 1647 1648 // Checking and adding the filter's attributes 1649 String attributeValue; 1650 // name 1651 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1652 1653 if ( attributeValue != null ) 1654 { 1655 assertion.setAttributeDesc( attributeValue ); 1656 } 1657 else 1658 { 1659 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1660 } 1661 1662 AttributeValueAssertionFilter filter = new AttributeValueAssertionFilter( 1663 LdapCodecConstants.LESS_OR_EQUAL_FILTER ); 1664 1665 filter.setAssertion( assertion ); 1666 1667 // Adding the filter to the Search Filter 1668 try 1669 { 1670 searchRequestDecorator.addCurrentFilter( filter ); 1671 } 1672 catch ( DecoderException de ) 1673 { 1674 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1675 } 1676 1677 searchRequestDecorator.setTerminalFilter( filter ); 1678 } 1679 }; 1680 1681 /** 1682 * GrammarAction that create an Approx Match Filter 1683 */ 1684 private final GrammarAction approxMatchFilterCreation = new GrammarAction( "Create Approx Match Filter" ) 1685 { 1686 /** 1687 * {@inheritDoc} 1688 */ 1689 @Override 1690 public void action( Dsmlv2Container container ) throws XmlPullParserException 1691 { 1692 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1693 container.getBatchRequest().getCurrentRequest(); 1694 1695 XmlPullParser xpp = container.getParser(); 1696 1697 AttributeValueAssertion assertion = new AttributeValueAssertion(); 1698 1699 // Checking and adding the filter's attributes 1700 String attributeName = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1701 1702 if ( attributeName != null ) 1703 { 1704 assertion.setAttributeDesc( attributeName ); 1705 } 1706 else 1707 { 1708 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1709 } 1710 1711 AttributeValueAssertionFilter filter = new AttributeValueAssertionFilter( 1712 LdapCodecConstants.APPROX_MATCH_FILTER ); 1713 1714 filter.setAssertion( assertion ); 1715 1716 // Adding the filter to the Search Filter 1717 try 1718 { 1719 searchRequestDecorator.addCurrentFilter( filter ); 1720 } 1721 catch ( DecoderException de ) 1722 { 1723 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1724 } 1725 1726 searchRequestDecorator.setTerminalFilter( filter ); 1727 } 1728 }; 1729 1730 /** 1731 * GrammarAction that adds a Value to a Filter 1732 */ 1733 private final GrammarAction filterAddValue = new GrammarAction( "Adds Value to Filter" ) 1734 { 1735 /** 1736 * {@inheritDoc} 1737 */ 1738 @Override 1739 public void action( Dsmlv2Container container ) throws XmlPullParserException 1740 { 1741 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1742 container.getBatchRequest().getCurrentRequest(); 1743 AttributeValueAssertionFilter filter = ( AttributeValueAssertionFilter ) searchRequestDecorator 1744 .getTerminalFilter(); 1745 AttributeValueAssertion assertion = filter.getAssertion(); 1746 1747 XmlPullParser xpp = container.getParser(); 1748 1749 try 1750 { 1751 // We have to catch the type Attribute Value before going to the next Text node 1752 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 1753 1754 // Getting the value 1755 String nextText = xpp.nextText(); 1756 1757 if ( !Strings.isEmpty( nextText ) ) 1758 { 1759 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 1760 { 1761 Value value = new Value( Base64.getDecoder().decode( nextText.trim() ) ); 1762 assertion.setAssertionValue( value ); 1763 } 1764 else 1765 { 1766 Value value = new Value( nextText.trim() ); 1767 assertion.setAssertionValue( value ); 1768 } 1769 } 1770 } 1771 catch ( IOException ioe ) 1772 { 1773 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 1774 } 1775 } 1776 }; 1777 1778 /** 1779 * GrammarAction that creates a Present Filter 1780 */ 1781 private final GrammarAction presentFilterCreation = new GrammarAction( "Create Present Filter" ) 1782 { 1783 /** 1784 * {@inheritDoc} 1785 */ 1786 @Override 1787 public void action( Dsmlv2Container container ) throws XmlPullParserException 1788 { 1789 PresentFilter presentFilter = new PresentFilter(); 1790 1791 XmlPullParser xpp = container.getParser(); 1792 1793 // Adding the filter to the Search Filter 1794 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1795 container.getBatchRequest().getCurrentRequest(); 1796 1797 try 1798 { 1799 searchRequestDecorator.addCurrentFilter( presentFilter ); 1800 } 1801 catch ( DecoderException de ) 1802 { 1803 throw new XmlPullParserException( de.getMessage(), xpp, de ); 1804 } 1805 1806 // Checking and adding the filter's attributes 1807 String attributeValue; 1808 // name 1809 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1810 1811 if ( attributeValue != null ) 1812 { 1813 presentFilter.setAttributeDescription( attributeValue ); 1814 } 1815 else 1816 { 1817 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, null ); 1818 } 1819 } 1820 }; 1821 1822 /** 1823 * GrammarAction that store the Filter into the searchRequest 1824 */ 1825 private final GrammarAction storeFilter = new GrammarAction( "Store Filter" ) 1826 { 1827 /** 1828 * {@inheritDoc} 1829 */ 1830 @Override 1831 public void action( Dsmlv2Container container ) throws XmlPullParserException 1832 { 1833 // Adding the filter to the Search Filter 1834 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1835 container.getBatchRequest().getCurrentRequest(); 1836 SearchRequest searchRequest = searchRequestDecorator.getDecorated(); 1837 1838 try 1839 { 1840 ExprNode exprNode = searchRequestDecorator.getFilterNode(); 1841 1842 if ( exprNode == null ) 1843 { 1844 throw new IllegalStateException( I18n.err( I18n.ERR_03041_NO_FILTER_ELEMENT ) ); 1845 } 1846 1847 searchRequest.setFilter( exprNode ); 1848 } 1849 catch ( LdapSchemaException lse ) 1850 { 1851 1852 } 1853 } 1854 }; 1855 1856 /** 1857 * GrammarAction that creates an Extensible Match Filter 1858 */ 1859 private final GrammarAction extensibleMatchFilterCreation = new GrammarAction( "Create Extensible Match Filter" ) 1860 { 1861 /** 1862 * {@inheritDoc} 1863 */ 1864 @Override 1865 public void action( Dsmlv2Container container ) throws XmlPullParserException 1866 { 1867 ExtensibleMatchFilter extensibleMatchFilter = new ExtensibleMatchFilter(); 1868 1869 XmlPullParser xpp = container.getParser(); 1870 1871 // Adding the filter to the Search Filter 1872 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1873 container.getBatchRequest().getCurrentRequest(); 1874 1875 try 1876 { 1877 searchRequestDecorator.addCurrentFilter( extensibleMatchFilter ); 1878 } 1879 catch ( DecoderException de ) 1880 { 1881 throw new XmlPullParserException( I18n.err( I18n.ERR_03002_NAME_ATTRIBUTE_REQUIRED ), xpp, de ); 1882 } 1883 1884 searchRequestDecorator.setTerminalFilter( extensibleMatchFilter ); 1885 1886 // Checking and adding the filter's attributes 1887 String attributeValue; 1888 // dnAttributes 1889 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.DN_ATTRIBUTES ); 1890 1891 if ( attributeValue != null ) 1892 { 1893 if ( ( attributeValue.equals( DsmlLiterals.TRUE ) ) || ( "1".equals( attributeValue ) ) ) 1894 { 1895 extensibleMatchFilter.setDnAttributes( true ); 1896 } 1897 else if ( ( attributeValue.equals( DsmlLiterals.FALSE ) ) || ( "0".equals( attributeValue ) ) ) 1898 { 1899 extensibleMatchFilter.setDnAttributes( false ); 1900 } 1901 else 1902 { 1903 throw new XmlPullParserException( I18n.err( I18n.ERR_03033_DN_ATTRIBUTES_NOT_BOOLEAN ), xpp, null ); 1904 } 1905 } 1906 else 1907 { 1908 extensibleMatchFilter.setDnAttributes( false ); 1909 } 1910 1911 // matchingRule 1912 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.MATCHING_RULE ); 1913 1914 if ( attributeValue != null ) 1915 { 1916 extensibleMatchFilter.setMatchingRule( attributeValue ); 1917 } 1918 1919 // name 1920 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.NAME ); 1921 1922 if ( attributeValue != null ) 1923 { 1924 extensibleMatchFilter.setType( attributeValue ); 1925 } 1926 } 1927 }; 1928 1929 /** 1930 * GrammarAction that adds a Value to an Extensible Match Filter 1931 */ 1932 private final GrammarAction extensibleMatchAddValue = new GrammarAction( "Adds Value to Extensible MatchFilter" ) 1933 { 1934 /** 1935 * {@inheritDoc} 1936 */ 1937 @Override 1938 public void action( Dsmlv2Container container ) throws XmlPullParserException 1939 { 1940 SearchRequestDsml searchRequestDecorator = ( SearchRequestDsml ) 1941 container.getBatchRequest().getCurrentRequest(); 1942 ExtensibleMatchFilter filter = ( ExtensibleMatchFilter ) searchRequestDecorator.getTerminalFilter(); 1943 1944 XmlPullParser xpp = container.getParser(); 1945 1946 try 1947 { 1948 // We have to catch the type Attribute Value before going to the next Text node 1949 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 1950 1951 // Getting the value 1952 String nextText = xpp.nextText(); 1953 1954 if ( !Strings.isEmpty( nextText ) ) 1955 { 1956 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 1957 { 1958 filter.setMatchValue( new Value( Base64.getDecoder().decode( nextText.trim() ) ) ); 1959 } 1960 else 1961 { 1962 filter.setMatchValue( new Value( nextText.trim() ) ); 1963 } 1964 } 1965 } 1966 catch ( IOException ioe ) 1967 { 1968 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 1969 } 1970 } 1971 }; 1972 1973 /** 1974 * GrammarAction that creates a Control 1975 */ 1976 private final GrammarAction controlCreation = new GrammarAction( "Create Control" ) 1977 { 1978 /** 1979 * {@inheritDoc} 1980 */ 1981 @Override 1982 public void action( Dsmlv2Container container ) throws XmlPullParserException 1983 { 1984 XmlPullParser xpp = container.getParser(); 1985 Control control; 1986 1987 // Checking and adding the Control's attributes 1988 String attributeValue; 1989 1990 // TYPE 1991 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.TYPE ); 1992 1993 if ( attributeValue != null ) 1994 { 1995 if ( !Oid.isOid( attributeValue ) ) 1996 { 1997 throw new XmlPullParserException( I18n.err( I18n.ERR_03034_INCORRECT_TYPE_VALUE ), xpp, null ); 1998 } 1999 2000 ControlFactory<? extends Control> factory = codec.getRequestControlFactories().get( attributeValue ); 2001 2002 if ( factory == null ) 2003 { 2004 control = new OpaqueControl( attributeValue ); 2005 } 2006 else 2007 { 2008 control = factory.newControl(); 2009 } 2010 2011 ( ( Request ) container.getBatchRequest().getCurrentRequest() ).addControl( control ); 2012 } 2013 else 2014 { 2015 throw new XmlPullParserException( I18n.err( I18n.ERR_03035_TYPE_ATTRIBUTE_REQUIRED ), xpp, null ); 2016 } 2017 2018 // CRITICALITY 2019 attributeValue = xpp.getAttributeValue( Strings.EMPTY_STRING, DsmlLiterals.CRITICALITY ); 2020 2021 if ( attributeValue != null ) 2022 { 2023 if ( attributeValue.equals( DsmlLiterals.TRUE ) ) 2024 { 2025 control.setCritical( true ); 2026 } 2027 else if ( attributeValue.equals( DsmlLiterals.FALSE ) ) 2028 { 2029 control.setCritical( false ); 2030 } 2031 else 2032 { 2033 throw new XmlPullParserException( I18n.err( I18n.ERR_03007_INCORRECT_CRITICALITY_VALUE ), xpp, null ); 2034 } 2035 } 2036 } 2037 }; 2038 2039 /** 2040 * GrammarAction that adds a Value to a Control 2041 */ 2042 private final GrammarAction controlValueCreation = new GrammarAction( "Add ControlValue to Control" ) 2043 { 2044 /** 2045 * {@inheritDoc} 2046 */ 2047 @Override 2048 public void action( Dsmlv2Container container ) throws XmlPullParserException 2049 { 2050 AbstractRequestDsml<? extends Request> request = 2051 ( AbstractRequestDsml<? extends Request> ) container.getBatchRequest().getCurrentRequest(); 2052 DsmlControl<? extends Control> control = request.getCurrentControl(); 2053 2054 XmlPullParser xpp = container.getParser(); 2055 2056 try 2057 { 2058 // We have to catch the type Attribute Value before going to the next Text node 2059 String typeValue = ParserUtils.getXsiTypeAttributeValue( xpp ); 2060 2061 // Getting the value 2062 String nextText = xpp.nextText(); 2063 2064 if ( !Strings.isEmpty( nextText ) ) 2065 { 2066 if ( ParserUtils.isBase64BinaryValue( xpp, typeValue ) ) 2067 { 2068 control.setValue( Base64.getDecoder().decode( nextText.trim() ) ); 2069 } 2070 else 2071 { 2072 control.setValue( Strings.getBytesUtf8( nextText.trim() ) ); 2073 } 2074 } 2075 } 2076 catch ( IOException ioe ) 2077 { 2078 throw new XmlPullParserException( I18n.err( I18n.ERR_03008_UNEXPECTED_ERROR, ioe.getMessage() ), xpp, ioe ); 2079 } 2080 } 2081 }; 2082 2083 2084 /** 2085 * Creates a new instance of Dsmlv2Grammar. 2086 */ 2087 @SuppressWarnings("unchecked") 2088 public Dsmlv2Grammar() 2089 { 2090 name = Dsmlv2Grammar.class.getName(); 2091 2092 // Create the transitions table 2093 super.transitions = ( HashMap<Tag, GrammarTransition>[] ) Array.newInstance( HashMap.class, 200 ); 2094 2095 //==================================================== 2096 // Transitions concerning : BATCH REQUEST 2097 //==================================================== 2098 super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2099 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2100 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2101 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2102 2103 // ** OPEN BATCH REQUEST ** 2104 // State: [INIT_GRAMMAR_STATE] - Tag: <batchRequest> 2105 super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.START ), 2106 new GrammarTransition( Dsmlv2StatesEnum.INIT_GRAMMAR_STATE, Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, 2107 batchRequestCreation ) ); 2108 2109 // ** CLOSE BATCH REQUEST ** 2110 // state: [BATCHREQUEST_START_TAG] - Tag: </batchRequest> 2111 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()] 2112 .put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, 2113 Dsmlv2StatesEnum.BATCHREQUEST_END_TAG, null ) ); 2114 //state: [BATCHREQUEST_LOOP] - Tag: </batchRequest> 2115 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.END ), 2116 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.GRAMMAR_END, null ) ); 2117 2118 // ** ABANDON REQUEST ** 2119 // State: [BATCHREQUEST_START_TAG] - Tag: <abandonRequest> 2120 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( 2121 new Tag( DsmlLiterals.ABANDON_REQUEST, Tag.START ), 2122 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG, 2123 abandonRequestCreation ) ); 2124 // state: [BATCHREQUEST_LOOP] - Tag: <abandonRequest> 2125 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.ABANDON_REQUEST, Tag.START ), 2126 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG, 2127 abandonRequestCreation ) ); 2128 2129 // ** ADD REQUEST ** 2130 // state: [BATCHREQUEST_START_TAG] - Tag: <addRequest> 2131 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.START ), 2132 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, 2133 addRequestCreation ) ); 2134 // state: [BATCHREQUEST_LOOP] - Tag: <addRequest> 2135 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.START ), 2136 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, 2137 addRequestCreation ) ); 2138 2139 // ** AUTH REQUEST ** 2140 // state: [BATCHREQUEST_START_TAG] - Tag: <authRequest> 2141 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.AUTH_REQUEST, Tag.START ), 2142 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG, 2143 authRequestCreation ) ); 2144 2145 // ** COMPARE REQUEST ** 2146 // state: [BATCHREQUEST_START_TAG] - Tag: <compareRequest> 2147 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( 2148 new Tag( DsmlLiterals.COMPARE_REQUEST, Tag.START ), 2149 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG, 2150 compareRequestCreation ) ); 2151 // state: [BATCHREQUEST_LOOP] - Tag: <compareRequest> 2152 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.COMPARE_REQUEST, Tag.START ), 2153 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG, 2154 compareRequestCreation ) ); 2155 2156 // ** DEL REQUEST ** 2157 // state: [BATCHREQUEST_START_TAG] - Tag: <delRequest> 2158 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.DEL_REQUEST, Tag.START ), 2159 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.DEL_REQUEST_START_TAG, 2160 delRequestCreation ) ); 2161 // state: [BATCHREQUEST_LOOP] - Tag: <delRequest> 2162 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.DEL_REQUEST, Tag.START ), 2163 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.DEL_REQUEST_START_TAG, 2164 delRequestCreation ) ); 2165 2166 // ** EXTENDED REQUEST ** 2167 // state: [BATCHREQUEST_START_TAG] - Tag: <extendedRequest> 2168 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( 2169 new Tag( DsmlLiterals.EXTENDED_REQUEST, Tag.START ), 2170 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, 2171 Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG, extendedRequestCreation ) ); 2172 // state: [BATCHREQUEST_LOOP] - Tag: <extendedRequest> 2173 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.EXTENDED_REQUEST, Tag.START ), 2174 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG, 2175 extendedRequestCreation ) ); 2176 2177 // ** MOD Dn REQUEST ** 2178 // state: [BATCHREQUEST_START_TAG] - Tag: <modDNRequest> 2179 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_REQUEST, Tag.START ), 2180 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, 2181 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG, modDNRequestCreation ) ); 2182 // state: [BATCHREQUEST_LOOP] - Tag: <modDNRequest> 2183 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_REQUEST, Tag.START ), 2184 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG, 2185 modDNRequestCreation ) ); 2186 2187 // ** MODIFY REQUEST ** 2188 // state: [BATCHREQUEST_START_TAG] - Tag: <modifyRequest> 2189 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( 2190 new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.START ), 2191 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG, 2192 modifyRequestCreation ) ); 2193 // state: [BATCHREQUEST_LOOP] - Tag: <modifyRequest> 2194 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.START ), 2195 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG, 2196 modifyRequestCreation ) ); 2197 2198 // ** SEARCH REQUEST ** 2199 // state: [BATCHREQUEST_START_TAG] - Tag: <searchRequest> 2200 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_START_TAG.ordinal()].put( 2201 new Tag( DsmlLiterals.SEARCH_REQUEST, Tag.START ), 2202 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG, 2203 searchRequestCreation ) ); 2204 // state: [BATCHREQUEST_LOOP] - Tag: <searchRequest> 2205 super.transitions[Dsmlv2StatesEnum.BATCHREQUEST_LOOP.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST, Tag.START ), 2206 new GrammarTransition( Dsmlv2StatesEnum.BATCHREQUEST_LOOP, Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG, 2207 searchRequestCreation ) ); 2208 2209 //==================================================== 2210 // Transitions concerning : ABANDON REQUEST 2211 //==================================================== 2212 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2213 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2214 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2215 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2216 2217 // State: [ABANDON_REQUEST_START_TAG] - Tag: </abandonRequest> 2218 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG.ordinal()] 2219 .put( new Tag( DsmlLiterals.ABANDON_REQUEST, Tag.END ), new GrammarTransition( 2220 Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2221 2222 // State: [ABANDON_REQUEST_START_TAG] - Tag: <control> 2223 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2224 new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_START_TAG, 2225 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2226 2227 // State: [ABANDON_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2228 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG.ordinal()].put( 2229 new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition( 2230 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG, 2231 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2232 2233 // State: [ABANDON_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2234 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2235 Tag.END ), 2236 new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROLVALUE_END_TAG, 2237 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG, null ) ); 2238 2239 // State: [ABANDON_REQUEST_CONTROL_START_TAG] - Tag: </control> 2240 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2241 Tag.END ), 2242 new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG, 2243 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG, null ) ); 2244 2245 // State: [ABANDON_REQUEST_CONTROL_END_TAG] - Tag: <control> 2246 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2247 Tag.START ), 2248 new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG, 2249 Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2250 2251 // State: [ABANDON_REQUEST_CONTROL_END_TAG] - Tag: </abandonRequest> 2252 super.transitions[Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ABANDON_REQUEST, 2253 Tag.END ), 2254 new GrammarTransition( Dsmlv2StatesEnum.ABANDON_REQUEST_CONTROL_END_TAG, 2255 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2256 2257 //==================================================== 2258 // Transitions concerning : ADD REQUEST 2259 //==================================================== 2260 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2261 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2262 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2263 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2264 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2265 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2266 2267 // state: [ADD_REQUEST_START_TAG] -> Tag: </addRequest> 2268 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.END ), 2269 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2270 2271 // State: [ADD_REQUEST_START_TAG] - Tag: <control> 2272 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2273 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, 2274 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2275 2276 // State: [ADD_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2277 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE, 2278 Tag.START ), 2279 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG, 2280 Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2281 2282 // State: [ADD_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2283 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( 2284 new Tag( DsmlLiterals.CONTROL, Tag.END ), 2285 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROLVALUE_END_TAG, 2286 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, null ) ); 2287 2288 // State: [ADD_REQUEST_CONTROL_START_TAG] - Tag: </control> 2289 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.END ), 2290 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG, 2291 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, null ) ); 2292 2293 // State: [ADD_REQUEST_CONTROL_END_TAG] - Tag: <control> 2294 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2295 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, 2296 Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2297 2298 // State: [ADD_REQUEST_CONTROL_END_TAG] - Tag: </addRequest> 2299 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( 2300 new Tag( DsmlLiterals.ADD_REQUEST, Tag.END ), 2301 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 2302 null ) ); 2303 2304 // State: [ADD_REQUEST_START_TAG] - Tag: <attr> 2305 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ), 2306 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_START_TAG, Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, 2307 addRequestAddAttribute ) ); 2308 2309 // State: [ADD_REQUEST_CONTROL_END_TAG] - Tag: <attr> 2310 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ), 2311 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_CONTROL_END_TAG, 2312 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, addRequestAddAttribute ) ); 2313 2314 // State: [ADD_REQUEST_ATTR_END_TAG] - Tag: <attr> 2315 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.START ), 2316 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG, 2317 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, addRequestAddAttribute ) ); 2318 2319 // State: [ADD_REQUEST_ATTR_START_TAG] - Tag: </attr> 2320 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTR, Tag.END ), 2321 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, 2322 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG, null ) ); 2323 2324 // State: [ADD_REQUEST_ATTR_START_TAG] - Tag: <value> 2325 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, Tag.START ), 2326 new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, 2327 Dsmlv2StatesEnum.ADD_REQUEST_ATTR_START_TAG, addRequestAddValue ) ); 2328 2329 // State: [ADD_REQUEST_ATTR_END_TAG] - Tag: </addRequest> 2330 super.transitions[Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG.ordinal()] 2331 .put( new Tag( DsmlLiterals.ADD_REQUEST, Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.ADD_REQUEST_ATTR_END_TAG, 2332 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2333 2334 //==================================================== 2335 // Transitions concerning : AUTH REQUEST 2336 //==================================================== 2337 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2338 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2339 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2340 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2341 2342 // state: [AUTH_REQUEST_START_TAG] -> Tag: </authRequest> 2343 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.AUTH_REQUEST, Tag.END ), 2344 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2345 2346 // State: [AUTH_REQUEST_START_TAG] - Tag: <control> 2347 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2348 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_START_TAG, 2349 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2350 2351 // State: [AUTH_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2352 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE, 2353 Tag.START ), 2354 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG, 2355 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2356 2357 // State: [AUTH_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2358 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2359 Tag.END ), 2360 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROLVALUE_END_TAG, 2361 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, null ) ); 2362 2363 // State: [AUTH_REQUEST_CONTROL_START_TAG] - Tag: </control> 2364 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG.ordinal()].put( 2365 new Tag( DsmlLiterals.CONTROL, Tag.END ), 2366 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG, 2367 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, null ) ); 2368 2369 // State: [AUTH_REQUEST_CONTROL_END_TAG] - Tag: <control> 2370 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG.ordinal()].put( 2371 new Tag( DsmlLiterals.CONTROL, Tag.START ), 2372 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, 2373 Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2374 2375 // State: [AUTH_REQUEST_CONTROL_END_TAG] - Tag: </authRequest> 2376 super.transitions[Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG.ordinal()].put( 2377 new Tag( DsmlLiterals.AUTH_REQUEST, Tag.END ), 2378 new GrammarTransition( Dsmlv2StatesEnum.AUTH_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 2379 null ) ); 2380 2381 //==================================================== 2382 // Transitions concerning : COMPARE REQUEST 2383 //==================================================== 2384 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2385 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2386 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2387 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2388 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2389 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2390 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2391 2392 // State: [COMPARE_REQUEST_START_TAG] - Tag: <control> 2393 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2394 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG, 2395 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2396 2397 // State: [COMPARE_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2398 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG.ordinal()].put( 2399 new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition( 2400 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, 2401 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2402 2403 // State: [COMPARE_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2404 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2405 Tag.END ), 2406 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROLVALUE_END_TAG, 2407 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, null ) ); 2408 2409 // State: [COMPARE_REQUEST_CONTROL_START_TAG] - Tag: </control> 2410 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2411 Tag.END ), 2412 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, 2413 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, null ) ); 2414 2415 // State: [COMPARE_REQUEST_CONTROL_END_TAG] - Tag: <control> 2416 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2417 Tag.START ), 2418 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, 2419 Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2420 2421 // State: [COMPARE_REQUEST_CONTROL_END_TAG] - Tag: </compareRequest> 2422 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.COMPARE_REQUEST, 2423 Tag.END ), 2424 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, 2425 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2426 2427 // State: [COMPARE_REQUEST_START_TAG] - Tag: <assertion> 2428 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ASSERTION, Tag.START ), 2429 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_START_TAG, 2430 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG, compareRequestAddAssertion ) ); 2431 2432 // State: [COMPARE_REQUEST_CONTROL_END_TAG] - Tag: <assertion> 2433 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ASSERTION, 2434 Tag.START ), 2435 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_CONTROL_END_TAG, 2436 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG, compareRequestAddAssertion ) ); 2437 2438 // State: [COMPARE_REQUEST_ASSERTION_START_TAG] - Tag: <value> 2439 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, 2440 Tag.START ), 2441 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_START_TAG, 2442 Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG, compareRequestAddValue ) ); 2443 2444 //State: [COMPARE_REQUEST_VALUE_END_TAG] - Tag: </assertion> 2445 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG.ordinal()].put( 2446 new Tag( DsmlLiterals.ASSERTION, Tag.END ), 2447 new GrammarTransition( Dsmlv2StatesEnum.COMPARE_REQUEST_VALUE_END_TAG, 2448 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG, null ) ); 2449 2450 // State: [COMPARE_REQUEST_ASSERTION_END_TAG] - Tag: </compareRequest> 2451 super.transitions[Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG.ordinal()].put( 2452 new Tag( DsmlLiterals.COMPARE_REQUEST, Tag.END ), new GrammarTransition( 2453 Dsmlv2StatesEnum.COMPARE_REQUEST_ASSERTION_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2454 2455 //==================================================== 2456 // Transitions concerning : DEL REQUEST 2457 //==================================================== 2458 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2459 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2460 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2461 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2462 2463 // State: [DEL_REQUEST_START_TAG] - Tag: </delRequest> 2464 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.DEL_REQUEST, Tag.END ), 2465 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2466 2467 // State: [DEL_REQUEST_START_TAG] - Tag: <control> 2468 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2469 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_START_TAG, 2470 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2471 2472 // State: [DEL_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2473 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE, 2474 Tag.START ), 2475 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG, 2476 Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2477 2478 // State: [DEL_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2479 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( 2480 new Tag( DsmlLiterals.CONTROL, Tag.END ), 2481 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROLVALUE_END_TAG, 2482 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, null ) ); 2483 2484 // State: [DEL_REQUEST_CONTROL_START_TAG] - Tag: </control> 2485 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.END ), 2486 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG, 2487 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, null ) ); 2488 2489 // State: [DEL_REQUEST_CONTROL_END_TAG] - Tag: <control> 2490 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2491 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, 2492 Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2493 2494 // State: [DEL_REQUEST_CONTROL_END_TAG] - Tag: </delRequest> 2495 super.transitions[Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG.ordinal()].put( 2496 new Tag( DsmlLiterals.DEL_REQUEST, Tag.END ), 2497 new GrammarTransition( Dsmlv2StatesEnum.DEL_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 2498 null ) ); 2499 2500 //==================================================== 2501 // Transitions concerning : EXTENDED REQUEST 2502 //==================================================== 2503 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2504 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2505 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2506 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2507 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2508 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2509 2510 // State: [EXTENDED_REQUEST_START_TAG] - Tag: <control> 2511 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2512 new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG, 2513 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2514 2515 // State: [EXTENDED_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2516 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG.ordinal()].put( 2517 new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition( 2518 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG, 2519 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2520 2521 // State: [EXTENDED_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2522 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2523 Tag.END ), 2524 new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROLVALUE_END_TAG, 2525 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, null ) ); 2526 2527 // State: [EXTENDED_REQUEST_CONTROL_START_TAG] - Tag: </control> 2528 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2529 Tag.END ), 2530 new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG, 2531 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, null ) ); 2532 2533 // State: [EXTENDED_REQUEST_CONTROL_END_TAG] - Tag: <control> 2534 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2535 Tag.START ), 2536 new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, 2537 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2538 2539 // State: [EXTENDED_REQUEST_CONTROL_END_TAG] - Tag: </extendedRequest> 2540 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( 2541 new Tag( DsmlLiterals.EXTENDED_REQUEST, Tag.END ), new GrammarTransition( 2542 Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2543 2544 // State: [EXTENDED_REQUEST_START_TAG] - Tag: <requestName> 2545 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG.ordinal()].put( 2546 new Tag( DsmlLiterals.REQUEST_NAME, Tag.START ), 2547 new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_START_TAG, 2548 Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG, extendedRequestAddName ) ); 2549 2550 // State: [EXTENDED_REQUEST_CONTROL_END_TAG] - Tag: <requestName> 2551 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.REQUEST_NAME, 2552 Tag.START ), 2553 new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_CONTROL_END_TAG, 2554 Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG, extendedRequestAddName ) ); 2555 2556 // State: [EXTENDED_REQUEST_REQUESTNAME_END_TAG] - Tag: </extendedRequest> 2557 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG.ordinal()].put( new Tag( 2558 DsmlLiterals.EXTENDED_REQUEST, 2559 Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG, 2560 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2561 2562 // State: [EXTENDED_REQUEST_REQUESTNAME_END_TAG] - Tag: <requestValue> 2563 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG.ordinal()].put( new Tag( 2564 DsmlLiterals.REQUEST_VALUE, 2565 Tag.START ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTNAME_END_TAG, 2566 Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG, extendedRequestAddValue ) ); 2567 2568 // State: [EXTENDED_REQUEST_REQUESTVALUE_END_TAG] - Tag: </requestRequest> 2569 super.transitions[Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG.ordinal()].put( new Tag( 2570 DsmlLiterals.EXTENDED_REQUEST, 2571 Tag.END ), new GrammarTransition( Dsmlv2StatesEnum.EXTENDED_REQUEST_REQUESTVALUE_END_TAG, 2572 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2573 2574 //==================================================== 2575 // Transitions concerning : MODIFY Dn REQUEST 2576 //==================================================== 2577 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2578 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2579 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2580 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2581 2582 // State: [MODIFY_DN_REQUEST_START_TAG] - Tag: </modDNRequest> 2583 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG.ordinal()].put( 2584 new Tag( DsmlLiterals.MOD_DN_REQUEST, Tag.END ), 2585 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 2586 null ) ); 2587 2588 // State: [MODIFY_DN_REQUEST_START_TAG] - Tag: <control> 2589 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2590 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_START_TAG, 2591 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2592 2593 // State: [MODIFY_DN_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2594 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG.ordinal()].put( 2595 new Tag( DsmlLiterals.CONTROL_VALUE, Tag.START ), new GrammarTransition( 2596 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG, 2597 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2598 2599 // State: [MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2600 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2601 Tag.END ), 2602 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROLVALUE_END_TAG, 2603 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG, null ) ); 2604 2605 // State: [MODIFY_DN_REQUEST_CONTROL_START_TAG] - Tag: </control> 2606 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2607 Tag.END ), 2608 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG, 2609 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG, null ) ); 2610 2611 // State: [MODIFY_DN_REQUEST_CONTROL_END_TAG] - Tag: <control> 2612 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2613 Tag.START ), 2614 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG, 2615 Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2616 2617 // State: [MODIFY_DN_REQUEST_CONTROL_END_TAG] - Tag: </modDNRequest> 2618 super.transitions[Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MOD_DN_REQUEST, 2619 Tag.END ), 2620 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_DN_REQUEST_CONTROL_END_TAG, 2621 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2622 2623 //==================================================== 2624 // Transitions concerning : MODIFY REQUEST 2625 //==================================================== 2626 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2627 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2628 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2629 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2630 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2631 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2632 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2633 2634 // State: [MODIFY_REQUEST_START_TAG] - Tag: </modifyRequest> 2635 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()] 2636 .put( new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.END ), new GrammarTransition( 2637 Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2638 2639 // State: [MODIFY_REQUEST_START_TAG] - Tag: <control> 2640 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2641 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG, 2642 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2643 2644 // State: [MODIFY_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2645 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE, 2646 Tag.START ), 2647 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG, 2648 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2649 2650 // State: [MODIFY_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2651 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2652 Tag.END ), 2653 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROLVALUE_END_TAG, 2654 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, null ) ); 2655 2656 // State: [MODIFY_REQUEST_CONTROL_START_TAG] - Tag: </control> 2657 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG.ordinal()].put( 2658 new Tag( DsmlLiterals.CONTROL, Tag.END ), 2659 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG, 2660 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, null ) ); 2661 2662 // State: [MODIFY_REQUEST_CONTROL_END_TAG] - Tag: <control> 2663 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( 2664 new Tag( DsmlLiterals.CONTROL, Tag.START ), 2665 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, 2666 Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2667 2668 // State: [MODIFY_REQUEST_CONTROL_END_TAG] - Tag: </modifyRequest> 2669 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MODIFY_REQUEST, 2670 Tag.END ), 2671 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 2672 null ) ); 2673 2674 // State: [MODIFY_REQUEST_CONTROL_END_TAG] - Tag: <modification> 2675 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MODIFICATION, 2676 Tag.START ), 2677 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_CONTROL_END_TAG, 2678 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, modifyRequestAddModification ) ); 2679 2680 // State: [MODIFY_REQUEST_START_TAG] - Tag: <modification> 2681 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG.ordinal()].put( 2682 new Tag( DsmlLiterals.MODIFICATION, Tag.START ), 2683 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_START_TAG, 2684 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, modifyRequestAddModification ) ); 2685 2686 // State: [MODIFY_REQUEST_MODIFICATION_END_TAG] - Tag: <modification> 2687 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG.ordinal()].put( 2688 new Tag( DsmlLiterals.MODIFICATION, Tag.START ), new GrammarTransition( 2689 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, 2690 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, modifyRequestAddModification ) ); 2691 2692 // State: [MODIFY_REQUEST_MODIFICATION_START_TAG] - Tag: </modification> 2693 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG.ordinal()].put( 2694 new Tag( DsmlLiterals.MODIFICATION, Tag.END ), new GrammarTransition( 2695 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, 2696 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, null ) ); 2697 2698 // State: [MODIFY_REQUEST_MODIFICATION_START_TAG] - Tag: <value> 2699 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, 2700 Tag.START ), 2701 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_START_TAG, 2702 Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG, modifyRequestAddValue ) ); 2703 2704 // State: [MODIFY_REQUEST_VALUE_END_TAG] - Tag: <value> 2705 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, Tag.START ), 2706 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG, 2707 Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG, modifyRequestAddValue ) ); 2708 2709 // State: [MODIFY_REQUEST_VALUE_END_TAG] - Tag: </modification> 2710 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.MODIFICATION, 2711 Tag.END ), 2712 new GrammarTransition( Dsmlv2StatesEnum.MODIFY_REQUEST_VALUE_END_TAG, 2713 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, null ) ); 2714 2715 // State: [MODIFY_REQUEST_MODIFICATION_END_TAG] - Tag: </modifyRequest> 2716 super.transitions[Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG.ordinal()].put( 2717 new Tag( DsmlLiterals.MODIFY_REQUEST, Tag.END ), new GrammarTransition( 2718 Dsmlv2StatesEnum.MODIFY_REQUEST_MODIFICATION_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, null ) ); 2719 2720 //==================================================== 2721 // Transitions concerning : SEARCH REQUEST 2722 //==================================================== 2723 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2724 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2725 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2726 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2727 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2728 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2729 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2730 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2731 2732 // State: [SEARCH_REQUEST_START_TAG] - Tag: <control> 2733 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, Tag.START ), 2734 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG, 2735 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2736 2737 // State: [SEARCH_REQUEST_CONTROL_START_TAG] - Tag: <controlValue> 2738 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL_VALUE, 2739 Tag.START ), 2740 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG, 2741 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG, controlValueCreation ) ); 2742 2743 // State: [SEARCH_REQUEST_CONTROLVALUE_END_TAG] - Tag: </control> 2744 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.CONTROL, 2745 Tag.END ), 2746 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROLVALUE_END_TAG, 2747 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, null ) ); 2748 2749 // State: [SEARCH_REQUEST_CONTROL_START_TAG] - Tag: </control> 2750 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG.ordinal()].put( 2751 new Tag( DsmlLiterals.CONTROL, Tag.END ), 2752 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG, 2753 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, null ) ); 2754 2755 // State: [SEARCH_REQUEST_CONTROL_END_TAG] - Tag: <control> 2756 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put( 2757 new Tag( DsmlLiterals.CONTROL, Tag.START ), 2758 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, 2759 Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_START_TAG, controlCreation ) ); 2760 2761 // State: [SEARCH_REQUEST_FILTER_END_TAG] - Tag: </searchRequest> 2762 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST, 2763 Tag.END ), 2764 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 2765 storeFilter ) ); 2766 2767 // State: [SEARCH_REQUEST_ATTRIBUTES_START_TAG] - Tag: </attributes> 2768 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTES, 2769 Tag.END ), 2770 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG, 2771 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG, null ) ); 2772 2773 // State: [SEARCH_REQUEST_ATTRIBUTES_START_TAG] - Tag: <attribute> 2774 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTE, 2775 Tag.START ), 2776 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG, 2777 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG, searchRequestAddAttribute ) ); 2778 2779 // State: [SEARCH_REQUEST_ATTRIBUTE_START_TAG] - Tag: </attribute> 2780 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTE, 2781 Tag.END ), 2782 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG, 2783 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG, null ) ); 2784 2785 // State: [SEARCH_REQUEST_ATTRIBUTE_END_TAG] - Tag: <attribute> 2786 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTE, 2787 Tag.START ), 2788 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG, 2789 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_START_TAG, searchRequestAddAttribute ) ); 2790 2791 // State: [SEARCH_REQUEST_ATTRIBUTE_END_TAG] - Tag: </attributes> 2792 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTES, 2793 Tag.END ), 2794 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTE_END_TAG, 2795 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG, null ) ); 2796 2797 // State: [SEARCH_REQUEST_ATTRIBUTES_END_TAG] - Tag: </searchRequest> 2798 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST, 2799 Tag.END ), 2800 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_END_TAG, 2801 Dsmlv2StatesEnum.BATCHREQUEST_LOOP, storeFilter ) ); 2802 2803 //==================================================== 2804 // Transitions concerning : FILTER 2805 //==================================================== 2806 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2807 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2808 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2809 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2810 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2811 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2812 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2813 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2814 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2815 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2816 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 2817 2818 // State: [SEARCH_REQUEST_START_TAG] - Tag: <filter> 2819 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG.ordinal()].put( new Tag( DsmlLiterals.FILTER, Tag.START ), 2820 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_START_TAG, 2821 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, null ) ); 2822 2823 // State: [SEARCH_REQUEST_CONTROL_END_TAG] - Tag: <filter> 2824 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG.ordinal()].put( 2825 new Tag( DsmlLiterals.FILTER, Tag.START ), 2826 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_CONTROL_END_TAG, 2827 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, null ) ); 2828 2829 //*** AND *** 2830 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <and> 2831 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.AND, Tag.START ), 2832 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2833 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, andFilterCreation ) ); 2834 2835 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <and> 2836 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.AND, Tag.START ), 2837 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2838 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, andFilterCreation ) ); 2839 2840 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </and> 2841 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.AND, Tag.END ), 2842 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2843 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, connectorFilterClose ) ); 2844 2845 //*** OR *** 2846 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <or> 2847 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.OR, Tag.START ), 2848 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2849 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, orFilterCreation ) ); 2850 2851 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <or> 2852 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.OR, Tag.START ), 2853 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2854 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, orFilterCreation ) ); 2855 2856 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </or> 2857 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.OR, Tag.END ), 2858 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2859 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, connectorFilterClose ) ); 2860 2861 //*** NOT *** 2862 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <not> 2863 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.NOT, Tag.START ), 2864 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2865 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, notFilterCreation ) ); 2866 2867 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <not> 2868 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.NOT, Tag.START ), 2869 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2870 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, notFilterCreation ) ); 2871 2872 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </not> 2873 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.NOT, Tag.END ), 2874 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2875 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, connectorFilterClose ) ); 2876 2877 //*** DsmlLiterals.SUBSTRINGS *** 2878 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <substrings> 2879 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS, 2880 Tag.START ), 2881 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2882 Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, substringsFilterCreation ) ); 2883 2884 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <substrings> 2885 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( 2886 new Tag( DsmlLiterals.SUBSTRINGS, Tag.START ), 2887 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2888 Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, substringsFilterCreation ) ); 2889 2890 //*** EQUALITY MATCH *** 2891 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <equalityMatch> 2892 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.EQUALITY_MATCH, 2893 Tag.START ), 2894 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2895 Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG, equalityMatchFilterCreation ) ); 2896 2897 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <equalityMatch> 2898 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.EQUALITY_MATCH, 2899 Tag.START ), 2900 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2901 Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG, equalityMatchFilterCreation ) ); 2902 2903 // State: [SEARCH_REQUEST_EQUALITYMATCH_START_TAG] - Tag: <value> 2904 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, 2905 Tag.START ), 2906 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_EQUALITYMATCH_START_TAG, 2907 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) ); 2908 2909 // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </equalityMatch> 2910 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.EQUALITY_MATCH, 2911 Tag.END ), 2912 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, 2913 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) ); 2914 2915 //*** GREATER OR EQUAL *** 2916 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <greaterOrEqual> 2917 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( 2918 new Tag( DsmlLiterals.GREATER_OR_EQUAL, Tag.START ), new GrammarTransition( 2919 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2920 Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG, greaterOrEqualFilterCreation ) ); 2921 2922 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <greaterOrEqual> 2923 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.GREATER_OR_EQUAL, 2924 Tag.START ), 2925 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2926 Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG, greaterOrEqualFilterCreation ) ); 2927 2928 // State: [SEARCH_REQUEST_GREATEROREQUAL_START_TAG] - Tag: <value> 2929 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, 2930 Tag.START ), 2931 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_GREATEROREQUAL_START_TAG, 2932 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) ); 2933 2934 // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </greaterOrEqual> 2935 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( new Tag( DsmlLiterals.GREATER_OR_EQUAL, 2936 Tag.END ), 2937 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, 2938 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) ); 2939 2940 //*** LESS OR EQUAL *** 2941 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <lessOrEqual> 2942 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.LESS_OR_EQUAL, 2943 Tag.START ), 2944 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2945 Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG, lessOrEqualFilterCreation ) ); 2946 2947 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <lessOrEqual> 2948 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( 2949 new Tag( DsmlLiterals.LESS_OR_EQUAL, Tag.START ), 2950 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2951 Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG, lessOrEqualFilterCreation ) ); 2952 2953 // State: [SEARCH_REQUEST_LESSOREQUAL_START_TAG] - Tag: <value> 2954 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, 2955 Tag.START ), 2956 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_LESSOREQUAL_START_TAG, 2957 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) ); 2958 2959 // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </lessOrEqual> 2960 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( 2961 new Tag( DsmlLiterals.LESS_OR_EQUAL, Tag.END ), 2962 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, 2963 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) ); 2964 2965 //*** LESS OR EQUAL *** 2966 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <approxMatch> 2967 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.APPROX_MATCH, 2968 Tag.START ), 2969 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2970 Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG, approxMatchFilterCreation ) ); 2971 2972 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <approxMatch> 2973 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( 2974 new Tag( DsmlLiterals.APPROX_MATCH, Tag.START ), 2975 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 2976 Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG, approxMatchFilterCreation ) ); 2977 2978 // State: [SEARCH_REQUEST_APPROXMATCH_START_TAG] - Tag: <value> 2979 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG.ordinal()].put( new Tag( DsmlLiterals.VALUE, 2980 Tag.START ), 2981 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_APPROXMATCH_START_TAG, 2982 Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, filterAddValue ) ); 2983 2984 // State: [SEARCH_REQUEST_VALUE_END_TAG] - Tag: </approxMatch> 2985 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG.ordinal()].put( 2986 new Tag( DsmlLiterals.APPROX_MATCH, Tag.END ), 2987 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_VALUE_END_TAG, 2988 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) ); 2989 2990 //*** PRESENT *** 2991 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <present> 2992 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( new Tag( DsmlLiterals.PRESENT, 2993 Tag.START ), 2994 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 2995 Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG, presentFilterCreation ) ); 2996 2997 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <present> 2998 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.PRESENT, Tag.START ), 2999 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 3000 Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG, presentFilterCreation ) ); 3001 3002 // State: [SEARCH_REQUEST_PRESENT_START_TAG] - Tag: </present> 3003 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG.ordinal()].put( 3004 new Tag( DsmlLiterals.PRESENT, Tag.END ), 3005 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_PRESENT_START_TAG, 3006 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) ); 3007 3008 //*** EXTENSIBLE MATCH *** 3009 // State: [SEARCH_REQUEST_FILTER_START_TAG] - Tag: <extensibleMatch> 3010 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG.ordinal()].put( 3011 new Tag( DsmlLiterals.EXTENSIBLE_MATCH, Tag.START ), new GrammarTransition( 3012 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_START_TAG, 3013 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG, extensibleMatchFilterCreation ) ); 3014 3015 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: <extensibleMatch> 3016 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.EXTENSIBLE_MATCH, 3017 Tag.START ), 3018 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 3019 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG, extensibleMatchFilterCreation ) ); 3020 3021 // State: [SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG] - Tag: <value> 3022 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG.ordinal()].put( 3023 new Tag( DsmlLiterals.VALUE, Tag.START ), new GrammarTransition( 3024 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_START_TAG, 3025 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG, extensibleMatchAddValue ) ); 3026 3027 // State: [SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG] - Tag: </extensibleMatch> 3028 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG.ordinal()].put( new Tag( 3029 DsmlLiterals.EXTENSIBLE_MATCH, Tag.END ), new GrammarTransition( 3030 Dsmlv2StatesEnum.SEARCH_REQUEST_EXTENSIBLEMATCH_VALUE_END_TAG, Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 3031 null ) ); 3032 3033 //*** Filter (end) *** 3034 // State: [SEARCH_REQUEST_FILTER_LOOP] - Tag: </filter> 3035 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP.ordinal()].put( new Tag( DsmlLiterals.FILTER, Tag.END ), 3036 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, 3037 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG, null ) ); 3038 3039 // State: [SEARCH_REQUEST_FILTER_END_TAG] - Tag: <attributes> 3040 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ATTRIBUTES, 3041 Tag.START ), 3042 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG, 3043 Dsmlv2StatesEnum.SEARCH_REQUEST_ATTRIBUTES_START_TAG, null ) ); 3044 3045 // State: [SEARCH_REQUEST_FILTER_END_TAG] - Tag: </searchRequest> 3046 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SEARCH_REQUEST, 3047 Tag.END ), 3048 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_END_TAG, Dsmlv2StatesEnum.BATCHREQUEST_LOOP, 3049 storeFilter ) ); 3050 3051 //==================================================== 3052 // Transitions concerning : SUBSTRING FILTER 3053 //==================================================== 3054 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3055 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3056 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3057 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3058 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3059 3060 // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: </substrings> 3061 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS, 3062 Tag.END ), 3063 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, 3064 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, null ) ); 3065 3066 // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: <initial> 3067 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.INITIAL, 3068 Tag.START ), 3069 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, 3070 Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG, substringsFilterSetInitial ) ); 3071 3072 // State: [SEARCH_REQUEST_INITIAL_END_TAG] - Tag: <any> 3073 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ANY, Tag.START ), 3074 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG, 3075 Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, substringsFilterAddAny ) ); 3076 3077 // State: [SEARCH_REQUEST_INITIAL_END_TAG] - Tag: <final> 3078 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( 3079 new Tag( DsmlLiterals.FINAL, Tag.START ), 3080 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG, 3081 Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, substringsFilterSetFinal ) ); 3082 3083 // State: [SEARCH_REQUEST_INITIAL_END_TAG] - Tag: </substrings> 3084 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS, 3085 Tag.END ), 3086 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_INITIAL_END_TAG, 3087 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, substringsFilterClose ) ); 3088 3089 // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: <any> 3090 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.ANY, 3091 Tag.START ), 3092 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, 3093 Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, substringsFilterAddAny ) ); 3094 3095 // State: [SEARCH_REQUEST_ANY_END_TAG] - Tag: </any> 3096 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( DsmlLiterals.ANY, Tag.START ), 3097 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, 3098 Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, substringsFilterAddAny ) ); 3099 3100 // State: [SEARCH_REQUEST_ANY_END_TAG] - Tag: <final> 3101 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( DsmlLiterals.FINAL, Tag.START ), 3102 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, 3103 Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, substringsFilterSetFinal ) ); 3104 3105 // State: [SEARCH_REQUEST_ANY_END_TAG] - Tag: </substrings> 3106 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG.ordinal()].put( new Tag( DsmlLiterals.SUBSTRINGS, Tag.END ), 3107 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_ANY_END_TAG, 3108 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, substringsFilterClose ) ); 3109 3110 // State: [SEARCH_REQUEST_SUBSTRINGS_START_TAG] - Tag: <final> 3111 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG.ordinal()].put( new Tag( DsmlLiterals.FINAL, 3112 Tag.START ), 3113 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_SUBSTRINGS_START_TAG, 3114 Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, substringsFilterSetFinal ) ); 3115 3116 // State: [SEARCH_REQUEST_FINAL_END_TAG] - Tag: </substrings> 3117 super.transitions[Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG.ordinal()].put( 3118 new Tag( DsmlLiterals.SUBSTRINGS, Tag.END ), 3119 new GrammarTransition( Dsmlv2StatesEnum.SEARCH_REQUEST_FINAL_END_TAG, 3120 Dsmlv2StatesEnum.SEARCH_REQUEST_FILTER_LOOP, substringsFilterClose ) ); 3121 3122 //------------------------------------------ handle SOAP envelopes -------------------------- 3123 super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3124 super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3125 super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3126 super.transitions[Dsmlv2StatesEnum.SOAP_BODY_START_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3127 super.transitions[Dsmlv2StatesEnum.SOAP_BODY_END_TAG.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3128 3129 super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()] = new HashMap<Tag, GrammarTransition>(); 3130 3131 // State: [INIT_GRAMMAR_STATE] - Tag: <envelope> 3132 super.transitions[Dsmlv2StatesEnum.INIT_GRAMMAR_STATE.ordinal()].put( new Tag( DsmlLiterals.ENVELOPE, Tag.START ), 3133 new GrammarTransition( Dsmlv2StatesEnum.INIT_GRAMMAR_STATE, Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, 3134 null ) ); 3135 3136 // state: [SOAP_ENVELOPE_START_TAG] -> Tag: <header> 3137 super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()].put( new Tag( DsmlLiterals.HEADER, Tag.START ), 3138 new GrammarTransition( Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, Dsmlv2StatesEnum.SOAP_HEADER_START_TAG, 3139 ParserUtils.READ_SOAP_HEADER ) ); 3140 3141 // state: [SOAP_HEADER_START_TAG] -> Tag: </header> 3142 super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_START_TAG.ordinal()] 3143 .put( new Tag( DsmlLiterals.HEADER, Tag.END ), 3144 new GrammarTransition( Dsmlv2StatesEnum.SOAP_HEADER_START_TAG, Dsmlv2StatesEnum.SOAP_HEADER_END_TAG, 3145 null ) ); 3146 3147 // state: [SOAP_HEADER_END_TAG] -> Tag: <body> 3148 super.transitions[Dsmlv2StatesEnum.SOAP_HEADER_END_TAG.ordinal()].put( new Tag( DsmlLiterals.BODY, Tag.START ), 3149 new GrammarTransition( Dsmlv2StatesEnum.SOAP_HEADER_END_TAG, Dsmlv2StatesEnum.SOAP_BODY_START_TAG, null ) ); 3150 3151 // state: [SOAP_BODY_START_TAG] -> Tag: <batchRequest> 3152 super.transitions[Dsmlv2StatesEnum.SOAP_BODY_START_TAG.ordinal()].put( new Tag( DsmlLiterals.BATCH_REQUEST, Tag.START ), 3153 new GrammarTransition( Dsmlv2StatesEnum.SOAP_BODY_START_TAG, Dsmlv2StatesEnum.BATCHREQUEST_START_TAG, 3154 batchRequestCreation ) ); 3155 3156 // the optional transition if no soap header is present 3157 // state: [SOAP_ENVELOPE_START_TAG] -> Tag: <body> 3158 super.transitions[Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG.ordinal()] 3159 .put( new Tag( DsmlLiterals.BODY, Tag.START ), 3160 new GrammarTransition( Dsmlv2StatesEnum.SOAP_ENVELOPE_START_TAG, Dsmlv2StatesEnum.SOAP_BODY_START_TAG, 3161 null ) ); 3162 3163 // the below two transitions are a bit unconventional, technically the container's state is set to GRAMMAR_END 3164 // when the </batchRequest> tag is encountered by the parser and the corresponding action gets executed but in 3165 // a SOAP envelop we still have two more end tags(</body> and </envelope>) are left so we set those corresponding 3166 // current and next transition states always to GRAMMAR_END 3167 super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( DsmlLiterals.BODY, Tag.END ), 3168 new GrammarTransition( Dsmlv2StatesEnum.GRAMMAR_END, Dsmlv2StatesEnum.GRAMMAR_END, null ) ); 3169 3170 super.transitions[Dsmlv2StatesEnum.GRAMMAR_END.ordinal()].put( new Tag( DsmlLiterals.ENVELOPE, Tag.END ), 3171 new GrammarTransition( Dsmlv2StatesEnum.GRAMMAR_END, Dsmlv2StatesEnum.GRAMMAR_END, null ) ); 3172 3173 //------------------------------------------ 3174 3175 } // End of the constructor 3176 3177 3178 /** 3179 * @return The LDAP codec service. 3180 */ 3181 public LdapApiService getLdapCodecService() 3182 { 3183 return codec; 3184 } 3185}