| /* |
| * 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.shared.dsmlv2; |
| |
| |
| import org.apache.directory.shared.asn1.ber.Asn1Container; |
| import org.apache.directory.shared.dsmlv2.reponse.BatchResponseDsml; |
| import org.apache.directory.shared.dsmlv2.request.BatchRequestDsml; |
| import org.apache.directory.shared.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. We will store ten grammars, |
| * it's enough ... |
| */ |
| public Dsmlv2Container( LdapApiService codec ) |
| { |
| this.codec= codec; |
| } |
| |
| |
| /** |
| * Gets the {@link LdapApiService} associated with this {@link Asn1Container}. |
| * |
| * @return |
| */ |
| 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. |
| */ |
| @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UWF_UNWRITTEN_FIELD", |
| justification="it exists a setter for '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 ); |
| } |
| } |