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.api;
21
22
23 import java.util.Set;
24
25 import org.apache.directory.api.util.Strings;
26 import org.apache.mina.util.ConcurrentHashSet;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 public class DefaultConfigurableBinaryAttributeDetector extends SchemaBinaryAttributeDetector
66 implements ConfigurableBinaryAttributeDetector
67 {
68
69 private Set<String> binaryAttributes = new ConcurrentHashSet<>();
70
71
72 public static final String[] DEFAULT_BINARY_ATTRIBUTES = new String[]
73 {
74
75 "entryACI",
76 "prescriptiveACI",
77 "subentryACI",
78
79
80 "audio",
81
82
83 "javaByteCode",
84 "javaClassByteCode",
85 "krb5key",
86 "m-byteCode",
87 "privateKey",
88 "publicKey",
89 "userPKCS12",
90 "userSMIMECertificate",
91
92
93 "cACertificate",
94 "userCertificate",
95
96
97 "authorityRevocationList",
98 "certificateRevocationList",
99 "deltaRevocationList",
100
101
102 "crossCertificatePair",
103
104
105 "personalSignature",
106 "photo",
107
108
109 "jpegPhoto",
110
111
112 "supportedAlgorithms",
113
114
115 "javaSerializedData",
116 "userPassword",
117
118
119 "objectSid",
120 "objectGUID",
121 "thumbnailLogo",
122 "thumbnailPhoto",
123 "x500uniqueIdentifier"
124 };
125
126
127
128
129
130
131 public DefaultConfigurableBinaryAttributeDetector()
132 {
133 setBinaryAttributes( DEFAULT_BINARY_ATTRIBUTES );
134 }
135
136
137
138
139
140 @Override
141 public boolean isBinary( String attributeId )
142 {
143 boolean isBinary = super.isBinary( attributeId );
144
145 if ( isBinary )
146 {
147 return true;
148 }
149
150 String attrId = Strings.toLowerCaseAscii( attributeId );
151
152 return binaryAttributes.contains( attrId );
153 }
154
155
156
157
158
159 @Override
160 public void addBinaryAttribute( String... binaryAttributes )
161 {
162 if ( binaryAttributes != null )
163 {
164 for ( String binaryAttribute : binaryAttributes )
165 {
166 String attrId = Strings.toLowerCaseAscii( binaryAttribute );
167 this.binaryAttributes.add( attrId );
168 }
169 }
170 }
171
172
173
174
175
176 @Override
177 public void removeBinaryAttribute( String... binaryAttributes )
178 {
179 if ( binaryAttributes != null )
180 {
181 for ( String binaryAttribute : binaryAttributes )
182 {
183 String attrId = Strings.toLowerCaseAscii( binaryAttribute );
184 this.binaryAttributes.remove( attrId );
185 }
186 }
187 }
188
189
190
191
192
193 @Override
194 public void setBinaryAttributes( String... binaryAttributes )
195 {
196 this.binaryAttributes.clear();
197
198
199 if ( binaryAttributes == null )
200 {
201
202 addBinaryAttribute( DEFAULT_BINARY_ATTRIBUTES );
203 }
204 else
205 {
206 addBinaryAttribute( binaryAttributes );
207 }
208 }
209 }