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.codec.controls.search.entryChange;
21
22
23 import org.apache.directory.api.asn1.DecoderException;
24 import org.apache.directory.api.asn1.ber.tlv.BerValue;
25 import org.apache.directory.api.asn1.util.Asn1Buffer;
26 import org.apache.directory.api.ldap.codec.api.AbstractControlFactory;
27 import org.apache.directory.api.ldap.codec.api.ControlFactory;
28 import org.apache.directory.api.ldap.codec.api.LdapApiService;
29 import org.apache.directory.api.ldap.model.message.Control;
30 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
31 import org.apache.directory.api.ldap.model.message.controls.EntryChangeImpl;
32
33
34
35
36
37
38
39
40 public class EntryChangeFactory extends AbstractControlFactory<EntryChange>
41 {
42
43 public static final int UNDEFINED_CHANGE_NUMBER = -1;
44
45
46
47
48
49
50 public EntryChangeFactory( LdapApiService codec )
51 {
52 super( codec, EntryChange.OID );
53 }
54
55
56
57
58
59 @Override
60 public EntryChange newControl()
61 {
62 return new EntryChangeImpl();
63 }
64
65
66
67
68
69 @Override
70 public void encodeValue( Asn1Buffer buffer, Control control )
71 {
72 int start = buffer.getPos();
73
74 EntryChange entryChange = ( EntryChange ) control;
75
76
77 if ( entryChange.getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
78 {
79 BerValue.encodeInteger( buffer, entryChange.getChangeNumber() );
80 }
81
82
83 if ( entryChange.getPreviousDn() != null )
84 {
85 BerValue.encodeOctetString( buffer, entryChange.getPreviousDn().getName() );
86 }
87
88
89 BerValue.encodeEnumerated( buffer, entryChange.getChangeType().getValue() );
90
91
92 BerValue.encodeSequence( buffer, start );
93 }
94
95
96
97
98
99 @Override
100 public void decodeValue( Control control, byte[] controlBytes ) throws DecoderException
101 {
102 decodeValue( new EntryChangeContainer( control ), control, controlBytes );
103 }
104 }