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.ber.grammar.AbstractGrammar;
24 import org.apache.directory.api.asn1.ber.grammar.Grammar;
25 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
26 import org.apache.directory.api.asn1.ber.grammar.GrammarTransition;
27 import org.apache.directory.api.asn1.ber.tlv.BerValue;
28 import org.apache.directory.api.asn1.ber.tlv.UniversalTag;
29 import org.apache.directory.api.i18n.I18n;
30 import org.apache.directory.api.util.Strings;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 public class PasswordModifyResponseGrammar extends AbstractGrammar<PasswordModifyResponseContainer>
49 {
50
51
52 private static final Logger LOG = LoggerFactory.getLogger( PasswordModifyResponseGrammar.class );
53
54
55 private static Grammar<PasswordModifyResponseContainer> instance = new PasswordModifyResponseGrammar();
56
57
58
59
60
61 @SuppressWarnings("unchecked")
62 public PasswordModifyResponseGrammar()
63 {
64 setName( PasswordModifyResponseGrammar.class.getName() );
65
66
67 super.transitions = new GrammarTransition[PasswordModifyResponseStatesEnum.LAST_PASSWORD_MODIFY_RESPONSE_STATE
68 .ordinal()][256];
69
70
71
72
73
74
75
76
77
78 super.transitions[PasswordModifyResponseStatesEnum.START_STATE.ordinal()][UniversalTag.SEQUENCE.getValue()] =
79 new GrammarTransition<PasswordModifyResponseContainer>(
80 PasswordModifyResponseStatesEnum.START_STATE,
81 PasswordModifyResponseStatesEnum.PASSWORD_MODIFY_RESPONSE_SEQUENCE_STATE,
82 UniversalTag.SEQUENCE.getValue(), new GrammarAction<PasswordModifyResponseContainer>(
83 "Init PasswordModifyResponse" )
84 {
85 public void action( PasswordModifyResponseContainer container )
86 {
87 if ( container.getCurrentTLV().getLength() == 0 )
88 {
89
90 container.setGrammarEndAllowed( true );
91 }
92 }
93 } );
94
95
96
97
98
99
100
101
102
103
104 super.transitions[PasswordModifyResponseStatesEnum.PASSWORD_MODIFY_RESPONSE_SEQUENCE_STATE.ordinal()][PasswordModifyResponseConstants.GEN_PASSWORD_TAG] =
105 new GrammarTransition<PasswordModifyResponseContainer>(
106 PasswordModifyResponseStatesEnum.PASSWORD_MODIFY_RESPONSE_SEQUENCE_STATE,
107 PasswordModifyResponseStatesEnum.GEN_PASSWORD_STATE,
108 PasswordModifyResponseConstants.GEN_PASSWORD_TAG,
109 new GrammarAction<PasswordModifyResponseContainer>( "Set PasswordModifyResponse user identity" )
110 {
111 public void action( PasswordModifyResponseContainer container )
112 {
113 BerValue value = container.getCurrentTLV().getValue();
114
115 byte[] genPassword = value.getData();
116
117 if ( LOG.isDebugEnabled() )
118 {
119 LOG.debug( I18n.msg( I18n.MSG_08205_GEN_PASSWORD ) );
120 }
121
122 if ( genPassword == null )
123 {
124 genPassword = Strings.EMPTY_BYTES;
125 }
126
127 container.getPwdModifyResponse().setGenPassword( genPassword );
128
129
130 container.setGrammarEndAllowed( true );
131 }
132 } );
133 }
134
135
136
137
138
139
140
141 public static Grammar<PasswordModifyResponseContainer> getInstance()
142 {
143 return instance;
144 }
145 }