1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.directory.api.ldap.extras.controls.ad;
22
23 import java.util.Arrays;
24 import java.util.EnumSet;
25 import java.util.Set;
26
27 import org.apache.directory.api.ldap.model.message.controls.AbstractControl;
28 import org.apache.directory.api.util.Strings;
29
30
31
32
33
34
35 public class AdDirSyncResponseImpl extends AbstractControl implements AdDirSyncResponse
36 {
37
38 private Set<AdDirSyncResponseFlag> flags = EnumSet.noneOf( AdDirSyncResponseFlag.class );
39
40
41
42 private int maxReturnLength = 0;
43
44
45 private byte[] cookie;
46
47
48
49
50 public AdDirSyncResponseImpl()
51 {
52 super( OID, Boolean.TRUE );
53 }
54
55
56
57
58
59 @Override
60 public Set<AdDirSyncResponseFlag> getFlags()
61 {
62 return flags;
63 }
64
65
66
67
68
69 @Override
70 public void setFlags( Set<AdDirSyncResponseFlag> flags )
71 {
72 this.flags = flags;
73 }
74
75
76
77
78
79 @Override
80 public void addFlag( AdDirSyncResponseFlag flag )
81 {
82 flags.add( flag );
83 }
84
85
86
87
88
89 @Override
90 public void removeFlag( AdDirSyncResponseFlag flag )
91 {
92 flags.remove( flag );
93 }
94
95
96
97
98
99 @Override
100 public int getMaxReturnLength()
101 {
102 return maxReturnLength;
103 }
104
105
106
107
108
109 @Override
110 public void setMaxReturnLength( int maxReturnLength )
111 {
112 this.maxReturnLength = maxReturnLength;
113 }
114
115
116
117
118
119 @Override
120 public byte[] getCookie()
121 {
122 return cookie;
123 }
124
125
126
127
128
129 @Override
130 public void setCookie( byte[] cookie )
131 {
132 if ( cookie != null )
133 {
134 this.cookie = new byte[cookie.length];
135 System.arraycopy( cookie, 0, this.cookie, 0, cookie.length );
136 }
137 else
138 {
139 this.cookie = Strings.EMPTY_BYTES;
140 }
141 }
142
143
144
145
146
147 @Override
148 public int hashCode()
149 {
150 int h = super.hashCode();
151
152 h = h * 17 + AdDirSyncResponseFlag.getBitmask( flags );
153 h = h * 17 + maxReturnLength;
154
155 if ( cookie != null )
156 {
157 for ( byte b : cookie )
158 {
159 h = h * 17 + b;
160 }
161 }
162
163 return h;
164 }
165
166
167
168
169
170 @Override
171 public boolean equals( Object other )
172 {
173 if ( this == other )
174 {
175 return true;
176 }
177
178 if ( !( other instanceof AdDirSyncResponse ) )
179 {
180 return false;
181 }
182
183 AdDirSyncResponse otherControl = ( AdDirSyncResponse ) other;
184
185 return super.equals( other )
186 && ( maxReturnLength == otherControl.getMaxReturnLength() )
187 && ( flags.equals( otherControl.getFlags() ) )
188 && ( Arrays.equals( cookie, otherControl.getCookie() ) )
189 && ( isCritical() == otherControl.isCritical() );
190 }
191
192
193
194
195
196 @Override
197 public String toString()
198 {
199 StringBuilder sb = new StringBuilder();
200
201 sb.append( " DirSync control :\n" );
202 sb.append( " oid : " ).append( getOid() ).append( '\n' );
203 sb.append( " critical : " ).append( isCritical() ).append( '\n' );
204 sb.append( " flags : 0x" ).append( Integer.toHexString( AdDirSyncResponseFlag.getBitmask( flags ) ) )
205 .append( ' ' ).append( flags.toString() ).append( "\n" );
206 sb.append( " maxReturnLength : '" ).append( getMaxReturnLength() ).append( "'\n" );
207 sb.append( " cookie : '" ).append( Strings.dumpBytes( getCookie() ) ).append( "'\n" );
208
209 return sb.toString();
210 }
211 }