View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *  
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *  
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License. 
18   *  
19   */
20  package org.apache.directory.server.schema.bootstrap;
21  
22  
23  import javax.naming.NamingException;
24  
25  import org.apache.directory.server.schema.bootstrap.ProducerTypeEnum;
26  import org.apache.directory.server.schema.registries.Registries;
27  import org.apache.directory.server.schema.registries.SyntaxCheckerRegistry;
28  
29  
30  /**
31   * A simple Syntax factory for the core LDAP schema in Section 4.3.2 of
32   * <a href="http://www.faqs.org/rfcs/rfc2252.html">RFC2252</a>.
33   * The following table reproduced from RFC2252 shows the syntaxes included
34   * within this SyntaxFactory:
35   * <pre>
36   * Index   Value being represented   H-R     OBJECT IDENTIFIER
37   * =====================================================================
38   * 0 ACI Item                         N  1.3.6.1.4.1.1466.115.121.1.1
39   * 1 Access Point                     Y  1.3.6.1.4.1.1466.115.121.1.2
40   * 2 Attribute Type Description       Y  1.3.6.1.4.1.1466.115.121.1.3
41   * 3 Audio                            N  1.3.6.1.4.1.1466.115.121.1.4
42   * 4 Binary                           N  1.3.6.1.4.1.1466.115.121.1.5
43   * 5 Bit String                       Y  1.3.6.1.4.1.1466.115.121.1.6
44   * 6 Boolean                          Y  1.3.6.1.4.1.1466.115.121.1.7
45   * 7 Certificate                      N  1.3.6.1.4.1.1466.115.121.1.8
46   * 8 Certificate List                 N  1.3.6.1.4.1.1466.115.121.1.9
47   * 9 Certificate Pair                 N  1.3.6.1.4.1.1466.115.121.1.10
48   * 10 Country String                  Y  1.3.6.1.4.1.1466.115.121.1.11
49   * 11 DN                              Y  1.3.6.1.4.1.1466.115.121.1.12
50   * 12 Data Quality Syntax             Y  1.3.6.1.4.1.1466.115.121.1.13
51   * 13 Delivery Method                 Y  1.3.6.1.4.1.1466.115.121.1.14
52   * 14 Directory String                Y  1.3.6.1.4.1.1466.115.121.1.15
53   * 15 DIT Content Rule Description    Y  1.3.6.1.4.1.1466.115.121.1.16
54   * 16 DIT Structure Rule Description  Y  1.3.6.1.4.1.1466.115.121.1.17
55   * 17 DL Submit Permission            Y  1.3.6.1.4.1.1466.115.121.1.18
56   * 18 DSA Quality Syntax              Y  1.3.6.1.4.1.1466.115.121.1.19
57   * 19 DSE Type                        Y  1.3.6.1.4.1.1466.115.121.1.20
58   * 20 Enhanced Guide                  Y  1.3.6.1.4.1.1466.115.121.1.21
59   * 21 Facsimile Telephone Number      Y  1.3.6.1.4.1.1466.115.121.1.22
60   * 22 Fax                             N  1.3.6.1.4.1.1466.115.121.1.23
61   * 23 Generalized Time                Y  1.3.6.1.4.1.1466.115.121.1.24
62   * 24 Guide                           Y  1.3.6.1.4.1.1466.115.121.1.25
63   * 25 IA5 String                      Y  1.3.6.1.4.1.1466.115.121.1.26
64   * 26 INTEGER                         Y  1.3.6.1.4.1.1466.115.121.1.27
65   * 27 JPEG                            N  1.3.6.1.4.1.1466.115.121.1.28
66   * 28 Master And Shadow Access Points Y  1.3.6.1.4.1.1466.115.121.1.29
67   * 29 Matching Rule Description       Y  1.3.6.1.4.1.1466.115.121.1.30
68   * 30 Matching Rule Use Description   Y  1.3.6.1.4.1.1466.115.121.1.31
69   * 31 Mail Preference                 Y  1.3.6.1.4.1.1466.115.121.1.32
70   * 32 MHS OR Address                  Y  1.3.6.1.4.1.1466.115.121.1.33
71   * 33 Name And Optional UID           Y  1.3.6.1.4.1.1466.115.121.1.34
72   * 34 Name Form Description           Y  1.3.6.1.4.1.1466.115.121.1.35
73   * 35 Numeric String                  Y  1.3.6.1.4.1.1466.115.121.1.36
74   * 36 Object Class Description        Y  1.3.6.1.4.1.1466.115.121.1.37
75   * 37 OID                             Y  1.3.6.1.4.1.1466.115.121.1.38
76   * 38 Other Mailbox                   Y  1.3.6.1.4.1.1466.115.121.1.39
77   *
78   * 39 Octet String                    Y  1.3.6.1.4.1.1466.115.121.1.40
79   *
80   * This is not going to be followed for OctetString which needs to be treated
81   * as binary data.
82   *
83   * 40 Postal Address                  Y  1.3.6.1.4.1.1466.115.121.1.41
84   * 41 Protocol Information            Y  1.3.6.1.4.1.1466.115.121.1.42
85   * 42 Presentation Address            Y  1.3.6.1.4.1.1466.115.121.1.43
86   * 43 Printable String                Y  1.3.6.1.4.1.1466.115.121.1.44
87   * 44 Subtree Specification           Y  1.3.6.1.4.1.1466.115.121.1.45
88   * 45 Supplier Information            Y  1.3.6.1.4.1.1466.115.121.1.46
89   * 46 Supplier Or Consumer            Y  1.3.6.1.4.1.1466.115.121.1.47
90   * 47 Supplier And Consumer           Y  1.3.6.1.4.1.1466.115.121.1.48
91   * 48 Supported Algorithm             N  1.3.6.1.4.1.1466.115.121.1.49
92   * 49 Telephone Number                Y  1.3.6.1.4.1.1466.115.121.1.50
93   * 50 Teletex Terminal Identifier     Y  1.3.6.1.4.1.1466.115.121.1.51
94   * 51 Telex Number                    Y  1.3.6.1.4.1.1466.115.121.1.52
95   * 52 UTC Time                        Y  1.3.6.1.4.1.1466.115.121.1.53
96   * 53 LDAP Syntax Description         Y  1.3.6.1.4.1.1466.115.121.1.54
97   * 54 Modify Rights                   Y  1.3.6.1.4.1.1466.115.121.1.55
98   * 55 LDAP Schema Definition          Y  1.3.6.1.4.1.1466.115.121.1.56
99   * 56 LDAP Schema Description         Y  1.3.6.1.4.1.1466.115.121.1.57
100  * 57 Substring Assertion             Y  1.3.6.1.4.1.1466.115.121.1.58
101  * </pre>
102  *
103  *
104  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
105  * @version $Rev: 549898 $
106  */
107 public class SystemSyntaxProducer extends AbstractBootstrapProducer
108 {
109     public SystemSyntaxProducer()
110     {
111         super( ProducerTypeEnum.SYNTAX_PRODUCER );
112     }
113 
114 
115     // ------------------------------------------------------------------------
116     // BootstrapProducer Methods
117     // ------------------------------------------------------------------------
118 
119     public void produce( Registries registries, ProducerCallback cb ) throws NamingException
120     {
121         BootstrapSyntax syntax;
122         SyntaxCheckerRegistry syntaxCheckerRegistry = registries.getSyntaxCheckerRegistry();
123 
124         /*
125          * From RFC 2252 Section 4.3.2. on Syntax Object Identifiers
126          */
127 
128         /*
129          * Value being represented        H-R OBJECT IDENTIFIER
130          * ==================================================================
131          * 0 ACI Item                        N  1.3.6.1.4.1.1466.115.121.1.1
132          * 1 Access Point                    Y  1.3.6.1.4.1.1466.115.121.1.2
133          * 2 Attribute Type Description      Y  1.3.6.1.4.1.1466.115.121.1.3
134          * 3 Audio                           N  1.3.6.1.4.1.1466.115.121.1.4
135          * 4 Binary                          N  1.3.6.1.4.1.1466.115.121.1.5
136          * 5 Bit String                      Y  1.3.6.1.4.1.1466.115.121.1.6
137          * 6 Boolean                         Y  1.3.6.1.4.1.1466.115.121.1.7
138          * 7 Certificate                     N  1.3.6.1.4.1.1466.115.121.1.8
139          * 8 Certificate List                N  1.3.6.1.4.1.1466.115.121.1.9
140          * 9 Certificate Pair                N  1.3.6.1.4.1.1466.115.121.1.10
141          */
142         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.1", syntaxCheckerRegistry );
143         syntax.setNames( new String[]
144             { "ACI Item" } );
145         // This is in direct conflict with RFC 2252 but for us ACI Item is human readable
146         syntax.setHumanReadable( true );
147         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
148 
149         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.2", syntaxCheckerRegistry );
150         syntax.setNames( new String[]
151             { "Access Point" } );
152         syntax.setHumanReadable( true );
153         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
154 
155         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.3", syntaxCheckerRegistry );
156         syntax.setNames( new String[]
157             { "Attribute Type Description" } );
158         syntax.setHumanReadable( true );
159         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
160 
161         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.4", syntaxCheckerRegistry );
162         syntax.setNames( new String[]
163             { "Audio" } );
164         syntax.setHumanReadable( false );
165         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
166 
167         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.5", syntaxCheckerRegistry );
168         syntax.setNames( new String[]
169             { "Binary" } );
170         syntax.setHumanReadable( false );
171         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
172 
173         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.6", syntaxCheckerRegistry );
174         syntax.setNames( new String[]
175             { "Bit String" } );
176         syntax.setHumanReadable( true );
177         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
178 
179         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.7", syntaxCheckerRegistry );
180         syntax.setNames( new String[]
181             { "Boolean" } );
182         syntax.setHumanReadable( true );
183         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
184 
185         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.8", syntaxCheckerRegistry );
186         syntax.setNames( new String[]
187             { "Certificate" } );
188         syntax.setHumanReadable( false );
189         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
190 
191         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.9", syntaxCheckerRegistry );
192         syntax.setNames( new String[]
193             { "Certificate List" } );
194         syntax.setHumanReadable( false );
195         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
196 
197         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.10", syntaxCheckerRegistry );
198         syntax.setNames( new String[]
199             { "Certificate Pair" } );
200         syntax.setHumanReadable( false );
201         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
202 
203         /*
204          * Value being represented        H-R OBJECT IDENTIFIER
205          * ===================================================================
206          * 10 Country String                  Y  1.3.6.1.4.1.1466.115.121.1.11
207          * 11 DN                              Y  1.3.6.1.4.1.1466.115.121.1.12
208          * 12 Data Quality Syntax             Y  1.3.6.1.4.1.1466.115.121.1.13
209          * 13 Delivery Method                 Y  1.3.6.1.4.1.1466.115.121.1.14
210          * 14 Directory String                Y  1.3.6.1.4.1.1466.115.121.1.15
211          * 15 DIT Content Rule Description    Y  1.3.6.1.4.1.1466.115.121.1.16
212          * 16 DIT Structure Rule Description  Y  1.3.6.1.4.1.1466.115.121.1.17
213          * 17 DL Submit Permission            Y  1.3.6.1.4.1.1466.115.121.1.18
214          * 18 DSA Quality Syntax              Y  1.3.6.1.4.1.1466.115.121.1.19
215          * 19 DSE Type                        Y  1.3.6.1.4.1.1466.115.121.1.20
216          */
217         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.11", syntaxCheckerRegistry );
218         syntax.setNames( new String[]
219             { "Country String" } );
220         syntax.setHumanReadable( true );
221         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
222 
223         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.12", syntaxCheckerRegistry );
224         syntax.setNames( new String[]
225             { "DN" } );
226         syntax.setHumanReadable( true );
227         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
228 
229         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.13", syntaxCheckerRegistry );
230         syntax.setNames( new String[]
231             { "Data Quality Syntax" } );
232         syntax.setHumanReadable( true );
233         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
234 
235         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.14", syntaxCheckerRegistry );
236         syntax.setNames( new String[]
237             { "Delivery Method" } );
238         syntax.setHumanReadable( true );
239         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
240 
241         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.15", syntaxCheckerRegistry );
242         syntax.setNames( new String[]
243             { "Directory String" } );
244         syntax.setHumanReadable( true );
245         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
246 
247         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.16", syntaxCheckerRegistry );
248         syntax.setNames( new String[]
249             { "DIT Content Rule Description" } );
250         syntax.setHumanReadable( true );
251         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
252 
253         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.17", syntaxCheckerRegistry );
254         syntax.setNames( new String[]
255             { "DIT Structure Rule Description" } );
256         syntax.setHumanReadable( true );
257         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
258 
259         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.18", syntaxCheckerRegistry );
260         syntax.setNames( new String[]
261             { "DL Submit Permission" } );
262         syntax.setHumanReadable( true );
263         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
264 
265         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.19", syntaxCheckerRegistry );
266         syntax.setNames( new String[]
267             { "DSA Quality Syntax" } );
268         syntax.setHumanReadable( true );
269         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
270 
271         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.20", syntaxCheckerRegistry );
272         syntax.setNames( new String[]
273             { "DSE Type" } );
274         syntax.setHumanReadable( true );
275         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
276 
277         /*
278          * Value being represented        H-R OBJECT IDENTIFIER
279          * ===================================================================
280          * 20 Enhanced Guide                  Y  1.3.6.1.4.1.1466.115.121.1.21
281          * 21 Facsimile Telephone Number      Y  1.3.6.1.4.1.1466.115.121.1.22
282          * 22 Fax                             N  1.3.6.1.4.1.1466.115.121.1.23
283          * 23 Generalized Time                Y  1.3.6.1.4.1.1466.115.121.1.24
284          * 24 Guide                           Y  1.3.6.1.4.1.1466.115.121.1.25
285          * 25 IA5 String                      Y  1.3.6.1.4.1.1466.115.121.1.26
286          * 26 INTEGER                         Y  1.3.6.1.4.1.1466.115.121.1.27
287          * 27 JPEG                            N  1.3.6.1.4.1.1466.115.121.1.28
288          * 28 Master And Shadow Access Points Y  1.3.6.1.4.1.1466.115.121.1.29
289          * 29 Matching Rule Description       Y  1.3.6.1.4.1.1466.115.121.1.30
290          */
291         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.21", syntaxCheckerRegistry );
292         syntax.setNames( new String[]
293             { "Enhanced Guide" } );
294         syntax.setHumanReadable( true );
295         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
296 
297         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.22", syntaxCheckerRegistry );
298         syntax.setNames( new String[]
299             { "Facsimile Telephone Number" } );
300         syntax.setHumanReadable( true );
301         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
302 
303         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.23", syntaxCheckerRegistry );
304         syntax.setNames( new String[]
305             { "Fax" } );
306         syntax.setHumanReadable( false );
307         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
308 
309         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.24", syntaxCheckerRegistry );
310         syntax.setNames( new String[]
311             { "Generalized Time" } );
312         syntax.setHumanReadable( true );
313         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
314 
315         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.25", syntaxCheckerRegistry );
316         syntax.setNames( new String[]
317             { "Guide" } );
318         syntax.setHumanReadable( true );
319         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
320 
321         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.26", syntaxCheckerRegistry );
322         syntax.setNames( new String[]
323             { "IA5 String" } );
324         syntax.setHumanReadable( true );
325         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
326 
327         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.27", syntaxCheckerRegistry );
328         syntax.setNames( new String[]
329             { "INTEGER" } );
330         syntax.setHumanReadable( true );
331         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
332 
333         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.28", syntaxCheckerRegistry );
334         syntax.setNames( new String[]
335             { "JPEG" } );
336         syntax.setHumanReadable( false );
337         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
338 
339         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.29", syntaxCheckerRegistry );
340         syntax.setNames( new String[]
341             { "Master And Shadow Access Points" } );
342         syntax.setHumanReadable( true );
343         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
344 
345         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.30", syntaxCheckerRegistry );
346         syntax.setNames( new String[]
347             { "Matching Rule Description" } );
348         syntax.setHumanReadable( true );
349         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
350 
351         /*
352          * Value being represented        H-R OBJECT IDENTIFIER
353          * ==================================================================
354          * 30 Matching Rule Use Description   Y  1.3.6.1.4.1.1466.115.121.1.31
355          * 31 Mail Preference                 Y  1.3.6.1.4.1.1466.115.121.1.32
356          * 32 MHS OR Address                  Y  1.3.6.1.4.1.1466.115.121.1.33
357          * 33 Name And Optional UID           Y  1.3.6.1.4.1.1466.115.121.1.34
358          * 34 Name Form Description           Y  1.3.6.1.4.1.1466.115.121.1.35
359          * 35 Numeric String                  Y  1.3.6.1.4.1.1466.115.121.1.36
360          * 36 Object Class Description        Y  1.3.6.1.4.1.1466.115.121.1.37
361          * 37 OID                             Y  1.3.6.1.4.1.1466.115.121.1.38
362          * 38 Other Mailbox                   Y  1.3.6.1.4.1.1466.115.121.1.39
363          * 39 Octet String                    Y  1.3.6.1.4.1.1466.115.121.1.40
364          */
365         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.31", syntaxCheckerRegistry );
366         syntax.setNames( new String[]
367             { "Matching Rule Use Description" } );
368         syntax.setHumanReadable( true );
369         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
370 
371         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.32", syntaxCheckerRegistry );
372         syntax.setNames( new String[]
373             { "Mail Preference" } );
374         syntax.setHumanReadable( true );
375         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
376 
377         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.33", syntaxCheckerRegistry );
378         syntax.setNames( new String[]
379             { "MHS OR Address" } );
380         syntax.setHumanReadable( true );
381         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
382 
383         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.34", syntaxCheckerRegistry );
384         syntax.setNames( new String[]
385             { "Name And Optional UID" } );
386         syntax.setHumanReadable( true );
387         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
388 
389         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.35", syntaxCheckerRegistry );
390         syntax.setNames( new String[]
391             { "Name Form Description" } );
392         syntax.setHumanReadable( true );
393         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
394 
395         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.36", syntaxCheckerRegistry );
396         syntax.setNames( new String[]
397             { "Numeric String" } );
398         syntax.setHumanReadable( true );
399         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
400 
401         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.37", syntaxCheckerRegistry );
402         syntax.setNames( new String[]
403             { "Object Class Description" } );
404         syntax.setHumanReadable( true );
405         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
406 
407         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.38", syntaxCheckerRegistry );
408         syntax.setNames( new String[]
409             { "OID" } );
410         syntax.setHumanReadable( true );
411         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
412 
413         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.39", syntaxCheckerRegistry );
414         syntax.setNames( new String[]
415             { "Other Mailbox" } );
416         syntax.setHumanReadable( true );
417         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
418 
419         /*
420          * This is where we deviate.  An octet string may or may not be human readable.  Essentially
421          * we are using this property of a syntax to determine if a value should be treated as binary
422          * data or not.  It must be human readable always in order to get this property set to true.
423          *
424          * If we set this to true then userPasswords which implement this syntax are not treated as
425          * binary attributes.  If that happens we can have data corruption due to UTF-8 handling.
426          */
427         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.40", syntaxCheckerRegistry );
428         syntax.setNames( new String[]
429             { "Octet String" } );
430         syntax.setHumanReadable( false );
431         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
432 
433         /*
434          * Value being represented        H-R OBJECT IDENTIFIER
435          * ===================================================================
436          * 40 Postal Address                  Y  1.3.6.1.4.1.1466.115.121.1.41
437          * 41 Protocol Information            Y  1.3.6.1.4.1.1466.115.121.1.42
438          * 42 Presentation Address            Y  1.3.6.1.4.1.1466.115.121.1.43
439          * 43 Printable String                Y  1.3.6.1.4.1.1466.115.121.1.44
440          * 44 Subtree Specification           Y  1.3.6.1.4.1.1466.115.121.1.45
441          * 45 Supplier Information            Y  1.3.6.1.4.1.1466.115.121.1.46
442          * 46 Supplier Or Consumer            Y  1.3.6.1.4.1.1466.115.121.1.47
443          * 47 Supplier And Consumer           Y  1.3.6.1.4.1.1466.115.121.1.48
444          * 48 Supported Algorithm             N  1.3.6.1.4.1.1466.115.121.1.49
445          * 49 Telephone Number                Y  1.3.6.1.4.1.1466.115.121.1.50
446          */
447         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.41", syntaxCheckerRegistry );
448         syntax.setNames( new String[]
449             { "Postal Address" } );
450         syntax.setHumanReadable( true );
451         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
452 
453         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.42", syntaxCheckerRegistry );
454         syntax.setNames( new String[]
455             { "Protocol Information" } );
456         syntax.setHumanReadable( true );
457         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
458 
459         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.43", syntaxCheckerRegistry );
460         syntax.setNames( new String[]
461             { "Presentation Address" } );
462         syntax.setHumanReadable( true );
463         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
464 
465         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.44", syntaxCheckerRegistry );
466         syntax.setNames( new String[]
467             { "Printable String" } );
468         syntax.setHumanReadable( true );
469         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
470 
471         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.45", syntaxCheckerRegistry );
472         syntax.setNames( new String[]
473             { "Subtree Specification" } );
474         syntax.setHumanReadable( true );
475         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
476 
477         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.46", syntaxCheckerRegistry );
478         syntax.setNames( new String[]
479             { "Supplier Information" } );
480         syntax.setHumanReadable( true );
481         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
482 
483         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.47", syntaxCheckerRegistry );
484         syntax.setNames( new String[]
485             { "Supplier Or Consumer" } );
486         syntax.setHumanReadable( true );
487         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
488 
489         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.48", syntaxCheckerRegistry );
490         syntax.setNames( new String[]
491             { "Supplier And Consumer" } );
492         syntax.setHumanReadable( true );
493         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
494 
495         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.49", syntaxCheckerRegistry );
496         syntax.setNames( new String[]
497             { "Supported Algorithm" } );
498         syntax.setHumanReadable( false );
499         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
500 
501         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.50", syntaxCheckerRegistry );
502         syntax.setNames( new String[]
503             { "Telephone Number" } );
504         syntax.setHumanReadable( true );
505         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
506 
507         /*
508          * Value being represented        H-R OBJECT IDENTIFIER
509          * ==================================================================
510          * 50 Teletex Terminal Identifier     Y  1.3.6.1.4.1.1466.115.121.1.51
511          * 51 Telex Number                    Y  1.3.6.1.4.1.1466.115.121.1.52
512          * 52 UTC Time                        Y  1.3.6.1.4.1.1466.115.121.1.53
513          * 53 LDAP Syntax Description         Y  1.3.6.1.4.1.1466.115.121.1.54
514          * 54 Modify Rights                   Y  1.3.6.1.4.1.1466.115.121.1.55
515          * 55 LDAP BootstrapSchema Definition          Y  1.3.6.1.4.1.1466.115.121.1.56
516          * 56 LDAP BootstrapSchema Description         Y  1.3.6.1.4.1.1466.115.121.1.57
517          * 57 Substring Assertion             Y  1.3.6.1.4.1.1466.115.121.1.58
518          */
519         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.51", syntaxCheckerRegistry );
520         syntax.setNames( new String[]
521             { "Teletex Terminal Identifier" } );
522         syntax.setHumanReadable( true );
523         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
524 
525         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.52", syntaxCheckerRegistry );
526         syntax.setNames( new String[]
527             { "Telex Number" } );
528         syntax.setHumanReadable( true );
529         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
530 
531         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.53", syntaxCheckerRegistry );
532         syntax.setNames( new String[]
533             { "UTC Time" } );
534         syntax.setHumanReadable( true );
535         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
536 
537         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.54", syntaxCheckerRegistry );
538         syntax.setNames( new String[]
539             { "LDAP Syntax Description" } );
540         syntax.setHumanReadable( true );
541         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
542 
543         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.55", syntaxCheckerRegistry );
544         syntax.setNames( new String[]
545             { "Modify Rights" } );
546         syntax.setHumanReadable( true );
547         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
548 
549         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.56", syntaxCheckerRegistry );
550         syntax.setNames( new String[]
551             { "LDAP BootstrapSchema Definition" } );
552         syntax.setHumanReadable( true );
553         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
554 
555         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.57", syntaxCheckerRegistry );
556         syntax.setNames( new String[]
557             { "LDAP BootstrapSchema Description" } );
558         syntax.setHumanReadable( true );
559         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
560 
561         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.58", syntaxCheckerRegistry );
562         syntax.setNames( new String[]
563             { "Substring Assertion" } );
564         syntax.setHumanReadable( true );
565         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
566         
567         syntax = new BootstrapSyntax( "1.3.6.1.4.1.1466.115.121.1.59", syntaxCheckerRegistry );
568         syntax.setNames( new String[]
569             { "Trigger Specification" } );
570         syntax.setHumanReadable( true );
571         cb.schemaObjectProduced( this, syntax.getOid(), syntax );
572     }
573 }