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 package org.apache.directory.shared.ldap.codec;
021
022
023 import org.apache.directory.shared.asn1.ber.grammar.IGrammar;
024 import org.apache.directory.shared.asn1.ber.grammar.IStates;
025
026
027 /**
028 * This class store the Ldap grammar's constants. It is also used for debugging
029 * purpose
030 *
031 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
032 * @version $Rev: 749713 $, $Date: 2009-03-03 20:49:17 +0100 (Mar, 03 mar 2009) $,
033 */
034 public class LdapStatesEnum implements IStates
035 {
036 // ~ Static fields/initializers
037 // -----------------------------------------------------------------
038 public static final int START_STATE = 0;
039 public static final int LDAP_MESSAGE_STATE = 1;
040 public static final int MESSAGE_ID_STATE = 2;
041 public static final int BIND_REQUEST_STATE = 3;
042 public static final int BIND_RESPONSE_STATE = 4;
043 public static final int UNBIND_REQUEST_STATE = 5;
044 public static final int SEARCH_REQUEST_STATE = 6;
045 public static final int SEARCH_RESULT_ENTRY_STATE = 7;
046 public static final int SEARCH_RESULT_DONE_STATE = 8;
047 public static final int SEARCH_RESULT_REFERENCE_STATE = 9;
048 public static final int MODIFY_REQUEST_STATE = 10;
049 public static final int MODIFY_RESPONSE_STATE = 11;
050 public static final int ADD_REQUEST_STATE = 12;
051 public static final int ADD_RESPONSE_STATE = 13;
052 public static final int DEL_REQUEST_STATE = 14;
053 public static final int DEL_RESPONSE_STATE = 15;
054 public static final int MODIFY_DN_REQUEST_STATE = 16;
055 public static final int MODIFY_DN_RESPONSE_STATE = 17;
056 public static final int COMPARE_REQUEST_STATE = 18;
057 public static final int COMPARE_RESPONSE_STATE = 19;
058 public static final int ABANDON_REQUEST_STATE = 20;
059 public static final int EXTENDED_REQUEST_STATE = 21;
060 public static final int EXTENDED_RESPONSE_STATE = 22;
061 public static final int VERSION_STATE = 23;
062 public static final int NAME_STATE = 24;
063 public static final int SIMPLE_STATE = 25;
064 public static final int SASL_STATE = 26;
065 public static final int MECHANISM_STATE = 27;
066 public static final int CREDENTIALS_STATE = 28;
067 public static final int RESULT_CODE_BR_STATE = 29;
068 public static final int MATCHED_DN_BR_STATE = 30;
069 public static final int ERROR_MESSAGE_BR_STATE = 31;
070 public static final int REFERRALS_BR_STATE = 32;
071 public static final int REFERRAL_BR_STATE = 33;
072 public static final int SERVER_SASL_CREDENTIALS_STATE = 34;
073 public static final int RESULT_CODE_STATE = 35;
074 public static final int MATCHED_DN_STATE = 36;
075 public static final int ERROR_MESSAGE_STATE = 37;
076 public static final int REFERRALS_STATE = 38;
077 public static final int REFERRAL_STATE = 39;
078 public static final int REQUEST_NAME_STATE = 40;
079 public static final int REQUEST_VALUE_STATE = 41;
080 public static final int RESPONSE_NAME_STATE = 42;
081 public static final int RESPONSE_STATE = 43;
082 public static final int RESULT_CODE_ER_STATE = 44;
083 public static final int MATCHED_DN_ER_STATE = 45;
084 public static final int ERROR_MESSAGE_ER_STATE = 46;
085 public static final int REFERRALS_ER_STATE = 47;
086 public static final int REFERRAL_ER_STATE = 48;
087 public static final int ENTRY_STATE = 49;
088 public static final int ATTRIBUTES_STATE = 50;
089 public static final int ATTRIBUTE_STATE = 51;
090 public static final int TYPE_STATE = 52;
091 public static final int VALUES_STATE = 53;
092 public static final int VALUE_STATE = 54;
093 public static final int OBJECT_STATE = 55;
094 public static final int MODIFICATIONS_STATE = 56;
095 public static final int MODIFICATIONS_SEQ_STATE = 57;
096 public static final int OPERATION_STATE = 58;
097 public static final int MODIFICATION_STATE = 59;
098 public static final int TYPE_MOD_STATE = 60;
099 public static final int VALS_STATE = 61;
100 public static final int ATTRIBUTE_VALUE_STATE = 62;
101 public static final int ENTRY_MOD_DN_STATE = 63;
102 public static final int NEW_RDN_STATE = 64;
103 public static final int DELETE_OLD_RDN_STATE = 65;
104 public static final int NEW_SUPERIOR_STATE = 66;
105 public static final int ENTRY_COMP_STATE = 67;
106 public static final int AVA_STATE = 68;
107 public static final int ATTRIBUTE_DESC_STATE = 69;
108 public static final int ASSERTION_VALUE_STATE = 70;
109 public static final int BASE_OBJECT_STATE = 71;
110 public static final int SCOPE_STATE = 72;
111 public static final int DEREF_ALIAS_STATE = 73;
112 public static final int SIZE_LIMIT_STATE = 74;
113 public static final int TIME_LIMIT_STATE = 75;
114 public static final int TYPES_ONLY_STATE = 76;
115 public static final int AND_STATE = 77;
116 public static final int OR_STATE = 78;
117 public static final int NOT_STATE = 79;
118 public static final int EQUALITY_MATCH_STATE = 80;
119 public static final int SUBSTRING_FILTER_STATE = 81;
120 public static final int GREATER_OR_EQUAL_STATE = 82;
121 public static final int LESS_OR_EQUAL_STATE = 83;
122 public static final int PRESENT_STATE = 84;
123 public static final int APPROX_MATCH_STATE = 85;
124 public static final int EXTENSIBLE_MATCH_STATE = 86;
125 public static final int ATTRIBUTE_DESC_FILTER_STATE = 87;
126 public static final int ASSERTION_VALUE_FILTER_STATE = 88;
127 public static final int ATTRIBUTE_DESCRIPTION_LIST_STATE = 89;
128 public static final int ATTRIBUTE_DESCRIPTION_STATE = 90;
129 public static final int TYPE_SUBSTRING_STATE = 91;
130 public static final int SUBSTRINGS_STATE = 92;
131 public static final int INITIAL_STATE = 93;
132 public static final int ANY_STATE = 94;
133 public static final int FINAL_STATE = 95;
134 public static final int MATCHING_RULE_STATE = 96;
135 public static final int TYPE_MATCHING_RULE_STATE = 97;
136 public static final int MATCH_VALUE_STATE = 98;
137 public static final int DN_ATTRIBUTES_STATE = 99;
138 public static final int OBJECT_NAME_STATE = 100;
139 public static final int ATTRIBUTES_SR_STATE = 101;
140 public static final int PARTIAL_ATTRIBUTES_LIST_STATE = 102;
141 public static final int TYPE_SR_STATE = 103;
142 public static final int VALS_SR_STATE = 104;
143 public static final int ATTRIBUTE_VALUE_SR_STATE = 105;
144 public static final int REFERENCE_STATE = 106;
145 public static final int CONTROLS_STATE = 107;
146 public static final int CONTROL_STATE = 108;
147 public static final int CONTROL_TYPE_STATE = 109;
148 public static final int CRITICALITY_STATE = 110;
149 public static final int CONTROL_VALUE_STATE = 111;
150 public static final int INTERMEDIATE_RESPONSE_STATE = 112;
151 public static final int INTERMEDIATE_RESPONSE_NAME_STATE = 113;
152 public static final int INTERMEDIATE_RESPONSE_VALUE_STATE = 114;
153
154
155 public static final int LAST_LDAP_STATE = 115;
156
157 // =========================================================================
158 // States debug strings
159 // =========================================================================
160 /** A string representation of all the states */
161 private static String[] LdapMessageString = new String[]
162 {
163 "START_STATE",
164 "LDAP_MESSAGE_STATE",
165 "MESSAGE_ID_STATE",
166 "BIND_REQUEST_STATE",
167 "BIND_RESPONSE_STATE",
168 "UNBIND_REQUEST_STATE",
169 "SEARCH_REQUEST_STATE",
170 "SEARCH_RESULT_ENTRY_STATE",
171 "SEARCH_RESULT_DONE_STATE",
172 "SEARCH_RESULT_REFERENCE_STATE",
173 "MODIFY_REQUEST_STATE",
174 "MODIFY_RESPONSE_STATE",
175 "ADD_REQUEST_STATE",
176 "ADD_RESPONSE_STATE",
177 "DEL_REQUEST_STATE",
178 "DEL_RESPONSE_STATE",
179 "MODIFY_DN_REQUEST_STATE",
180 "MODIFY_DN_RESPONSE_STATE",
181 "COMPARE_REQUEST_STATE",
182 "COMPARE_RESPONSE_STATE",
183 "ABANDON_REQUEST_STATE",
184 "EXTENDED_REQUEST_STATE",
185 "EXTENDED_RESPONSE_STATE",
186 "VERSION_STATE",
187 "NAME_STATE",
188 "SIMPLE_STATE",
189 "SASL_STATE",
190 "MECHANISM_STATE",
191 "CREDENTIALS_STATE",
192 "RESULT_CODE_BR_STATE",
193 "MATCHED_DN_BR_STATE",
194 "ERROR_MESSAGE_BR_STATE",
195 "REFERRALS_BR_STATE",
196 "REFERRAL_BR_STATE",
197 "SERVER_SASL_CREDENTIALS_STATE",
198 "RESULT_CODE_STATE",
199 "MATCHED_DN_STATE",
200 "ERROR_MESSAGE_STATE",
201 "REFERRALS_STATE",
202 "REFERRAL_STATE",
203 "REQUEST_NAME_STATE",
204 "REQUEST_VALUE_STATE",
205 "RESPONSE_NAME_STATE",
206 "RESPONSE_STATE",
207 "RESULT_CODE_ER_STATE",
208 "MATCHED_DN_ER_STATE",
209 "ERROR_MESSAGE_ER_STATE",
210 "REFERRALS_ER_STATE",
211 "REFERRAL_ER_STATE",
212 "ENTRY_STATE",
213 "ATTRIBUTES_STATE",
214 "ATTRIBUTE_STATE",
215 "TYPE_STATE",
216 "VALUES_STATE",
217 "VALUE_STATE",
218 "OBJECT_STATE",
219 "MODIFICATIONS_STATE",
220 "MODIFICATIONS_SEQ_STATE",
221 "OPERATION_STATE",
222 "MODIFICATION_STATE",
223 "TYPE_MOD_STATE",
224 "VALS_STATE",
225 "ATTRIBUTE_VALUE_STATE",
226 "ENTRY_MOD_DN_STATE",
227 "NEW_RDN_STATE",
228 "DELETE_OLD_RDN_STATE",
229 "NEW_SUPERIOR_STATE",
230 "ENTRY_COMP_STATE",
231 "AVA_STATE",
232 "ATTRIBUTE_DESC_STATE",
233 "ASSERTION_VALUE_STATE",
234 "BASE_OBJECT_STATE",
235 "SCOPE_STATE",
236 "DEREF_ALIAS_STATE",
237 "SIZE_LIMIT_STATE",
238 "TIME_LIMIT_STATE",
239 "TYPES_ONLY_STATE",
240 "AND_STATE",
241 "OR_STATE",
242 "NOT_STATE",
243 "EQUALITY_MATCH_STATE",
244 "SUBSTRINGS_FILTER_STATE",
245 "GREATER_OR_EQUAL_STATE",
246 "LESS_OR_EQUAL_STATE",
247 "PRESENT_STATE",
248 "APPROX_MATCH_STATE",
249 "EXTENSIBLE_MATCH_STATE",
250 "SUBSTRING_FILTER_STATE",
251 "ATTRIBUTE_DESC_FILTER_STATE",
252 "ASSERTION_VALUE_FILTER_STATE",
253 "ATTRIBUTE_DESCRIPTION_LIST_STATE",
254 "ATTRIBUTE_DESCRIPTION_STATE",
255 "TYPE_SUBSTRING_STATE",
256 "SUBSTRINGS_STATE",
257 "INITIAL_STATE",
258 "ANY_STATE",
259 "FINAL_STATE",
260 "MATCHING_RULE_STATE",
261 "TYPE_MATCHING_RULE_STATE",
262 "MATCH_VALUE_STATE",
263 "DN_ATTRIBUTES_STATE",
264 "OBJECT_NAME_STATE",
265 "ATTRIBUTES_SR_STATE",
266 "PARTIAL_ATTRIBUTES_LIST_STATE",
267 "TYPE_SR_STATE",
268 "VALS_SR_STATE",
269 "ATTRIBUTE_VALUE_SR_STATE",
270 "REFERENCE_STATE",
271 "CONTROLS_STATE",
272 "CONTROL_STATE",
273 "CONTROL_TYPE_STATE",
274 "CRITICALITY_STATE",
275 "CONTROL_VALUE_STATE",
276 "INTERMEDIATE_RESPONSE_STATE",
277 "INTERMEDIATE_RESPONSE_NAME_STATE",
278 "INTERMEDIATE_RESPONSE_VALUE_STATE",
279 "LAST_LDAP_STATE",
280 };
281
282 /** The instance */
283 private static LdapStatesEnum instance = new LdapStatesEnum();
284
285
286 // ~ Constructors
287 // -------------------------------------------------------------------------------
288
289 /**
290 * This is a private constructor. This class is a singleton
291 */
292 private LdapStatesEnum()
293 {
294 }
295
296
297 // ~ Methods
298 // ------------------------------------------------------------------------------------
299
300 /**
301 * Get an instance of this class
302 *
303 * @return An instance on this class
304 */
305 public static IStates getInstance()
306 {
307 return instance;
308 }
309
310
311 /**
312 * Get the grammar name
313 *
314 * @param grammar
315 * The grammar code
316 * @return The grammar name
317 */
318 public String getGrammarName( int grammar )
319 {
320 return "LDAP_MESSAGE_GRAMMAR";
321 }
322
323
324 /**
325 * Get the grammar name
326 *
327 * @param grammar
328 * The grammar class
329 * @return The grammar name
330 */
331 public String getGrammarName( IGrammar grammar )
332 {
333 if ( grammar instanceof LdapMessageGrammar )
334 {
335 return "LDAP_MESSAGE_GRAMMAR";
336 }
337 else
338 {
339 return "UNKNOWN GRAMMAR";
340 }
341 }
342
343
344 /**
345 * Get the string representing the state
346 *
347 * @param state The state number
348 * @return The String representing the state
349 */
350 public String getState( int state )
351 {
352 return ( ( state == GRAMMAR_END ) ? "LDAP_MESSAGE_END_STATE" : LdapMessageString[state] );
353 }
354 }