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 * http://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 021 package org.apache.directory.shared.dsmlv2; 022 023 024 import org.apache.directory.shared.dsmlv2.reponse.BatchResponse; 025 import org.apache.directory.shared.dsmlv2.request.BatchRequest; 026 import org.xmlpull.v1.XmlPullParser; 027 028 029 /** 030 * This class represents the DSML Container. 031 * It used by the DSML Parser to store information. 032 * 033 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 034 * @version $Rev$, $Date$ 035 */ 036 public class Dsmlv2Container implements Container 037 { 038 /** The current state of the decoding */ 039 private int state; 040 041 /** The current transition */ 042 private int transition; 043 044 /** Store the different states for debug purpose */ 045 private IStates states; 046 047 /** The pool parser */ 048 private XmlPullParser parser; 049 050 /** The BatchRequest of the parsing */ 051 private BatchRequest batchRequest; 052 053 /** The BatchResponse of the parsing */ 054 private BatchResponse batchResponse; 055 056 /** The associated grammar */ 057 private AbstractGrammar grammar; 058 059 060 /** 061 * Gets the DSML Batch Request 062 * 063 * @return 064 * Returns the Batch Request 065 */ 066 public BatchRequest getBatchRequest() 067 { 068 return batchRequest; 069 } 070 071 072 /** 073 * Sets the DSML Batch Request 074 * 075 * @param batchRequest 076 * the Batch Request to set 077 */ 078 public void setBatchRequest( BatchRequest batchRequest ) 079 { 080 this.batchRequest = batchRequest; 081 } 082 083 084 /** 085 * Gets the DSML Batch Response 086 * 087 * @return 088 * Returns the Batch Response 089 */ 090 public BatchResponse getBatchResponse() 091 { 092 return batchResponse; 093 } 094 095 096 /** 097 * Sets the DSML Batch Request 098 * 099 * @param batchResponse 100 * the Batch Response to set 101 */ 102 public void setBatchResponse( BatchResponse batchResponse ) 103 { 104 this.batchResponse = batchResponse; 105 } 106 107 108 /** 109 * Gets the parser 110 * 111 * @return 112 * the parser 113 */ 114 public XmlPullParser getParser() 115 { 116 return parser; 117 } 118 119 120 /** 121 * Sets the parser 122 * 123 * @param parser 124 * the parser to set 125 */ 126 public void setParser( XmlPullParser parser ) 127 { 128 this.parser = parser; 129 } 130 131 132 /** 133 * Get the current grammar state 134 * 135 * @return 136 * the current grammar state 137 */ 138 public int getState() 139 { 140 return state; 141 } 142 143 144 /** 145 * Set the new current state 146 * 147 * @param state 148 * the new state 149 */ 150 public void setState( int state ) 151 { 152 this.state = state; 153 } 154 155 156 /** 157 * Get the transition 158 * 159 * @return 160 * the transition from the previous state to the new state 161 */ 162 public int getTransition() 163 { 164 return transition; 165 } 166 167 168 /** 169 * Update the transition from a state to another 170 * 171 * @param transition 172 * the transition to set 173 */ 174 public void setTransition( int transition ) 175 { 176 this.transition = transition; 177 } 178 179 180 /** 181 * Get the states for this container's grammars 182 * 183 * @return 184 * the states. 185 */ 186 public IStates getStates() 187 { 188 return states; 189 } 190 191 192 /** 193 * Gets the grammar 194 * 195 * @return 196 * the grammar 197 */ 198 public AbstractGrammar getGrammar() 199 { 200 return grammar; 201 } 202 203 204 /** 205 * Sets the Grammar 206 * 207 * @param grammar 208 * the grammar to set 209 */ 210 public void setGrammar( AbstractGrammar grammar ) 211 { 212 this.grammar = grammar; 213 } 214 215 216 /** 217 * Get the transition associated with the state and tag 218 * 219 * @param state 220 * the current state 221 * @param tag 222 * the current tag 223 * @return 224 * a valid transition if any, or null. 225 */ 226 public GrammarTransition getTransition( int state, Tag tag ) 227 { 228 return grammar.getTransition( state, tag ); 229 } 230 }