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.dsmlv2.response;
21
22
23 import java.util.Collection;
24 import java.util.List;
25
26 import org.apache.directory.api.dsmlv2.DsmlDecorator;
27 import org.apache.directory.api.dsmlv2.ParserUtils;
28 import org.apache.directory.api.ldap.codec.api.LdapApiService;
29 import org.apache.directory.api.ldap.model.message.LdapResult;
30 import org.apache.directory.api.ldap.model.message.Message;
31 import org.apache.directory.api.ldap.model.message.Referral;
32 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
33 import org.apache.directory.api.ldap.model.name.Dn;
34 import org.apache.directory.api.ldap.model.url.LdapUrl;
35 import org.dom4j.Element;
36
37
38
39
40
41
42
43 public class LdapResultDsml implements DsmlDecorator<LdapResult>, LdapResult
44 {
45
46 private LdapResult result;
47
48
49 private Message message;
50
51
52 private LdapApiService codec;
53
54
55
56
57
58
59
60
61
62 public LdapResultDsml( LdapApiService codec, LdapResult result, Message message )
63 {
64 this.codec = codec;
65 this.result = result;
66 this.message = message;
67 }
68
69
70
71
72
73 public Element toDsml( Element root )
74 {
75
76
77 int requestID = message.getMessageId();
78 if ( requestID > 0 )
79 {
80 root.addAttribute( "requestID", Integer.toString( requestID ) );
81 }
82
83
84 Dn matchedDn = result.getMatchedDn();
85
86 if ( !Dn.isNullOrEmpty( matchedDn ) )
87 {
88 root.addAttribute( "matchedDn", matchedDn.getName() );
89 }
90
91
92 ParserUtils.addControls( codec, root, message.getControls().values() );
93
94
95 Element resultCodeElement = root.addElement( "resultCode" );
96 resultCodeElement.addAttribute( "code", Integer.toString( result.getResultCode().getResultCode() ) );
97 resultCodeElement.addAttribute( "descr", result.getResultCode().getMessage() );
98
99
100 String errorMessage = ( result.getDiagnosticMessage() );
101
102 if ( ( errorMessage != null ) && ( errorMessage.length() != 0 ) )
103 {
104 Element errorMessageElement = root.addElement( "errorMessage" );
105 errorMessageElement.addText( errorMessage );
106 }
107
108
109 Referral referral = result.getReferral();
110 if ( referral != null )
111 {
112 Collection<String> ldapUrls = referral.getLdapUrls();
113 if ( ldapUrls != null )
114 {
115 for ( String ldapUrl : ldapUrls )
116 {
117 Element referalElement = root.addElement( "referal" );
118 referalElement.addText( ldapUrl );
119 }
120 }
121 }
122
123 return root;
124 }
125
126
127
128
129
130 public String getDiagnosticMessage()
131 {
132 return result.getDiagnosticMessage();
133 }
134
135
136
137
138
139 public void setDiagnosticMessage( String diagnosticMessage )
140 {
141 result.setDiagnosticMessage( diagnosticMessage );
142 }
143
144
145
146
147
148
149
150 public Dn getMatchedDn()
151 {
152 return result.getMatchedDn();
153 }
154
155
156
157
158
159
160
161 public void setMatchedDn( Dn matchedDn )
162 {
163 result.setMatchedDn( matchedDn );
164 }
165
166
167
168
169
170
171
172 public List<String> getReferrals()
173 {
174 return ( List<String> ) result.getReferral().getLdapUrls();
175 }
176
177
178
179
180
181
182
183 public void addReferral( LdapUrl referral )
184 {
185 result.getReferral().addLdapUrl( referral.toString() );
186 }
187
188
189
190
191
192
193
194 public ResultCodeEnum getResultCode()
195 {
196 return result.getResultCode();
197 }
198
199
200
201
202
203
204
205 public void setResultCode( ResultCodeEnum resultCode )
206 {
207 result.setResultCode( resultCode );
208 }
209
210
211
212
213
214 public LdapResult getDecorated()
215 {
216 return result;
217 }
218
219
220
221
222
223 public boolean isReferral()
224 {
225 return getDecorated().isReferral();
226 }
227
228
229
230
231
232 public Referral getReferral()
233 {
234 return getDecorated().getReferral();
235 }
236
237
238
239
240
241 public void setReferral( Referral referral )
242 {
243 getDecorated().setReferral( referral );
244 }
245
246
247
248
249
250 public boolean isDefaultSuccess()
251 {
252 return false;
253 }
254 }