1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.core.api.entry;
21
22
23 import java.io.IOException;
24 import java.io.ObjectInput;
25 import java.io.ObjectOutput;
26 import java.util.Collection;
27 import java.util.Iterator;
28 import java.util.List;
29
30 import org.apache.directory.api.ldap.model.entry.Attribute;
31 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
32 import org.apache.directory.api.ldap.model.entry.Entry;
33 import org.apache.directory.api.ldap.model.entry.Value;
34 import org.apache.directory.api.ldap.model.exception.LdapException;
35 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
36 import org.apache.directory.api.ldap.model.name.Dn;
37 import org.apache.directory.api.ldap.model.schema.AttributeType;
38 import org.apache.directory.server.i18n.I18n;
39
40
41
42
43
44
45
46
47 public class ClonedServerEntry implements Entry
48 {
49
50 protected Entry originalEntry;
51
52
53 protected Entry clonedEntry;
54
55
56
57
58
59 public ClonedServerEntry()
60 {
61 }
62
63
64
65
66
67
68
69
70
71 public ClonedServerEntry( Entry originalEntry )
72 {
73 this.originalEntry = originalEntry;
74 this.clonedEntry = originalEntry.clone();
75 }
76
77
78
79
80
81 public Entry getOriginalEntry()
82 {
83 return originalEntry;
84 }
85
86
87
88
89
90 public Entry getClonedEntry()
91 {
92 return clonedEntry;
93 }
94
95
96 @Override
97 public Entry add( AttributeType attributeType, byte[]... values ) throws LdapException
98 {
99 return clonedEntry.add( attributeType, values );
100 }
101
102
103 @Override
104 public Entry add( AttributeType attributeType, String... values ) throws LdapException
105 {
106 return clonedEntry.add( attributeType, values );
107 }
108
109
110 @Override
111 public Entry add( AttributeType attributeType, Value... values ) throws LdapException
112 {
113 return clonedEntry.add( attributeType, values );
114 }
115
116
117 @Override
118 public Entry add( String upId, AttributeType attributeType, byte[]... values ) throws LdapException
119 {
120 return clonedEntry.add( attributeType, values );
121 }
122
123
124 @Override
125 public Entry add( String upId, AttributeType attributeType, String... values ) throws LdapException
126 {
127 return clonedEntry.add( attributeType, values );
128 }
129
130
131 @Override
132 public Entry add( String upId, AttributeType attributeType, Value... values ) throws LdapException
133 {
134 return clonedEntry.add( attributeType, values );
135 }
136
137
138 @Override
139 public boolean contains( AttributeType attributeType, byte[]... values )
140 {
141 return clonedEntry.contains( attributeType, values );
142 }
143
144
145 @Override
146 public boolean contains( AttributeType attributeType, String... values )
147 {
148 return clonedEntry.contains( attributeType, values );
149 }
150
151
152 @Override
153 public boolean contains( AttributeType attributeType, Value... values )
154 {
155 return clonedEntry.contains( attributeType, values );
156 }
157
158
159 @Override
160 public boolean containsAttribute( AttributeType attributeType )
161 {
162 return clonedEntry.containsAttribute( attributeType );
163 }
164
165
166 @Override
167 public Attribute get( AttributeType attributeType )
168 {
169 return clonedEntry.get( attributeType );
170 }
171
172
173
174
175
176 @Override
177 public Collection<Attribute> getAttributes()
178 {
179 return clonedEntry.getAttributes();
180 }
181
182
183 @Override
184 public boolean hasObjectClass( Attribute... objectClasses )
185 {
186 return clonedEntry.hasObjectClass( objectClasses );
187 }
188
189
190 @Override
191 public Attribute put( AttributeType attributeType, byte[]... values ) throws LdapException
192 {
193 return clonedEntry.put( attributeType, values );
194 }
195
196
197 @Override
198 public Attribute put( AttributeType attributeType, String... values ) throws LdapException
199 {
200 return clonedEntry.put( attributeType, values );
201 }
202
203
204 @Override
205 public Attribute put( AttributeType attributeType, Value... values ) throws LdapException
206 {
207 return clonedEntry.put( attributeType, values );
208 }
209
210
211 @Override
212 public Attribute put( String upId, AttributeType attributeType, byte[]... values ) throws LdapException
213 {
214 return clonedEntry.put( attributeType, values );
215 }
216
217
218 @Override
219 public Attribute put( String upId, AttributeType attributeType, String... values ) throws LdapException
220 {
221 return clonedEntry.put( upId, attributeType, values );
222 }
223
224
225 @Override
226 public Attribute put( String upId, AttributeType attributeType, Value... values ) throws LdapException
227 {
228 return clonedEntry.put( upId, attributeType, values );
229 }
230
231
232 @Override
233 public boolean remove( AttributeType attributeType, byte[]... values ) throws LdapException
234 {
235 return clonedEntry.remove( attributeType, values );
236 }
237
238
239 @Override
240 public boolean remove( AttributeType attributeType, String... values ) throws LdapException
241 {
242 return clonedEntry.remove( attributeType, values );
243 }
244
245
246 @Override
247 public boolean remove( AttributeType attributeType, Value... values ) throws LdapException
248 {
249 return clonedEntry.remove( attributeType, values );
250 }
251
252
253 @Override
254 public List<Attribute> remove( Attribute... attributes ) throws LdapException
255 {
256 return clonedEntry.remove( attributes );
257 }
258
259
260 @Override
261 public void removeAttributes( AttributeType... attributes )
262 {
263 clonedEntry.removeAttributes( attributes );
264 }
265
266
267 @Override
268 public Entry add( Attribute... attributes ) throws LdapException
269 {
270 return clonedEntry.add( attributes );
271 }
272
273
274 @Override
275 public Entry add( String upId, String... values ) throws LdapException
276 {
277 return clonedEntry.add( upId, values );
278 }
279
280
281 @Override
282 public Entry add( String upId, byte[]... values ) throws LdapException
283 {
284 return clonedEntry.add( upId, values );
285 }
286
287
288 @Override
289 public Entry add( String upId, Value... values ) throws LdapException
290 {
291 return clonedEntry.add( upId, values );
292 }
293
294
295 @Override
296 public void clear()
297 {
298 clonedEntry.clear();
299 }
300
301
302 @Override
303 public boolean contains( Attribute... attributes )
304 {
305 return clonedEntry.contains( attributes );
306 }
307
308
309 @Override
310 public boolean contains( String upId, byte[]... values )
311 {
312 return clonedEntry.contains( upId, values );
313 }
314
315
316 @Override
317 public boolean contains( String upId, String... values )
318 {
319 return clonedEntry.contains( upId, values );
320 }
321
322
323 @Override
324 public boolean contains( String upId, Value... values )
325 {
326 return clonedEntry.contains( upId, values );
327 }
328
329
330 @Override
331 public boolean containsAttribute( String... attributes )
332 {
333 return clonedEntry.containsAttribute( attributes );
334 }
335
336
337 @Override
338 public Attribute get( String alias )
339 {
340 return clonedEntry.get( alias );
341 }
342
343
344 @Override
345 public Dn getDn()
346 {
347 return clonedEntry.getDn();
348 }
349
350
351 @Override
352 public boolean hasObjectClass( String... objectClasses )
353 {
354 return clonedEntry.hasObjectClass( objectClasses );
355 }
356
357
358
359
360
361 @Override
362 public boolean isSchemaAware()
363 {
364 return clonedEntry.isSchemaAware();
365 }
366
367
368 @Override
369 public Iterator<Attribute> iterator()
370 {
371 return clonedEntry.iterator();
372 }
373
374
375 @Override
376 public List<Attribute> put( Attribute... attributes ) throws LdapException
377 {
378 return clonedEntry.put( attributes );
379 }
380
381
382 @Override
383 public Attribute put( String upId, byte[]... values )
384 {
385 return clonedEntry.put( upId, values );
386 }
387
388
389 @Override
390 public Attribute put( String upId, String... values )
391 {
392 return clonedEntry.put( upId, values );
393 }
394
395
396 @Override
397 public Attribute put( String upId, Value... values )
398 {
399 return clonedEntry.put( upId, values );
400 }
401
402
403 @Override
404 public boolean remove( String upId, byte[]... values ) throws LdapException
405 {
406 return clonedEntry.remove( upId, values );
407 }
408
409
410 @Override
411 public boolean remove( String upId, String... values ) throws LdapException
412 {
413 return clonedEntry.remove( upId, values );
414 }
415
416
417 @Override
418 public boolean remove( String upId, Value... values ) throws LdapException
419 {
420 return clonedEntry.remove( upId, values );
421 }
422
423
424 @Override
425 public void removeAttributes( String... attributes )
426 {
427 clonedEntry.removeAttributes( attributes );
428 }
429
430
431 @Override
432 public void setDn( Dn dn )
433 {
434 clonedEntry.setDn( dn );
435 }
436
437
438 @Override
439 public void setDn( String dn ) throws LdapInvalidDnException
440 {
441 clonedEntry.setDn( dn );
442 }
443
444
445 @Override
446 public int size()
447 {
448 return clonedEntry.size();
449 }
450
451
452 public Entry toClientEntry() throws LdapException
453 {
454
455 Entry clientEntry = new DefaultEntry( clonedEntry.getDn() );
456
457
458 for ( Attribute clonedEntry : this )
459 {
460 Attribute clientAttribute = clonedEntry.clone();
461 clientEntry.add( clientAttribute );
462 }
463
464 return clientEntry;
465 }
466
467
468
469
470
471
472
473 @Override
474 public void readExternal( ObjectInput in ) throws IOException, ClassNotFoundException
475 {
476 throw new IllegalStateException( I18n.err( I18n.ERR_455 ) );
477 }
478
479
480
481
482
483
484
485 @Override
486 public void writeExternal( ObjectOutput out ) throws IOException
487 {
488 throw new IllegalStateException( I18n.err( I18n.ERR_456 ) );
489 }
490
491
492 @Override
493 public Entry clone()
494 {
495 return clonedEntry.clone();
496 }
497
498
499 @Override
500 public Entry shallowClone()
501 {
502 return clonedEntry.shallowClone();
503 }
504
505
506
507
508
509 @Override
510 public int hashCode()
511 {
512 return 703;
513 }
514
515
516
517
518
519 @Override
520 public boolean equals( Object obj )
521 {
522
523 if ( this == obj )
524 {
525 return true;
526 }
527
528 Entry other;
529
530 if ( obj instanceof ClonedServerEntry )
531 {
532 other = ( ( ClonedServerEntry ) obj ).getClonedEntry();
533 }
534 else if ( obj instanceof Entry )
535 {
536 other = ( Entry ) obj;
537 }
538 else
539 {
540 return false;
541 }
542 if ( clonedEntry == null )
543 {
544 return other == null;
545 }
546 else
547 {
548 return clonedEntry.equals( other );
549 }
550 }
551
552
553
554
555
556 @Override
557 public String toString()
558 {
559 return toString( "" );
560 }
561
562
563
564
565
566 @Override
567 public String toString( String tabs )
568 {
569 return clonedEntry.toString( tabs );
570 }
571 }