001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020 package org.apache.directory.server.schema.bootstrap;
021
022
023 import javax.naming.NamingException;
024
025 import org.apache.directory.server.schema.bootstrap.ProducerTypeEnum;
026 import org.apache.directory.server.schema.registries.Registries;
027 import org.apache.directory.shared.ldap.constants.SchemaConstants;
028 import org.apache.directory.shared.ldap.schema.syntaxes.ACIItemSyntaxChecker;
029 import org.apache.directory.shared.ldap.schema.syntaxes.AcceptAllSyntaxChecker;
030 import org.apache.directory.shared.ldap.schema.syntaxes.AccessPointSyntaxChecker;
031 import org.apache.directory.shared.ldap.schema.syntaxes.AttributeTypeDescriptionSyntaxChecker;
032 import org.apache.directory.shared.ldap.schema.syntaxes.AudioSyntaxChecker;
033 import org.apache.directory.shared.ldap.schema.syntaxes.BinarySyntaxChecker;
034 import org.apache.directory.shared.ldap.schema.syntaxes.BitStringSyntaxChecker;
035 import org.apache.directory.shared.ldap.schema.syntaxes.BooleanSyntaxChecker;
036 import org.apache.directory.shared.ldap.schema.syntaxes.CertificateListSyntaxChecker;
037 import org.apache.directory.shared.ldap.schema.syntaxes.CertificatePairSyntaxChecker;
038 import org.apache.directory.shared.ldap.schema.syntaxes.CertificateSyntaxChecker;
039 import org.apache.directory.shared.ldap.schema.syntaxes.CountrySyntaxChecker;
040 import org.apache.directory.shared.ldap.schema.syntaxes.DITContentRuleDescriptionSyntaxChecker;
041 import org.apache.directory.shared.ldap.schema.syntaxes.DITStructureRuleDescriptionSyntaxChecker;
042 import org.apache.directory.shared.ldap.schema.syntaxes.DLSubmitPermissionSyntaxChecker;
043 import org.apache.directory.shared.ldap.schema.syntaxes.DNSyntaxChecker;
044 import org.apache.directory.shared.ldap.schema.syntaxes.DSAQualitySyntaxSyntaxChecker;
045 import org.apache.directory.shared.ldap.schema.syntaxes.DSETypeSyntaxChecker;
046 import org.apache.directory.shared.ldap.schema.syntaxes.DataQualitySyntaxSyntaxChecker;
047 import org.apache.directory.shared.ldap.schema.syntaxes.DeliveryMethodSyntaxChecker;
048 import org.apache.directory.shared.ldap.schema.syntaxes.DirectoryStringSyntaxChecker;
049 import org.apache.directory.shared.ldap.schema.syntaxes.EnhancedGuideSyntaxChecker;
050 import org.apache.directory.shared.ldap.schema.syntaxes.FacsimileTelephoneNumberSyntaxChecker;
051 import org.apache.directory.shared.ldap.schema.syntaxes.FaxSyntaxChecker;
052 import org.apache.directory.shared.ldap.schema.syntaxes.GeneralizedTimeSyntaxChecker;
053 import org.apache.directory.shared.ldap.schema.syntaxes.GuideSyntaxChecker;
054 import org.apache.directory.shared.ldap.schema.syntaxes.Ia5StringSyntaxChecker;
055 import org.apache.directory.shared.ldap.schema.syntaxes.IntegerSyntaxChecker;
056 import org.apache.directory.shared.ldap.schema.syntaxes.JpegSyntaxChecker;
057 import org.apache.directory.shared.ldap.schema.syntaxes.LdapSyntaxDescriptionSyntaxChecker;
058 import org.apache.directory.shared.ldap.schema.syntaxes.MHSORAddressSyntaxChecker;
059 import org.apache.directory.shared.ldap.schema.syntaxes.MailPreferenceSyntaxChecker;
060 import org.apache.directory.shared.ldap.schema.syntaxes.MasterAndShadowAccessPointSyntaxChecker;
061 import org.apache.directory.shared.ldap.schema.syntaxes.MatchingRuleDescriptionSyntaxChecker;
062 import org.apache.directory.shared.ldap.schema.syntaxes.MatchingRuleUseDescriptionSyntaxChecker;
063 import org.apache.directory.shared.ldap.schema.syntaxes.NameAndOptionalUIDSyntaxChecker;
064 import org.apache.directory.shared.ldap.schema.syntaxes.NameFormDescriptionSyntaxChecker;
065 import org.apache.directory.shared.ldap.schema.syntaxes.NumericStringSyntaxChecker;
066 import org.apache.directory.shared.ldap.schema.syntaxes.ObjectClassDescriptionSyntaxChecker;
067 import org.apache.directory.shared.ldap.schema.syntaxes.OctetStringSyntaxChecker;
068 import org.apache.directory.shared.ldap.schema.syntaxes.OidSyntaxChecker;
069 import org.apache.directory.shared.ldap.schema.syntaxes.OtherMailboxSyntaxChecker;
070 import org.apache.directory.shared.ldap.schema.syntaxes.PostalAddressSyntaxChecker;
071 import org.apache.directory.shared.ldap.schema.syntaxes.PresentationAddressSyntaxChecker;
072 import org.apache.directory.shared.ldap.schema.syntaxes.PrintableStringSyntaxChecker;
073 import org.apache.directory.shared.ldap.schema.syntaxes.ProtocolInformationSyntaxChecker;
074 import org.apache.directory.shared.ldap.schema.syntaxes.SubstringAssertionSyntaxChecker;
075 import org.apache.directory.shared.ldap.schema.syntaxes.SubtreeSpecificationSyntaxChecker;
076 import org.apache.directory.shared.ldap.schema.syntaxes.SupplierAndConsumerSyntaxChecker;
077 import org.apache.directory.shared.ldap.schema.syntaxes.SupplierInformationSyntaxChecker;
078 import org.apache.directory.shared.ldap.schema.syntaxes.SupplierOrConsumerSyntaxChecker;
079 import org.apache.directory.shared.ldap.schema.syntaxes.SupportedAlgorithmSyntaxChecker;
080 import org.apache.directory.shared.ldap.schema.syntaxes.TelephoneNumberSyntaxChecker;
081 import org.apache.directory.shared.ldap.schema.syntaxes.TeletexTerminalIdentifierSyntaxChecker;
082 import org.apache.directory.shared.ldap.schema.syntaxes.TelexNumberSyntaxChecker;
083 import org.apache.directory.shared.ldap.schema.syntaxes.UtcTimeSyntaxChecker;
084
085
086 /**
087 * A producer of SyntaxCheckers for the core schema.
088 *
089 * @todo now we use do nothing checkers for place holder and will add as we go
090 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
091 * @version $Rev: 781877 $
092 */
093 public class SystemSyntaxCheckerProducer extends AbstractBootstrapProducer
094 {
095 /**
096 * Creates a producer which produces all 58 of the core schema syntax's
097 * SyntaxCheckers.
098 */
099 public SystemSyntaxCheckerProducer()
100 {
101 super( ProducerTypeEnum.SYNTAX_CHECKER_PRODUCER );
102 }
103
104
105 public void produce( Registries registries, ProducerCallback cb ) throws NamingException
106 {
107 /*
108 * We are going to need a syntax checker for each and every one of
109 * these syntaxes. However right now we're probably not going to be
110 * turning on syntax checking or are not as interested in it. So we
111 * can put in place simple do nothing syntax checkers - which is really
112 * the binary syntax checker.
113 */
114
115 /*
116 * From RFC 2252 Section 4.3.2. on Syntax Object Identifiers
117 */
118
119 /*
120 * Value being represented H-R OBJECT IDENTIFIER
121 * ==================================================================
122 * 0 ACI Item N 1.3.6.1.4.1.1466.115.121.1.1
123 * 1 Access Point Y 1.3.6.1.4.1.1466.115.121.1.2
124 * 2 Attribute Type Description Y 1.3.6.1.4.1.1466.115.121.1.3
125 * 3 Audio N 1.3.6.1.4.1.1466.115.121.1.4
126 * 4 Binary N 1.3.6.1.4.1.1466.115.121.1.5
127 * 5 Bit String Y 1.3.6.1.4.1.1466.115.121.1.6
128 * 6 Boolean Y 1.3.6.1.4.1.1466.115.121.1.7
129 * 7 Certificate N 1.3.6.1.4.1.1466.115.121.1.8
130 * 8 Certificate List N 1.3.6.1.4.1.1466.115.121.1.9
131 * 9 Certificate Pair N 1.3.6.1.4.1.1466.115.121.1.10
132 */
133 cb.schemaObjectProduced( this, SchemaConstants.ACI_ITEM_SYNTAX, new ACIItemSyntaxChecker() );
134 cb.schemaObjectProduced( this, SchemaConstants.ACCESS_POINT_SYNTAX, new AccessPointSyntaxChecker() );
135 cb.schemaObjectProduced( this, SchemaConstants.ATTRIBUT_TYPE_DESCRIPTION_SYNTAX, new AttributeTypeDescriptionSyntaxChecker() );
136 cb.schemaObjectProduced( this, SchemaConstants.AUDIO_SYNTAX, new AudioSyntaxChecker() );
137 cb.schemaObjectProduced( this, SchemaConstants.BINARY_SYNTAX, new BinarySyntaxChecker() );
138 cb.schemaObjectProduced( this, SchemaConstants.BIT_STRING_SYNTAX, new BitStringSyntaxChecker() );
139 cb.schemaObjectProduced( this, SchemaConstants.BOOLEAN_SYNTAX, new BooleanSyntaxChecker() );
140 cb.schemaObjectProduced( this, SchemaConstants.CERTIFICATE_SYNTAX, new CertificateSyntaxChecker() );
141 cb.schemaObjectProduced( this, SchemaConstants.CERTIFICATE_LIST_SYNTAX, new CertificateListSyntaxChecker() );
142 cb.schemaObjectProduced( this, SchemaConstants.CERTIFICATE_PAIR_SYNTAX, new CertificatePairSyntaxChecker() );
143
144 /*
145 * 10 Country String Y 1.3.6.1.4.1.1466.115.121.1.11
146 * 11 DN Y 1.3.6.1.4.1.1466.115.121.1.12
147 * 12 Data Quality Syntax Y 1.3.6.1.4.1.1466.115.121.1.13
148 * 13 Delivery Method Y 1.3.6.1.4.1.1466.115.121.1.14
149 * 14 Directory String Y 1.3.6.1.4.1.1466.115.121.1.15
150 * 15 DIT Content Rule Description Y 1.3.6.1.4.1.1466.115.121.1.16
151 * 16 DIT Structure Rule Description Y 1.3.6.1.4.1.1466.115.121.1.17
152 * 17 DL Submit Permission Y 1.3.6.1.4.1.1466.115.121.1.18
153 * 18 DSA Quality Syntax Y 1.3.6.1.4.1.1466.115.121.1.19
154 * 19 DSE Type Y 1.3.6.1.4.1.1466.115.121.1.20
155 */
156 cb.schemaObjectProduced( this, SchemaConstants.COUNTRY_STRING_SYNTAX, new CountrySyntaxChecker() );
157 cb.schemaObjectProduced( this, SchemaConstants.DN_SYNTAX, new DNSyntaxChecker() );
158 cb.schemaObjectProduced( this, SchemaConstants.DATA_QUALITY_SYNTAX, new DataQualitySyntaxSyntaxChecker() );
159 cb.schemaObjectProduced( this, SchemaConstants.DELIVERY_METHOD_SYNTAX, new DeliveryMethodSyntaxChecker() );
160 cb.schemaObjectProduced( this, SchemaConstants.DIRECTORY_STRING_SYNTAX, new DirectoryStringSyntaxChecker() );
161 cb.schemaObjectProduced( this, SchemaConstants.DIT_CONTENT_RULE_SYNTAX, new DITContentRuleDescriptionSyntaxChecker() );
162 cb.schemaObjectProduced( this, SchemaConstants.DIT_STRUCTURE_RULE_SYNTAX, new DITStructureRuleDescriptionSyntaxChecker() );
163 cb.schemaObjectProduced( this, SchemaConstants.DL_SUBMIT_PERMISSION_SYNTAX, new DLSubmitPermissionSyntaxChecker() );
164 cb.schemaObjectProduced( this, SchemaConstants.DSA_QUALITY_SYNTAX, new DSAQualitySyntaxSyntaxChecker() );
165 cb.schemaObjectProduced( this, SchemaConstants.DSE_TYPE_SYNTAX, new DSETypeSyntaxChecker() );
166
167 /* 20 Enhanced Guide Y 1.3.6.1.4.1.1466.115.121.1.21
168 * 21 Facsimile Telephone Number Y 1.3.6.1.4.1.1466.115.121.1.22
169 * 22 Fax N 1.3.6.1.4.1.1466.115.121.1.23
170 * 23 Generalized Time Y 1.3.6.1.4.1.1466.115.121.1.24
171 * 24 Guide Y 1.3.6.1.4.1.1466.115.121.1.25
172 * 25 IA5 String Y 1.3.6.1.4.1.1466.115.121.1.26
173 * 26 INTEGER Y 1.3.6.1.4.1.1466.115.121.1.27
174 * 27 JPEG N 1.3.6.1.4.1.1466.115.121.1.28
175 * 28 Master And Shadow Access Points Y 1.3.6.1.4.1.1466.115.121.1.29
176 * 29 Matching Rule Description Y 1.3.6.1.4.1.1466.115.121.1.30
177 */
178 cb.schemaObjectProduced( this, SchemaConstants.ENHANCED_GUIDE_SYNTAX, new EnhancedGuideSyntaxChecker() );
179 cb.schemaObjectProduced( this, SchemaConstants.FACSIMILE_TELEPHONE_NUMBER_SYNTAX, new FacsimileTelephoneNumberSyntaxChecker() );
180 cb.schemaObjectProduced( this, SchemaConstants.FAX_SYNTAX, new FaxSyntaxChecker() );
181 cb.schemaObjectProduced( this, SchemaConstants.GENERALIZED_TIME_SYNTAX, new GeneralizedTimeSyntaxChecker() );
182 cb.schemaObjectProduced( this, SchemaConstants.GUIDE_SYNTAX, new GuideSyntaxChecker() );
183 cb.schemaObjectProduced( this, SchemaConstants.IA5_STRING_SYNTAX, new Ia5StringSyntaxChecker() );
184 cb.schemaObjectProduced( this, SchemaConstants.INTEGER_SYNTAX, new IntegerSyntaxChecker() );
185 cb.schemaObjectProduced( this, SchemaConstants.JPEG_SYNTAX, new JpegSyntaxChecker() );
186 cb.schemaObjectProduced( this, SchemaConstants.MASTER_AND_SHADOW_ACCESS_POINTS_SYNTAX, new MasterAndShadowAccessPointSyntaxChecker() );
187 cb.schemaObjectProduced( this, SchemaConstants.MATCHING_RULE_DESCRIPTION_SYNTAX, new MatchingRuleDescriptionSyntaxChecker() );
188
189 /* 30 Matching Rule Use Description Y 1.3.6.1.4.1.1466.115.121.1.31
190 * 31 Mail Preference Y 1.3.6.1.4.1.1466.115.121.1.32
191 * 32 MHS OR Address Y 1.3.6.1.4.1.1466.115.121.1.33
192 * 33 Name And Optional UID Y 1.3.6.1.4.1.1466.115.121.1.34
193 * 34 Name Form Description Y 1.3.6.1.4.1.1466.115.121.1.35
194 * 35 Numeric String Y 1.3.6.1.4.1.1466.115.121.1.36
195 * 36 Object Class Description Y 1.3.6.1.4.1.1466.115.121.1.37
196 * 37 OID Y 1.3.6.1.4.1.1466.115.121.1.38
197 * 38 Other Mailbox Y 1.3.6.1.4.1.1466.115.121.1.39
198 * 39 Octet String Y 1.3.6.1.4.1.1466.115.121.1.40
199 */
200 cb.schemaObjectProduced( this, SchemaConstants.MATCHING_RULE_USE_DESCRIPTION_SYNTAX, new MatchingRuleUseDescriptionSyntaxChecker() );
201 cb.schemaObjectProduced( this, SchemaConstants.MAIL_PREFERENCE_SYNTAX, new MailPreferenceSyntaxChecker() );
202 cb.schemaObjectProduced( this, SchemaConstants.MHS_OR_ADDRESS_SYNTAX, new MHSORAddressSyntaxChecker() );
203 cb.schemaObjectProduced( this, SchemaConstants.NAME_AND_OPTIONAL_UID_SYNTAX, new NameAndOptionalUIDSyntaxChecker() );
204 cb.schemaObjectProduced( this, SchemaConstants.NAME_FORM_DESCRIPTION_SYNTAX, new NameFormDescriptionSyntaxChecker() );
205 cb.schemaObjectProduced( this, SchemaConstants.NUMERIC_STRING_SYNTAX, new NumericStringSyntaxChecker() );
206 cb.schemaObjectProduced( this, SchemaConstants.OBJECT_CLASS_DESCRIPTION_SYNTAX, new ObjectClassDescriptionSyntaxChecker() );
207 cb.schemaObjectProduced( this, SchemaConstants.OID_SYNTAX, new OidSyntaxChecker() );
208 cb.schemaObjectProduced( this, SchemaConstants.OTHER_MAILBOX_SYNTAX, new OtherMailboxSyntaxChecker() );
209 cb.schemaObjectProduced( this, SchemaConstants.OCTET_STRING_SYNTAX, new OctetStringSyntaxChecker() );
210
211 /*
212 * 40 Postal Address Y 1.3.6.1.4.1.1466.115.121.1.41
213 * 41 Protocol Information Y 1.3.6.1.4.1.1466.115.121.1.42
214 * 42 Presentation Address Y 1.3.6.1.4.1.1466.115.121.1.43
215 * 43 Printable String Y 1.3.6.1.4.1.1466.115.121.1.44
216 * 44 Subtree Specification Y 1.3.6.1.4.1.1466.115.121.1.45
217 * 45 Supplier Information Y 1.3.6.1.4.1.1466.115.121.1.46
218 * 46 Supplier Or Consumer Y 1.3.6.1.4.1.1466.115.121.1.47
219 * 47 Supplier And Consumer Y 1.3.6.1.4.1.1466.115.121.1.48
220 * 48 Supported Algorithm N 1.3.6.1.4.1.1466.115.121.1.49
221 * 49 Telephone Number Y 1.3.6.1.4.1.1466.115.121.1.50
222 */
223 cb.schemaObjectProduced( this, SchemaConstants.POSTAL_ADDRESS_SYNTAX, new PostalAddressSyntaxChecker() );
224 cb.schemaObjectProduced( this, SchemaConstants.PROTOCOL_INFORMATION_SYNTAX, new ProtocolInformationSyntaxChecker() );
225 cb.schemaObjectProduced( this, SchemaConstants.PRESENTATION_ADDRESS_SYNTAX, new PresentationAddressSyntaxChecker() );
226 cb.schemaObjectProduced( this, SchemaConstants.PRINTABLE_STRING_SYNTAX, new PrintableStringSyntaxChecker() );
227 cb.schemaObjectProduced( this, SchemaConstants.SUBTREE_SPECIFICATION_SYNTAX, new SubtreeSpecificationSyntaxChecker() );
228 cb.schemaObjectProduced( this, SchemaConstants.SUPPLIER_INFORMATION_SYNTAX, new SupplierInformationSyntaxChecker() );
229 cb.schemaObjectProduced( this, SchemaConstants.SUPPLIER_OR_CONSUMER_SYNTAX, new SupplierOrConsumerSyntaxChecker() );
230 cb.schemaObjectProduced( this, SchemaConstants.SUPPLIER_AND_CONSUMER_SYNTAX, new SupplierAndConsumerSyntaxChecker() );
231 cb.schemaObjectProduced( this, SchemaConstants.SUPPORTED_ALGORITHM_SYNTAX, new SupportedAlgorithmSyntaxChecker() );
232 cb.schemaObjectProduced( this, SchemaConstants.TELEPHONE_NUMBER_SYNTAX, new TelephoneNumberSyntaxChecker() );
233
234 /*
235 * 50 Teletex Terminal Identifier Y 1.3.6.1.4.1.1466.115.121.1.51
236 * 51 Telex Number Y 1.3.6.1.4.1.1466.115.121.1.52
237 * 52 UTC Time Y 1.3.6.1.4.1.1466.115.121.1.53
238 * 53 LDAP Syntax Description Y 1.3.6.1.4.1.1466.115.121.1.54
239 * 54 Modify Rights Y 1.3.6.1.4.1.1466.115.121.1.55 (No defined SC yet)
240 * 55 LDAP BootstrapSchema Definition Y 1.3.6.1.4.1.1466.115.121.1.56 (No defined SC yet)
241 * 56 LDAP BootstrapSchema DescriptionY 1.3.6.1.4.1.1466.115.121.1.57 (No defined SC yet)
242 * 57 Substring Assertion Y 1.3.6.1.4.1.1466.115.121.1.58
243 */
244 cb.schemaObjectProduced( this, SchemaConstants.TELETEX_TERMINAL_IDENTIFIER_SYNTAX, new TeletexTerminalIdentifierSyntaxChecker() );
245 cb.schemaObjectProduced( this, SchemaConstants.TELEX_NUMBER_SYNTAX, new TelexNumberSyntaxChecker() );
246 cb.schemaObjectProduced( this, SchemaConstants.UTC_TIME_SYNTAX, new UtcTimeSyntaxChecker() );
247 cb.schemaObjectProduced( this, SchemaConstants.LDAP_SYNTAX_DESCRIPTION_SYNTAX, new LdapSyntaxDescriptionSyntaxChecker() );
248
249 cb.schemaObjectProduced( this, SchemaConstants.MODIFY_RIGHTS_SYNTAX,
250 new AcceptAllSyntaxChecker( SchemaConstants.MODIFY_RIGHTS_SYNTAX ) );
251
252 cb.schemaObjectProduced( this, SchemaConstants.LDAP_SCHEMA_DEFINITION_SYNTAX,
253 new AcceptAllSyntaxChecker( SchemaConstants.LDAP_SCHEMA_DEFINITION_SYNTAX ) );
254
255 cb.schemaObjectProduced( this, SchemaConstants.LDAP_SCHEMA_DESCRIPTION_SYNTAX,
256 new AcceptAllSyntaxChecker( SchemaConstants.LDAP_SCHEMA_DESCRIPTION_SYNTAX ) );
257
258 cb.schemaObjectProduced( this, SchemaConstants.SUBSTRING_ASSERTION_SYNTAX, new SubstringAssertionSyntaxChecker() );
259
260 cb.schemaObjectProduced( this, SchemaConstants.ATTRIBUTE_CERTIFICATE_ASSERTION_SYNTAX,
261 new AcceptAllSyntaxChecker( SchemaConstants.ATTRIBUTE_CERTIFICATE_ASSERTION_SYNTAX ) );
262 }
263 }