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.decorators;
21
22
23 import java.nio.BufferOverflowException;
24 import java.nio.ByteBuffer;
25
26 import org.apache.directory.api.asn1.EncoderException;
27 import org.apache.directory.api.asn1.ber.tlv.TLV;
28 import org.apache.directory.api.i18n.I18n;
29 import org.apache.directory.api.ldap.codec.api.LdapApiService;
30 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
31 import org.apache.directory.api.ldap.model.message.Control;
32 import org.apache.directory.api.ldap.model.message.DeleteRequest;
33 import org.apache.directory.api.ldap.model.name.Dn;
34 import org.apache.directory.api.util.Strings;
35
36
37
38
39
40
41
42 public class DeleteRequestDecorator extends SingleReplyRequestDecorator<DeleteRequest>
43 implements DeleteRequest
44 {
45
46 private byte[] dnBytes;
47
48
49
50
51
52
53
54
55 public DeleteRequestDecorator( LdapApiService codec, DeleteRequest decoratedMessage )
56 {
57 super( codec, decoratedMessage );
58 }
59
60
61
62
63
64
65
66
67
68 @Override
69 public Dn getName()
70 {
71 return getDecorated().getName();
72 }
73
74
75
76
77
78 @Override
79 public DeleteRequest setName( Dn name )
80 {
81 getDecorated().setName( name );
82
83 return this;
84 }
85
86
87
88
89
90 @Override
91 public DeleteRequest setMessageId( int messageId )
92 {
93 super.setMessageId( messageId );
94
95 return this;
96 }
97
98
99
100
101
102 @Override
103 public DeleteRequest addControl( Control control )
104 {
105 return ( DeleteRequest ) super.addControl( control );
106 }
107
108
109
110
111
112 @Override
113 public DeleteRequest addAllControls( Control[] controls )
114 {
115 return ( DeleteRequest ) super.addAllControls( controls );
116 }
117
118
119
120
121
122 @Override
123 public DeleteRequest removeControl( Control control )
124 {
125 return ( DeleteRequest ) super.removeControl( control );
126 }
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 @Override
144 public int computeLength()
145 {
146 dnBytes = Strings.getBytesUtf8( getName().getName() );
147 int dnLength = dnBytes.length;
148
149
150 return 1 + TLV.getNbBytes( dnLength ) + dnLength;
151 }
152
153
154
155
156
157
158
159
160
161
162
163
164 @Override
165 public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
166 {
167 try
168 {
169
170 buffer.put( LdapCodecConstants.DEL_REQUEST_TAG );
171
172
173 buffer.put( TLV.getBytes( dnBytes.length ) );
174 buffer.put( dnBytes );
175 }
176 catch ( BufferOverflowException boe )
177 {
178 throw new EncoderException( I18n.err( I18n.ERR_04005 ), boe );
179 }
180
181 return buffer;
182 }
183 }