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.AddResponse;
32
33
34
35
36
37
38
39 public class AddResponseDecorator extends ResponseDecorator<AddResponse> implements AddResponse
40 {
41
42 private int addResponseLength;
43
44
45
46
47
48
49
50
51 public AddResponseDecorator( LdapApiService codec, AddResponse decoratedMessage )
52 {
53 super( codec, decoratedMessage );
54 }
55
56
57
58
59
60 public AddResponse getAddResponse()
61 {
62 return getDecorated();
63 }
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 @Override
84 public int computeLength()
85 {
86 AddResponse addResponse = getAddResponse();
87 setLdapResult( new LdapResultDecorator( getCodecService(), addResponse.getLdapResult() ) );
88 addResponseLength = ( ( LdapResultDecorator ) getLdapResult() ).computeLength();
89
90 return 1 + TLV.getNbBytes( addResponseLength ) + addResponseLength;
91 }
92
93
94
95
96
97
98
99
100
101 @Override
102 public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
103 {
104 try
105 {
106
107 buffer.put( LdapCodecConstants.ADD_RESPONSE_TAG );
108 buffer.put( TLV.getBytes( addResponseLength ) );
109
110
111 ( ( LdapResultDecorator ) getLdapResult() ).encode( buffer );
112
113 return buffer;
114 }
115 catch ( BufferOverflowException boe )
116 {
117 throw new EncoderException( I18n.err( I18n.ERR_04005 ), boe );
118 }
119 }
120 }