1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.extras.extended.ads_impl.pwdModify;
21
22
23 import org.apache.directory.api.asn1.DecoderException;
24 import org.apache.directory.api.asn1.ber.grammar.AbstractGrammar;
25 import org.apache.directory.api.asn1.ber.grammar.Grammar;
26 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
27 import org.apache.directory.api.asn1.ber.grammar.GrammarTransition;
28 import org.apache.directory.api.asn1.ber.tlv.BerValue;
29 import org.apache.directory.api.asn1.ber.tlv.UniversalTag;
30 import org.apache.directory.api.ldap.codec.api.LdapApiServiceFactory;
31 import org.apache.directory.api.ldap.extras.extended.pwdModify.PasswordModifyRequestImpl;
32 import org.apache.directory.api.util.Strings;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class PasswordModifyRequestGrammar extends AbstractGrammar<PasswordModifyRequestContainer>
53 {
54
55
56 private static final Logger LOG = LoggerFactory.getLogger( PasswordModifyRequestGrammar.class );
57
58
59 static final boolean IS_DEBUG = LOG.isDebugEnabled();
60
61
62 private static Grammar<PasswordModifyRequestContainer> instance = new PasswordModifyRequestGrammar();
63
64
65
66
67
68 @SuppressWarnings("unchecked")
69 public PasswordModifyRequestGrammar()
70 {
71 setName( PasswordModifyRequestGrammar.class.getName() );
72
73
74 super.transitions = new GrammarTransition[PasswordModifyRequestStatesEnum.LAST_PASSWORD_MODIFY_REQUEST_STATE
75 .ordinal()][256];
76
77
78
79
80
81
82
83
84
85 super.transitions[PasswordModifyRequestStatesEnum.START_STATE.ordinal()][UniversalTag.SEQUENCE.getValue()] =
86 new GrammarTransition<PasswordModifyRequestContainer>(
87 PasswordModifyRequestStatesEnum.START_STATE,
88 PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE,
89 UniversalTag.SEQUENCE.getValue(), new GrammarAction<PasswordModifyRequestContainer>(
90 "Init PasswordModifyRequest" )
91 {
92 public void action( PasswordModifyRequestContainer container )
93 {
94 PasswordModifyRequestDecorator passwordModifyRequestDecorator = new PasswordModifyRequestDecorator(
95 LdapApiServiceFactory.getSingleton(), new PasswordModifyRequestImpl() );
96 container.setPasswordModifyRequest( passwordModifyRequestDecorator );
97
98
99 container.setGrammarEndAllowed( true );
100 }
101 } );
102
103
104
105
106
107
108
109
110
111
112 super.transitions[PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE.ordinal()][PasswordModifyRequestConstants.USER_IDENTITY_TAG] =
113 new GrammarTransition<PasswordModifyRequestContainer>(
114 PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE,
115 PasswordModifyRequestStatesEnum.USER_IDENTITY_STATE,
116 PasswordModifyRequestConstants.USER_IDENTITY_TAG,
117 new GrammarAction<PasswordModifyRequestContainer>( "Set PasswordModifyRequest user identity" )
118 {
119 public void action( PasswordModifyRequestContainer container ) throws DecoderException
120 {
121 BerValue value = container.getCurrentTLV().getValue();
122
123 byte[] userIdentity = value.getData();
124
125 if ( IS_DEBUG )
126 {
127 LOG.debug( "UserIdentity = " + Strings.dumpBytes( userIdentity ) );
128 }
129
130 if ( userIdentity == null )
131 {
132 userIdentity = Strings.EMPTY_BYTES;
133 }
134
135 container.getPwdModifyRequest().setUserIdentity( userIdentity );
136
137
138 container.setGrammarEndAllowed( true );
139 }
140 } );
141
142
143
144
145
146
147
148
149
150
151
152 super.transitions[PasswordModifyRequestStatesEnum.USER_IDENTITY_STATE.ordinal()][PasswordModifyRequestConstants.OLD_PASSWORD_TAG] =
153 new GrammarTransition<PasswordModifyRequestContainer>(
154 PasswordModifyRequestStatesEnum.USER_IDENTITY_STATE,
155 PasswordModifyRequestStatesEnum.OLD_PASSWORD_STATE,
156 PasswordModifyRequestConstants.OLD_PASSWORD_TAG,
157 new GrammarAction<PasswordModifyRequestContainer>( "Set PasswordModifyRequest oldPassword" )
158 {
159 public void action( PasswordModifyRequestContainer container ) throws DecoderException
160 {
161 BerValue value = container.getCurrentTLV().getValue();
162
163 byte[] oldPassword = value.getData();
164
165 if ( IS_DEBUG )
166 {
167 LOG.debug( "oldPassword = " + Strings.dumpBytes( oldPassword ) );
168 }
169
170 if ( oldPassword == null )
171 {
172 oldPassword = Strings.EMPTY_BYTES;
173 }
174
175 container.getPwdModifyRequest().setOldPassword( oldPassword );
176
177
178 container.setGrammarEndAllowed( true );
179 }
180 } );
181
182
183
184
185
186
187
188
189
190
191
192
193 super.transitions[PasswordModifyRequestStatesEnum.USER_IDENTITY_STATE.ordinal()][PasswordModifyRequestConstants.NEW_PASSWORD_TAG] =
194 new GrammarTransition<PasswordModifyRequestContainer>(
195 PasswordModifyRequestStatesEnum.USER_IDENTITY_STATE,
196 PasswordModifyRequestStatesEnum.NEW_PASSWORD_STATE,
197 PasswordModifyRequestConstants.NEW_PASSWORD_TAG,
198 new GrammarAction<PasswordModifyRequestContainer>( "Set PasswordModifyRequest newPassword" )
199 {
200 public void action( PasswordModifyRequestContainer container ) throws DecoderException
201 {
202 BerValue value = container.getCurrentTLV().getValue();
203
204 byte[] newPassword = value.getData();
205
206 if ( IS_DEBUG )
207 {
208 LOG.debug( "newPassword = " + Strings.dumpBytes( newPassword ) );
209 }
210
211 if ( newPassword == null )
212 {
213 newPassword = Strings.EMPTY_BYTES;
214 }
215
216 container.getPwdModifyRequest().setNewPassword( newPassword );
217
218
219 container.setGrammarEndAllowed( true );
220 }
221 } );
222
223
224
225
226
227
228
229
230
231
232
233 super.transitions[PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE.ordinal()][PasswordModifyRequestConstants.OLD_PASSWORD_TAG] =
234 new GrammarTransition<PasswordModifyRequestContainer>(
235 PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE,
236 PasswordModifyRequestStatesEnum.OLD_PASSWORD_STATE,
237 PasswordModifyRequestConstants.OLD_PASSWORD_TAG,
238 new GrammarAction<PasswordModifyRequestContainer>( "Set PasswordModifyRequest oldPassword" )
239 {
240 public void action( PasswordModifyRequestContainer container ) throws DecoderException
241 {
242 BerValue value = container.getCurrentTLV().getValue();
243
244 byte[] oldPassword = value.getData();
245
246 if ( IS_DEBUG )
247 {
248 LOG.debug( "OldPassword = " + Strings.dumpBytes( oldPassword ) );
249 }
250
251 if ( oldPassword == null )
252 {
253 oldPassword = Strings.EMPTY_BYTES;
254 }
255
256 container.getPwdModifyRequest().setOldPassword( oldPassword );
257
258
259 container.setGrammarEndAllowed( true );
260 }
261 } );
262
263
264
265
266
267
268
269
270
271
272
273 super.transitions[PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE.ordinal()][PasswordModifyRequestConstants.NEW_PASSWORD_TAG] =
274 new GrammarTransition<PasswordModifyRequestContainer>(
275 PasswordModifyRequestStatesEnum.PASSWORD_MODIFY_REQUEST_SEQUENCE_STATE,
276 PasswordModifyRequestStatesEnum.NEW_PASSWORD_STATE,
277 PasswordModifyRequestConstants.NEW_PASSWORD_TAG,
278 new GrammarAction<PasswordModifyRequestContainer>( "Set PasswordModifyRequest newPassword" )
279 {
280 public void action( PasswordModifyRequestContainer container ) throws DecoderException
281 {
282 BerValue value = container.getCurrentTLV().getValue();
283
284 byte[] newPassword = value.getData();
285
286 if ( IS_DEBUG )
287 {
288 LOG.debug( "NewPassword = " + Strings.dumpBytes( newPassword ) );
289 }
290
291 if ( newPassword == null )
292 {
293 newPassword = Strings.EMPTY_BYTES;
294 }
295
296 container.getPwdModifyRequest().setNewPassword( newPassword );
297
298
299 container.setGrammarEndAllowed( true );
300 }
301 } );
302
303
304
305
306
307
308
309
310
311
312
313 super.transitions[PasswordModifyRequestStatesEnum.OLD_PASSWORD_STATE.ordinal()][PasswordModifyRequestConstants.NEW_PASSWORD_TAG] =
314 new GrammarTransition<PasswordModifyRequestContainer>(
315 PasswordModifyRequestStatesEnum.OLD_PASSWORD_STATE,
316 PasswordModifyRequestStatesEnum.NEW_PASSWORD_STATE,
317 PasswordModifyRequestConstants.NEW_PASSWORD_TAG,
318 new GrammarAction<PasswordModifyRequestContainer>( "Set PasswordModifyRequest newPassword" )
319 {
320 public void action( PasswordModifyRequestContainer container ) throws DecoderException
321 {
322 BerValue value = container.getCurrentTLV().getValue();
323
324 byte[] newPassword = value.getData();
325
326 if ( IS_DEBUG )
327 {
328 LOG.debug( "NewPassword = " + Strings.dumpBytes( newPassword ) );
329 }
330
331 if ( newPassword == null )
332 {
333 newPassword = Strings.EMPTY_BYTES;
334 }
335
336 container.getPwdModifyRequest().setNewPassword( newPassword );
337
338
339 container.setGrammarEndAllowed( true );
340 }
341 } );
342 }
343
344
345
346
347
348
349
350 public static Grammar<PasswordModifyRequestContainer> getInstance()
351 {
352 return instance;
353 }
354 }