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