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.shared.ldap.schema.syntax.ACIItemSyntaxChecker;
28  import org.apache.directory.shared.ldap.schema.syntax.AcceptAllSyntaxChecker;
29  import org.apache.directory.shared.ldap.schema.syntax.AccessPointSyntaxChecker;
30  import org.apache.directory.shared.ldap.schema.syntax.AttributeTypeDescriptionSyntaxChecker;
31  import org.apache.directory.shared.ldap.schema.syntax.AudioSyntaxChecker;
32  import org.apache.directory.shared.ldap.schema.syntax.BinarySyntaxChecker;
33  import org.apache.directory.shared.ldap.schema.syntax.BitStringSyntaxChecker;
34  import org.apache.directory.shared.ldap.schema.syntax.BooleanSyntaxChecker;
35  import org.apache.directory.shared.ldap.schema.syntax.CertificateListSyntaxChecker;
36  import org.apache.directory.shared.ldap.schema.syntax.CertificatePairSyntaxChecker;
37  import org.apache.directory.shared.ldap.schema.syntax.CertificateSyntaxChecker;
38  import org.apache.directory.shared.ldap.schema.syntax.CountrySyntaxChecker;
39  import org.apache.directory.shared.ldap.schema.syntax.DITContentRuleDescriptionSyntaxChecker;
40  import org.apache.directory.shared.ldap.schema.syntax.DITStructureRuleDescriptionSyntaxChecker;
41  import org.apache.directory.shared.ldap.schema.syntax.DLSubmitPermissionSyntaxChecker;
42  import org.apache.directory.shared.ldap.schema.syntax.DNSyntaxChecker;
43  import org.apache.directory.shared.ldap.schema.syntax.DSAQualitySyntaxSyntaxChecker;
44  import org.apache.directory.shared.ldap.schema.syntax.DSETypeSyntaxChecker;
45  import org.apache.directory.shared.ldap.schema.syntax.DataQualitySyntaxSyntaxChecker;
46  import org.apache.directory.shared.ldap.schema.syntax.DeliveryMethodSyntaxChecker;
47  import org.apache.directory.shared.ldap.schema.syntax.DirectoryStringSyntaxChecker;
48  import org.apache.directory.shared.ldap.schema.syntax.EnhancedGuideSyntaxChecker;
49  import org.apache.directory.shared.ldap.schema.syntax.FacsimileTelephoneNumberSyntaxChecker;
50  import org.apache.directory.shared.ldap.schema.syntax.FaxSyntaxChecker;
51  import org.apache.directory.shared.ldap.schema.syntax.GeneralizedTimeSyntaxChecker;
52  import org.apache.directory.shared.ldap.schema.syntax.GuideSyntaxChecker;
53  import org.apache.directory.shared.ldap.schema.syntax.Ia5StringSyntaxChecker;
54  import org.apache.directory.shared.ldap.schema.syntax.IntegerSyntaxChecker;
55  import org.apache.directory.shared.ldap.schema.syntax.JpegSyntaxChecker;
56  import org.apache.directory.shared.ldap.schema.syntax.LdapSyntaxDescriptionSyntaxChecker;
57  import org.apache.directory.shared.ldap.schema.syntax.MHSORAddressSyntaxChecker;
58  import org.apache.directory.shared.ldap.schema.syntax.MailPreferenceSyntaxChecker;
59  import org.apache.directory.shared.ldap.schema.syntax.MasterAndShadowAccessPointSyntaxChecker;
60  import org.apache.directory.shared.ldap.schema.syntax.MatchingRuleDescriptionSyntaxChecker;
61  import org.apache.directory.shared.ldap.schema.syntax.MatchingRuleUseDescriptionSyntaxChecker;
62  import org.apache.directory.shared.ldap.schema.syntax.NameAndOptionalUIDSyntaxChecker;
63  import org.apache.directory.shared.ldap.schema.syntax.NameFormDescriptionSyntaxChecker;
64  import org.apache.directory.shared.ldap.schema.syntax.NumericStringSyntaxChecker;
65  import org.apache.directory.shared.ldap.schema.syntax.ObjectClassDescriptionSyntaxChecker;
66  import org.apache.directory.shared.ldap.schema.syntax.OctetStringSyntaxChecker;
67  import org.apache.directory.shared.ldap.schema.syntax.OidSyntaxChecker;
68  import org.apache.directory.shared.ldap.schema.syntax.OtherMailboxSyntaxChecker;
69  import org.apache.directory.shared.ldap.schema.syntax.PostalAddressSyntaxChecker;
70  import org.apache.directory.shared.ldap.schema.syntax.PresentationAddressSyntaxChecker;
71  import org.apache.directory.shared.ldap.schema.syntax.PrintableStringSyntaxChecker;
72  import org.apache.directory.shared.ldap.schema.syntax.ProtocolInformationSyntaxChecker;
73  import org.apache.directory.shared.ldap.schema.syntax.SubstringAssertionSyntaxChecker;
74  import org.apache.directory.shared.ldap.schema.syntax.SubtreeSpecificationSyntaxChecker;
75  import org.apache.directory.shared.ldap.schema.syntax.SupplierAndConsumerSyntaxChecker;
76  import org.apache.directory.shared.ldap.schema.syntax.SupplierInformationSyntaxChecker;
77  import org.apache.directory.shared.ldap.schema.syntax.SupplierOrConsumerSyntaxChecker;
78  import org.apache.directory.shared.ldap.schema.syntax.SupportedAlgorithmSyntaxChecker;
79  import org.apache.directory.shared.ldap.schema.syntax.TelephoneNumberSyntaxChecker;
80  import org.apache.directory.shared.ldap.schema.syntax.TeletexTerminalIdentifierSyntaxChecker;
81  import org.apache.directory.shared.ldap.schema.syntax.TelexNumberSyntaxChecker;
82  import org.apache.directory.shared.ldap.schema.syntax.UtcTimeSyntaxChecker;
83  
84  
85  /**
86   * A producer of SyntaxCheckers for the core schema.
87   *
88   * @todo now we use do nothing checkers for place holder and will add as we go 
89   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
90   * @version $Rev: 542996 $
91   */
92  public class SystemSyntaxCheckerProducer extends AbstractBootstrapProducer
93  {
94      /**
95       * Creates a producer which produces all 58 of the core schema syntax's
96       * SyntaxCheckers.
97       */
98      public SystemSyntaxCheckerProducer()
99      {
100         super( ProducerTypeEnum.SYNTAX_CHECKER_PRODUCER );
101     }
102 
103 
104     public void produce( Registries registries, ProducerCallback cb ) throws NamingException
105     {
106         /*
107          * We are going to need a syntax checker for each and every one of
108          * these syntaxes.  However right now we're probably not going to be
109          * turning on syntax checking or are not as interested in it.  So we
110          * can put in place simple do nothing syntax checkers - which is really
111          * the binary syntax checker.
112          */
113 
114         /*
115          * From RFC 2252 Section 4.3.2. on Syntax Object Identifiers
116          */
117 
118         /*
119          * Value being represented        H-R OBJECT IDENTIFIER
120          * ==================================================================
121          * 0 ACI Item                         N  1.3.6.1.4.1.1466.115.121.1.1
122          * 1 Access Point                     Y  1.3.6.1.4.1.1466.115.121.1.2
123          * 2 Attribute Type Description       Y  1.3.6.1.4.1.1466.115.121.1.3
124          * 3 Audio                            N  1.3.6.1.4.1.1466.115.121.1.4
125          * 4 Binary                           N  1.3.6.1.4.1.1466.115.121.1.5
126          * 5 Bit String                       Y  1.3.6.1.4.1.1466.115.121.1.6
127          * 6 Boolean                          Y  1.3.6.1.4.1.1466.115.121.1.7
128          * 7 Certificate                      N  1.3.6.1.4.1.1466.115.121.1.8
129          * 8 Certificate List                 N  1.3.6.1.4.1.1466.115.121.1.9
130          * 9 Certificate Pair                 N  1.3.6.1.4.1.1466.115.121.1.10
131          */
132         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.1", new ACIItemSyntaxChecker() );
133         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.2", new AccessPointSyntaxChecker() );
134         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.3", new AttributeTypeDescriptionSyntaxChecker() );
135         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.4", new AudioSyntaxChecker() );
136         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.5", new BinarySyntaxChecker() );
137         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.6", new BitStringSyntaxChecker() );
138         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.7", new BooleanSyntaxChecker() );
139         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.8", new CertificateSyntaxChecker() );
140         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.9", new CertificateListSyntaxChecker() );
141         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.10", new CertificatePairSyntaxChecker() );
142 
143         /*
144          * 10 Country String                  Y  1.3.6.1.4.1.1466.115.121.1.11
145          * 11 DN                              Y  1.3.6.1.4.1.1466.115.121.1.12
146          * 12 Data Quality Syntax             Y  1.3.6.1.4.1.1466.115.121.1.13
147          * 13 Delivery Method                 Y  1.3.6.1.4.1.1466.115.121.1.14
148          * 14 Directory String                Y  1.3.6.1.4.1.1466.115.121.1.15
149          * 15 DIT Content Rule Description    Y  1.3.6.1.4.1.1466.115.121.1.16
150          * 16 DIT Structure Rule Description  Y  1.3.6.1.4.1.1466.115.121.1.17
151          * 17 DL Submit Permission            Y  1.3.6.1.4.1.1466.115.121.1.18
152          * 18 DSA Quality Syntax              Y  1.3.6.1.4.1.1466.115.121.1.19
153          * 19 DSE Type                        Y  1.3.6.1.4.1.1466.115.121.1.20
154          */
155         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.11", new CountrySyntaxChecker() );
156         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.12", new DNSyntaxChecker() );
157         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.13", new DataQualitySyntaxSyntaxChecker() );
158         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.14", new DeliveryMethodSyntaxChecker() );
159         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.15", new DirectoryStringSyntaxChecker() );
160         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.16", new DITContentRuleDescriptionSyntaxChecker() );
161         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.17", new DITStructureRuleDescriptionSyntaxChecker() );
162         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.18", new DLSubmitPermissionSyntaxChecker() );
163         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.19", new DSAQualitySyntaxSyntaxChecker() );
164         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.20", new DSETypeSyntaxChecker() );
165 
166         /* 20 Enhanced Guide                  Y  1.3.6.1.4.1.1466.115.121.1.21
167          * 21 Facsimile Telephone Number      Y  1.3.6.1.4.1.1466.115.121.1.22
168          * 22 Fax                             N  1.3.6.1.4.1.1466.115.121.1.23
169          * 23 Generalized Time                Y  1.3.6.1.4.1.1466.115.121.1.24
170          * 24 Guide                           Y  1.3.6.1.4.1.1466.115.121.1.25
171          * 25 IA5 String                      Y  1.3.6.1.4.1.1466.115.121.1.26
172          * 26 INTEGER                         Y  1.3.6.1.4.1.1466.115.121.1.27
173          * 27 JPEG                            N  1.3.6.1.4.1.1466.115.121.1.28
174          * 28 Master And Shadow Access Points Y  1.3.6.1.4.1.1466.115.121.1.29
175          * 29 Matching Rule Description       Y  1.3.6.1.4.1.1466.115.121.1.30
176          */
177         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.21", new EnhancedGuideSyntaxChecker() );
178         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.22", new FacsimileTelephoneNumberSyntaxChecker() );
179         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.23", new FaxSyntaxChecker() );
180         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.24", new GeneralizedTimeSyntaxChecker() );
181         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.25", new GuideSyntaxChecker() );
182         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.26", new Ia5StringSyntaxChecker() );
183         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.27", new IntegerSyntaxChecker() );
184         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.28", new JpegSyntaxChecker() );
185         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.29", new MasterAndShadowAccessPointSyntaxChecker() );
186         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.30", new MatchingRuleDescriptionSyntaxChecker() );
187 
188         /* 30 Matching Rule Use Description   Y  1.3.6.1.4.1.1466.115.121.1.31
189          * 31 Mail Preference                 Y  1.3.6.1.4.1.1466.115.121.1.32
190          * 32 MHS OR Address                  Y  1.3.6.1.4.1.1466.115.121.1.33
191          * 33 Name And Optional UID           Y  1.3.6.1.4.1.1466.115.121.1.34
192          * 34 Name Form Description           Y  1.3.6.1.4.1.1466.115.121.1.35
193          * 35 Numeric String                  Y  1.3.6.1.4.1.1466.115.121.1.36
194          * 36 Object Class Description        Y  1.3.6.1.4.1.1466.115.121.1.37
195          * 37 OID                             Y  1.3.6.1.4.1.1466.115.121.1.38
196          * 38 Other Mailbox                   Y  1.3.6.1.4.1.1466.115.121.1.39
197          * 39 Octet String                    Y  1.3.6.1.4.1.1466.115.121.1.40
198          */
199         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.31", new MatchingRuleUseDescriptionSyntaxChecker() );
200         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.32", new MailPreferenceSyntaxChecker() );
201         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.33", new MHSORAddressSyntaxChecker() );
202         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.34", new NameAndOptionalUIDSyntaxChecker() );
203         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.35", new NameFormDescriptionSyntaxChecker() );
204         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.36", new NumericStringSyntaxChecker() );
205         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.37", new ObjectClassDescriptionSyntaxChecker() );
206         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.38", new OidSyntaxChecker() );
207         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.39", new OtherMailboxSyntaxChecker() );
208         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.40", new OctetStringSyntaxChecker() );
209 
210         /*
211          * 40 Postal Address                  Y  1.3.6.1.4.1.1466.115.121.1.41
212          * 41 Protocol Information            Y  1.3.6.1.4.1.1466.115.121.1.42
213          * 42 Presentation Address            Y  1.3.6.1.4.1.1466.115.121.1.43
214          * 43 Printable String                Y  1.3.6.1.4.1.1466.115.121.1.44
215          * 44 Subtree Specification           Y  1.3.6.1.4.1.1466.115.121.1.45
216          * 45 Supplier Information            Y  1.3.6.1.4.1.1466.115.121.1.46
217          * 46 Supplier Or Consumer            Y  1.3.6.1.4.1.1466.115.121.1.47
218          * 47 Supplier And Consumer           Y  1.3.6.1.4.1.1466.115.121.1.48
219          * 48 Supported Algorithm             N  1.3.6.1.4.1.1466.115.121.1.49
220          * 49 Telephone Number                Y  1.3.6.1.4.1.1466.115.121.1.50
221          */
222         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.41", new PostalAddressSyntaxChecker() );
223         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.42", new ProtocolInformationSyntaxChecker() );
224         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.43", new PresentationAddressSyntaxChecker() );
225         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.44", new PrintableStringSyntaxChecker() );
226         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.45", new SubtreeSpecificationSyntaxChecker() );
227         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.46", new SupplierInformationSyntaxChecker() );
228         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.47", new SupplierOrConsumerSyntaxChecker() );
229         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.48", new SupplierAndConsumerSyntaxChecker() );
230         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.49", new SupportedAlgorithmSyntaxChecker() );
231         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.50", new TelephoneNumberSyntaxChecker() );
232 
233         /*
234          * 50 Teletex Terminal Identifier     Y  1.3.6.1.4.1.1466.115.121.1.51
235          * 51 Telex Number                    Y  1.3.6.1.4.1.1466.115.121.1.52
236          * 52 UTC Time                        Y  1.3.6.1.4.1.1466.115.121.1.53
237          * 53 LDAP Syntax Description         Y  1.3.6.1.4.1.1466.115.121.1.54
238          * 54 Modify Rights                   Y  1.3.6.1.4.1.1466.115.121.1.55  (No defined SC yet)
239          * 55 LDAP BootstrapSchema Definition Y  1.3.6.1.4.1.1466.115.121.1.56  (No defined SC yet) 
240          * 56 LDAP BootstrapSchema DescriptionY  1.3.6.1.4.1.1466.115.121.1.57  (No defined SC yet)
241          * 57 Substring Assertion             Y  1.3.6.1.4.1.1466.115.121.1.58
242          */
243         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.51", new TeletexTerminalIdentifierSyntaxChecker() );
244         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.52", new TelexNumberSyntaxChecker() );
245         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.53", new UtcTimeSyntaxChecker() );
246         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.54", new LdapSyntaxDescriptionSyntaxChecker() );
247 
248         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.55", 
249             new AcceptAllSyntaxChecker( "1.3.6.1.4.1.1466.115.121.1.55" ) );
250         
251         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.56", 
252             new AcceptAllSyntaxChecker( "1.3.6.1.4.1.1466.115.121.1.56" ) );
253         
254         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.57", 
255             new AcceptAllSyntaxChecker( "1.3.6.1.4.1.1466.115.121.1.57" ) );
256         
257         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.58", new SubstringAssertionSyntaxChecker() );
258 
259         cb.schemaObjectProduced( this, "1.3.6.1.4.1.1466.115.121.1.59", 
260             new AcceptAllSyntaxChecker( "1.3.6.1.4.1.1466.115.121.1.59" ) );
261     }
262 }