| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| */ |
| package org.apache.directory.api.dsmlv2; |
| |
| |
| import org.apache.directory.api.dsmlv2.request.BatchRequestDsml; |
| import org.apache.directory.api.dsmlv2.response.BatchResponseDsml; |
| import org.apache.directory.api.ldap.codec.api.LdapApiService; |
| import org.xmlpull.v1.XmlPullParser; |
| |
| |
| /** |
| * This class represents the DSML Container. |
| * It used by the DSML Parser to store information. |
| * |
| * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> |
| */ |
| public class Dsmlv2Container implements Container |
| { |
| /** The current state of the decoding */ |
| private Enum<Dsmlv2StatesEnum> state; |
| |
| /** The current transition */ |
| private Enum<Dsmlv2StatesEnum> transition; |
| |
| /** Store the different states for debug purpose */ |
| private Enum<Dsmlv2StatesEnum>[] states; |
| |
| /** The pool parser */ |
| private XmlPullParser parser; |
| |
| /** The BatchRequest of the parsing */ |
| private BatchRequestDsml batchRequest; |
| |
| /** The BatchResponse of the parsing */ |
| private BatchResponseDsml batchResponse; |
| |
| /** The associated grammar */ |
| private AbstractGrammar grammar; |
| |
| /** The codec service */ |
| private final LdapApiService codec; |
| |
| |
| /** |
| * Creates a new LdapMessageContainer object. |
| * |
| * @param codec the Codec used to encode/decode the messages |
| */ |
| public Dsmlv2Container( LdapApiService codec ) |
| { |
| this.codec = codec; |
| } |
| |
| |
| /** |
| * Gets the {@link LdapApiService} associated with this Container. |
| * |
| * @return The codec used to encode/decode the messages |
| */ |
| public LdapApiService getLdapCodecService() |
| { |
| return codec; |
| } |
| |
| |
| /** |
| * Gets the DSML Batch Request |
| * |
| * @return Returns the Batch Request |
| */ |
| public BatchRequestDsml getBatchRequest() |
| { |
| return batchRequest; |
| } |
| |
| |
| /** |
| * Sets the DSML Batch Request |
| * |
| * @param batchRequest the Batch Request to set |
| */ |
| public void setBatchRequest( BatchRequestDsml batchRequest ) |
| { |
| this.batchRequest = batchRequest; |
| } |
| |
| |
| /** |
| * Gets the DSML Batch Response |
| * |
| * @return Returns the Batch Response |
| */ |
| public BatchResponseDsml getBatchResponse() |
| { |
| return batchResponse; |
| } |
| |
| |
| /** |
| * Sets the DSML Batch Request |
| * |
| * @param batchResponse the Batch Response to set |
| */ |
| public void setBatchResponse( BatchResponseDsml batchResponse ) |
| { |
| this.batchResponse = batchResponse; |
| } |
| |
| |
| /** |
| * Gets the parser |
| * |
| * @return the parser |
| */ |
| public XmlPullParser getParser() |
| { |
| return parser; |
| } |
| |
| |
| /** |
| * Sets the parser |
| * |
| * @param parser the parser to set |
| */ |
| public void setParser( XmlPullParser parser ) |
| { |
| this.parser = parser; |
| } |
| |
| |
| /** |
| * Get the current grammar state |
| * |
| * @return the current grammar state |
| */ |
| public Enum<Dsmlv2StatesEnum> getState() |
| { |
| return state; |
| } |
| |
| |
| /** |
| * Set the new current state |
| * |
| * @param state the new state |
| */ |
| public void setState( Enum<Dsmlv2StatesEnum> state ) |
| { |
| this.state = state; |
| } |
| |
| |
| /** |
| * Get the transition |
| * |
| * @return the transition from the previous state to the new state |
| */ |
| public Enum<Dsmlv2StatesEnum> getTransition() |
| { |
| return transition; |
| } |
| |
| |
| /** |
| * Update the transition from a state to another |
| * |
| * @param transition the transition to set |
| */ |
| public void setTransition( Enum<Dsmlv2StatesEnum> transition ) |
| { |
| this.transition = transition; |
| } |
| |
| |
| /** |
| * Get the states for this container's grammars |
| * |
| * @return the states. |
| */ |
| public Enum<Dsmlv2StatesEnum>[] getStates() |
| { |
| return states; |
| } |
| |
| |
| /** |
| * Gets the grammar |
| * |
| * @return the grammar |
| */ |
| public AbstractGrammar getGrammar() |
| { |
| return grammar; |
| } |
| |
| |
| /** |
| * Sets the Grammar |
| * |
| * @param grammar the grammar to set |
| */ |
| public void setGrammar( AbstractGrammar grammar ) |
| { |
| this.grammar = grammar; |
| } |
| |
| |
| /** |
| * Get the transition associated with the state and tag |
| * |
| * @param currentState the current state |
| * @param currentTag the current tag |
| * @return a valid transition if any, or null. |
| */ |
| public GrammarTransition getTransition( Enum<Dsmlv2StatesEnum> currentState, Tag currentTag ) |
| { |
| return grammar.getTransition( currentState, currentTag ); |
| } |
| } |