You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/12/04 03:55:44 UTC
svn commit: r482019 - in /directory/trunks:
apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/
apacheds/core/src/main/schema/
apacheds/mitosis/src/main/java/org/apache/directory/mitosis/service/
shared/ldap/src/main/java/org...
Author: akarasulu
Date: Sun Dec 3 18:55:43 2006
New Revision: 482019
URL: http://svn.apache.org/viewvc?view=rev&rev=482019
Log:
committing some new primites for meta schema along with meta schema changes
Added:
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaComparatorProducer.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaMatchingRuleProducer.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaNormalizerProducer.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxCheckerProducer.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxProducer.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdComparator.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdMatch.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdNormalizer.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxChecker.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxChecker.java
directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxCheckerTest.java
directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxCheckerTest.java
Modified:
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/AbstractBootstrapProducer.java
directory/trunks/apacheds/core/src/main/schema/apache.schema
directory/trunks/apacheds/core/src/main/schema/apachemeta.schema
directory/trunks/apacheds/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/AbstractBootstrapProducer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/AbstractBootstrapProducer.java?view=diff&rev=482019&r1=482018&r2=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/AbstractBootstrapProducer.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/AbstractBootstrapProducer.java Sun Dec 3 18:55:43 2006
@@ -97,12 +97,14 @@
return new BootstrapObjectClass( oid, registries );
}
+
/**
* A mutable Syntax for the bootstrap phase that uses the
* syntaxCheckerRegistry to dynamically resolve syntax checkers.
*/
public static class BootstrapSyntax extends AbstractSyntax
{
+ private static final long serialVersionUID = 1L;
final SyntaxCheckerRegistry registry;
@@ -145,6 +147,7 @@
public static class BootstrapMatchingRule extends AbstractMatchingRule
{
+ private static final long serialVersionUID = 1L;
final SyntaxRegistry syntaxRegistry;
final NormalizerRegistry normalizerRegistry;
final ComparatorRegistry comparatorRegistry;
@@ -391,6 +394,7 @@
*/
public static class BootstrapObjectClass extends AbstractSchemaObject implements ObjectClass
{
+ private static final long serialVersionUID = 1L;
private final ObjectClassRegistry objectClassRegistry;
private final AttributeTypeRegistry attributeTypeRegistry;
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaComparatorProducer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaComparatorProducer.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaComparatorProducer.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaComparatorProducer.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import java.io.Serializable;
+import java.util.Comparator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.util.StringTools;
+
+
+
+/**
+ * A producer of Comparator objects for the apachemeta schema. This code has been
+ * automatically generated using schema files in the OpenLDAP format along with
+ * the directory plugin for maven. This has been done to facilitate
+ * OpenLDAP schema interoperability.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ApachemetaComparatorProducer extends AbstractBootstrapProducer
+{
+ public ApachemetaComparatorProducer()
+ {
+ super( ProducerTypeEnum.COMPARATOR_PRODUCER );
+ }
+
+
+ // ------------------------------------------------------------------------
+ // BootstrapProducer Methods
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * @see BootstrapProducer#produce(BootstrapRegistries, ProducerCallback)
+ */
+ public void produce( BootstrapRegistries registries, ProducerCallback cb )
+ throws NamingException
+ {
+ Comparator comparator = null;
+
+ comparator = new NameOrNumericIdComparator();
+ cb.schemaObjectProduced( this, "1.3.6.1.4.1.18060.0.4.0.1.0", comparator );
+
+ comparator = new ObjectClassTypeComparator();
+ cb.schemaObjectProduced( this, "1.3.6.1.4.1.18060.0.4.0.1.1", comparator );
+ }
+
+
+ public static class ObjectClassTypeComparator implements Comparator<Object>, Serializable
+ {
+ private static final long serialVersionUID = 1L;
+
+
+ public int compare( Object o1, Object o2 )
+ {
+ String s1 = getString( o1 );
+ String s2 = getString( o2 );
+
+ if ( s1 == null && s2 == null )
+ {
+ return 0;
+ }
+
+ if ( s1 == null )
+ {
+ return -1;
+ }
+
+ if ( s2 == null )
+ {
+ return 1;
+ }
+
+ return s1.compareTo( s2 );
+ }
+
+
+ String getString( Object obj )
+ {
+ String strValue;
+
+ if ( obj == null )
+ {
+ return null;
+ }
+
+ if ( obj instanceof String )
+ {
+ strValue = ( String ) obj;
+ }
+ else if ( obj instanceof byte[] )
+ {
+ strValue = StringTools.utf8ToString( ( byte[] ) obj );
+ }
+ else
+ {
+ strValue = obj.toString();
+ }
+
+ return strValue;
+ }
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaMatchingRuleProducer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaMatchingRuleProducer.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaMatchingRuleProducer.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaMatchingRuleProducer.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import java.util.Comparator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.schema.MatchingRule;
+import org.apache.directory.shared.ldap.schema.NoOpNormalizer;
+import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.schema.Syntax;
+
+
+
+/**
+ * A producer of MatchingRule objects for the apachemeta schema. This code has been
+ * automatically generated using schema files in the OpenLDAP format along with
+ * the directory plugin for maven. This has been done to facilitate
+ * OpenLDAP schema interoperability.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ApachemetaMatchingRuleProducer extends AbstractBootstrapProducer
+{
+ public ApachemetaMatchingRuleProducer()
+ {
+ super( ProducerTypeEnum.MATCHING_RULE_PRODUCER );
+ }
+
+
+ // ------------------------------------------------------------------------
+ // BootstrapProducer Methods
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * @see BootstrapProducer#produce(BootstrapRegistries, ProducerCallback)
+ */
+ public void produce( BootstrapRegistries registries, ProducerCallback cb )
+ throws NamingException
+ {
+ MatchingRule matchingRule = null;
+
+ matchingRule = new ObjectClassTypeMatch();
+ cb.schemaObjectProduced( this, matchingRule.getOid(), matchingRule );
+
+ matchingRule = new NameOrNumericIdMatch( registries.getOidRegistry() );
+ cb.schemaObjectProduced( this, matchingRule.getOid(), matchingRule );
+ }
+
+
+ public static class ObjectClassTypeMatch implements MatchingRule
+ {
+ private static final long serialVersionUID = 1L;
+ public static final Comparator COMPARATOR = new ApachemetaComparatorProducer.ObjectClassTypeComparator();
+ public static final Normalizer NORMALIZER = new NoOpNormalizer();
+ public static final Syntax SYNTAX = new ApachemetaSyntaxProducer.ObjectClassTypeSyntax();
+ public static final String OID = "1.3.6.1.4.1.18060.0.4.0.1.1";
+
+ private static final String[] NAMES = new String[] { "objectClassTypeMatch" };
+
+ public Comparator getComparator() throws NamingException
+ {
+ return COMPARATOR;
+ }
+
+
+ public Normalizer getNormalizer() throws NamingException
+ {
+ return NORMALIZER;
+ }
+
+ public Syntax getSyntax() throws NamingException
+ {
+ return SYNTAX;
+ }
+
+ public String getDescription()
+ {
+ return "objectClassTypeMatch: for mathing AUXILIARY, STRUCTURAL, ABSTRACT";
+ }
+
+ public String getName()
+ {
+ return NAMES[0];
+ }
+
+ public String[] getNames()
+ {
+ return NAMES;
+ }
+
+ public String getOid()
+ {
+ return OID;
+ }
+
+ public boolean isObsolete()
+ {
+ return false;
+ }
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaNormalizerProducer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaNormalizerProducer.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaNormalizerProducer.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaNormalizerProducer.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.schema.NoOpNormalizer;
+import org.apache.directory.shared.ldap.schema.Normalizer;
+
+
+
+/**
+ * A producer of Normalizer objects for the apachemeta schema. This code has been
+ * automatically generated using schema files in the OpenLDAP format along with
+ * the directory plugin for maven. This has been done to facilitate
+ * OpenLDAP schema interoperability.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ApachemetaNormalizerProducer extends AbstractBootstrapProducer
+{
+ public ApachemetaNormalizerProducer()
+ {
+ super( ProducerTypeEnum.NORMALIZER_PRODUCER );
+ }
+
+
+ // ------------------------------------------------------------------------
+ // BootstrapProducer Methods
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * @see BootstrapProducer#produce(BootstrapRegistries, ProducerCallback)
+ */
+ public void produce( BootstrapRegistries registries, ProducerCallback cb )
+ throws NamingException
+ {
+ Normalizer normalizer = null;
+
+ normalizer = new NameOrNumericIdNormalizer( registries.getOidRegistry() );
+ cb.schemaObjectProduced( this, "1.3.6.1.4.1.18060.0.4.0.1.0", normalizer );
+
+ normalizer = new NoOpNormalizer();
+ cb.schemaObjectProduced( this, "1.3.6.1.4.1.18060.0.4.0.1.1", normalizer );
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxCheckerProducer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxCheckerProducer.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxCheckerProducer.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxCheckerProducer.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.schema.NameOrNumericIdSyntaxChecker;
+import org.apache.directory.shared.ldap.schema.ObjectClassTypeSyntaxChecker;
+import org.apache.directory.shared.ldap.schema.SyntaxChecker;
+
+
+
+/**
+ * A producer of SyntaxChecker objects for the apachemeta schema. This code has been
+ * automatically generated using schema files in the OpenLDAP format along with
+ * the directory plugin for maven. This has been done to facilitate
+ * OpenLDAP schema interoperability.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ApachemetaSyntaxCheckerProducer extends AbstractBootstrapProducer
+{
+ public ApachemetaSyntaxCheckerProducer()
+ {
+ super( ProducerTypeEnum.SYNTAX_CHECKER_PRODUCER );
+ }
+
+
+ // ------------------------------------------------------------------------
+ // BootstrapProducer Methods
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * @see BootstrapProducer#produce(BootstrapRegistries, ProducerCallback)
+ */
+ public void produce( BootstrapRegistries registries, ProducerCallback cb )
+ throws NamingException
+ {
+ SyntaxChecker checker = null;
+
+ checker = new NameOrNumericIdSyntaxChecker();
+ cb.schemaObjectProduced( this, NameOrNumericIdSyntaxChecker.DEFAULT_OID, checker );
+
+ checker = new ObjectClassTypeSyntaxChecker();
+ cb.schemaObjectProduced( this, ObjectClassTypeSyntaxChecker.DEFAULT_OID, checker );
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxProducer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxProducer.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxProducer.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/ApachemetaSyntaxProducer.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.schema.NameOrNumericIdSyntaxChecker;
+import org.apache.directory.shared.ldap.schema.ObjectClassTypeSyntaxChecker;
+import org.apache.directory.shared.ldap.schema.Syntax;
+import org.apache.directory.shared.ldap.schema.SyntaxChecker;
+
+
+
+/**
+ * A producer of Syntax objects for the apachemeta schema. This code has been
+ * automatically generated using schema files in the OpenLDAP format along with
+ * the directory plugin for maven. This has been done to facilitate
+ * OpenLDAP schema interoperability.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ApachemetaSyntaxProducer extends AbstractBootstrapProducer
+{
+ public ApachemetaSyntaxProducer()
+ {
+ super( ProducerTypeEnum.SYNTAX_PRODUCER );
+ }
+
+
+ // ------------------------------------------------------------------------
+ // BootstrapProducer Methods
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * @see BootstrapProducer#produce(BootstrapRegistries, ProducerCallback)
+ */
+ public void produce( BootstrapRegistries registries, ProducerCallback cb )
+ throws NamingException
+ {
+ Syntax syntax = null;
+
+ syntax = new NameOrNumericIdSyntax();
+ cb.schemaObjectProduced( this, syntax.getOid(), syntax );
+ }
+
+
+ public static class NameOrNumericIdSyntax implements Syntax
+ {
+ private static final long serialVersionUID = 1L;
+ private final static String OID = "1.3.6.1.4.1.18060.0.4.0.0.0";
+ private final static SyntaxChecker CHECKER = new NameOrNumericIdSyntaxChecker();
+ private final static String[] NAMES = new String[] { "nameOrOid" };
+
+ public final SyntaxChecker getSyntaxChecker() throws NamingException
+ {
+ return CHECKER;
+ }
+
+ public final boolean isHumanReadible()
+ {
+ return true;
+ }
+
+ public final String getDescription()
+ {
+ return "The syntax for either numeric ids or names.";
+ }
+
+ public final String getName()
+ {
+ return NAMES[0];
+ }
+
+ public final String[] getNames()
+ {
+ return NAMES;
+ }
+
+ public final String getOid()
+ {
+ return OID;
+ }
+
+ public final boolean isObsolete()
+ {
+ return false;
+ }
+ }
+
+
+ public static class ObjectClassTypeSyntax implements Syntax
+ {
+ private static final long serialVersionUID = 1L;
+ private final static String OID = "1.3.6.1.4.1.18060.0.4.0.0.1";
+ private final static SyntaxChecker CHECKER = new ObjectClassTypeSyntaxChecker();
+ private final static String[] NAMES = new String[] { "objectClassType" };
+
+ public final SyntaxChecker getSyntaxChecker() throws NamingException
+ {
+ return CHECKER;
+ }
+
+ public final boolean isHumanReadible()
+ {
+ return true;
+ }
+
+ public final String getDescription()
+ {
+ return "The syntax for either numeric ids or names.";
+ }
+
+ public final String getName()
+ {
+ return NAMES[0];
+ }
+
+ public final String[] getNames()
+ {
+ return NAMES;
+ }
+
+ public final String getOid()
+ {
+ return OID;
+ }
+
+ public final boolean isObsolete()
+ {
+ return false;
+ }
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdComparator.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdComparator.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdComparator.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdComparator.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import java.io.Serializable;
+import java.util.Comparator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.server.core.schema.OidRegistry;
+import org.apache.directory.server.core.schema.Registries;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+
+/**
+ * A comparator that sorts OIDs based on their numeric id value. Needs a
+ * OidRegistry to properly do it's job. Public method to set the oid
+ * registry will be used by the server after instantiation in deserialization.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class NameOrNumericIdComparator implements Comparator, Serializable
+{
+ private static final long serialVersionUID = 1L;
+ private transient OidRegistry registry;
+
+
+ public NameOrNumericIdComparator( OidRegistry registry )
+ {
+ this.registry = registry;
+ }
+
+
+ public NameOrNumericIdComparator()
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+ */
+ public int compare( Object o1, Object o2 )
+ {
+ String s1 = getNumericIdString( o1 );
+ String s2 = getNumericIdString( o2 );
+
+ if ( s1 == null && s2 == null )
+ {
+ return 0;
+ }
+
+ if ( s1 == null )
+ {
+ return -1;
+ }
+
+ if ( s2 == null )
+ {
+ return 1;
+ }
+
+ return s1.compareTo( s2 );
+ }
+
+
+ public void setRegistries( Registries registries )
+ {
+ registry = registries.getOidRegistry();
+ }
+
+
+ String getNumericIdString( Object obj )
+ {
+ String strValue;
+
+ if ( obj == null )
+ {
+ return null;
+ }
+
+ if ( obj instanceof String )
+ {
+ strValue = ( String ) obj;
+ }
+ else if ( obj instanceof byte[] )
+ {
+ strValue = StringTools.utf8ToString( ( byte[] ) obj );
+ }
+ else
+ {
+ strValue = obj.toString();
+ }
+
+ if ( strValue.length() == 0 )
+ {
+ return "";
+ }
+
+ if ( registry.hasOid( strValue ) )
+ {
+ try
+ {
+ return registry.getOid( strValue );
+ }
+ catch ( NamingException e )
+ {
+ e.printStackTrace();
+ throw new RuntimeException( "Failed to lookup OID for " + strValue, e );
+ }
+ }
+
+ return strValue;
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdMatch.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdMatch.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdMatch.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdMatch.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+import java.util.Comparator;
+
+import javax.naming.NamingException;
+
+import org.apache.directory.server.core.schema.OidRegistry;
+import org.apache.directory.server.core.schema.Registries;
+import org.apache.directory.shared.ldap.schema.MatchingRule;
+import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.schema.Syntax;
+
+/**
+ * Document me!
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class NameOrNumericIdMatch implements MatchingRule
+{
+ private static final long serialVersionUID = 1L;
+
+ private final static String[] NAMES = new String[] { "nameOrNumericIdMatch" };
+ private final static String OID = "1.3.6.1.4.1.18060.0.4.0.1.0";
+ private transient Normalizer normalizer;
+ private transient Comparator comparator;
+ private transient Syntax syntax;
+
+
+ public NameOrNumericIdMatch()
+ {
+ this.syntax = new ApachemetaSyntaxProducer.NameOrNumericIdSyntax();
+ }
+
+
+ public NameOrNumericIdMatch( OidRegistry registry )
+ {
+ this.normalizer = new NameOrNumericIdNormalizer( registry );
+ this.comparator = new NameOrNumericIdComparator( registry );
+ }
+
+
+ public void setRegistries( Registries registries )
+ {
+ this.normalizer = new NameOrNumericIdNormalizer( registries.getOidRegistry() );
+ this.comparator = new NameOrNumericIdComparator( registries.getOidRegistry() );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.MatchingRule#getComparator()
+ */
+ public Comparator getComparator() throws NamingException
+ {
+ return comparator;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.MatchingRule#getNormalizer()
+ */
+ public Normalizer getNormalizer() throws NamingException
+ {
+ return normalizer;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.MatchingRule#getSyntax()
+ */
+ public Syntax getSyntax() throws NamingException
+ {
+ return syntax;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SchemaObject#getDescription()
+ */
+ public String getDescription()
+ {
+ return "A name or numeric id matchingRule";
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SchemaObject#getName()
+ */
+ public String getName()
+ {
+ return NAMES[0];
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SchemaObject#getNames()
+ */
+ public String[] getNames()
+ {
+ return NAMES;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SchemaObject#getOid()
+ */
+ public String getOid()
+ {
+ return OID;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SchemaObject#isObsolete()
+ */
+ public boolean isObsolete()
+ {
+ return false;
+ }
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdNormalizer.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdNormalizer.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdNormalizer.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/NameOrNumericIdNormalizer.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.server.core.schema.bootstrap;
+
+
+import javax.naming.NamingException;
+
+import org.apache.directory.server.core.schema.OidRegistry;
+import org.apache.directory.server.core.schema.Registries;
+import org.apache.directory.shared.ldap.exception.LdapNamingException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.schema.Normalizer;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+
+/**
+ * A name or numeric id normalizer. Needs an OID registry to operate properly.
+ * The OID registry is injected into this class after instantiation if a
+ * setRegistries(Registries) method is exposed.
+ *
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class NameOrNumericIdNormalizer implements Normalizer
+{
+ private static final long serialVersionUID = 1L;
+
+ private transient OidRegistry registry;
+
+
+ public NameOrNumericIdNormalizer( OidRegistry registry )
+ {
+ this.registry = registry;
+ }
+
+
+ public NameOrNumericIdNormalizer()
+ {
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.Normalizer#normalize(java.lang.Object)
+ */
+ public Object normalize( Object value ) throws NamingException
+ {
+ String strValue;
+
+ if ( value == null )
+ {
+ return null;
+ }
+
+ if ( value instanceof String )
+ {
+ strValue = ( String ) value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ strValue = StringTools.utf8ToString( ( byte[] ) value );
+ }
+ else
+ {
+ strValue = value.toString();
+ }
+
+ if ( strValue.length() == 0 )
+ {
+ return "";
+ }
+
+ if ( registry.hasOid( strValue ) )
+ {
+ return registry.getOid( strValue );
+ }
+
+ throw new LdapNamingException( ResultCodeEnum.OTHER );
+ }
+
+
+ public void setRegistries( Registries registries )
+ {
+ this.registry = registries.getOidRegistry();
+ }
+}
Modified: directory/trunks/apacheds/core/src/main/schema/apache.schema
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/schema/apache.schema?view=diff&rev=482019&r1=482018&r2=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/schema/apache.schema (original)
+++ directory/trunks/apacheds/core/src/main/schema/apache.schema Sun Dec 3 18:55:43 2006
@@ -212,7 +212,7 @@
STRUCTURAL
MUST ( fullyQualifiedJavaClassName $ javaClassByteCode ) )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.23
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.23
NAME 'classLoaderDefaultSearchContext'
DESC 'The default search context for the Ldap Class Loader'
SUP distinguishedName
@@ -223,19 +223,19 @@
# Trigger related
# ===============
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.25 NAME 'prescriptiveTriggerSpecification'
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.25 NAME 'prescriptiveTriggerSpecification'
DESC 'Trigger specification that applies to a set of entries'
EQUALITY directoryStringFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.59
USAGE directoryOperation )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.26 NAME 'entryTriggerSpecification'
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.26 NAME 'entryTriggerSpecification'
DESC 'Trigger specification that applies to a single entry'
EQUALITY directoryStringFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.59
USAGE directoryOperation )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.27 NAME 'triggerExecutionSubentries'
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.27 NAME 'triggerExecutionSubentries'
DESC 'Used to track subentries associated with a trigger area which an entry falls under'
SUP distinguishedName
EQUALITY distinguishedNameMatch
@@ -243,7 +243,7 @@
NO-USER-MODIFICATION
USAGE directoryOperation )
-objectclass ( 1.2.6.1.4.1.18060.1.1.1.3.28 NAME 'triggerExecutionSubentry'
+objectclass ( 1.3.6.1.4.1.18060.0.4.1.2.28 NAME 'triggerExecutionSubentry'
DESC 'Used to track a subentry associated with trigger areas'
AUXILIARY
MUST prescriptiveTriggerSpecification )
@@ -256,7 +256,7 @@
# Mitosis Related
# ======================
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.29
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.29
NAME 'entryUUID'
DESC 'LCUP/LDUP: UUID of the entry'
EQUALITY octetStringMatch
@@ -265,7 +265,7 @@
NO-USER-MODIFICATION
USAGE directoryOperation )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.30
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.30
NAME 'entryCSN'
DESC 'LCUP/LDUP: change sequence number of the entry'
EQUALITY octetStringMatch
@@ -275,7 +275,7 @@
NO-USER-MODIFICATION
USAGE directoryOperation )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.31
+attributetype ( 1.3.6.1.4.1.18060.0.4.1.2.31
NAME 'entryDeleted'
DESC 'Whether or not an entry has been deleted.'
EQUALITY booleanMatch
Modified: directory/trunks/apacheds/core/src/main/schema/apachemeta.schema
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/schema/apachemeta.schema?view=diff&rev=482019&r1=482018&r2=482019
==============================================================================
--- directory/trunks/apacheds/core/src/main/schema/apachemeta.schema (original)
+++ directory/trunks/apacheds/core/src/main/schema/apachemeta.schema Sun Dec 3 18:55:43 2006
@@ -23,8 +23,15 @@
# +------------------------------+-----------------------------+
# | Syntax OID | name |
# +------------------------------+-----------------------------+
-# | 1.3.6.1.4.1.18060.0.4.0.0.0 | nameOrOid |
-# | 1.3.6.1.4.1.18060.0.4.0.0.1 | typeObjectClass |
+# | 1.3.6.1.4.1.18060.0.4.0.0.0 | nameOrNumericId |
+# | 1.3.6.1.4.1.18060.0.4.0.0.1 | objectClassType |
+# +------------------------------+-----------------------------+
+#
+# +------------------------------+-----------------------------+
+# | MatchingRule OID | name |
+# +------------------------------+-----------------------------+
+# | 1.3.6.1.4.1.18060.0.4.0.1.0 | nameOrNumericIdMatch |
+# | 1.3.6.1.4.1.18060.0.4.0.1.1 | objectClassTypeMatch |
# +------------------------------+-----------------------------+
#
# +------------------------------+-----------------------------+
@@ -154,28 +161,28 @@
# --- m-sup-objectclass AttributeType -----------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.5 NAME 'm-sup-objectclass'
DESC 'The list of superiors'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
)
# --- m-must AttributeType ----------------------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.6 NAME 'm-must'
DESC 'The list of mandatory ATs'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
)
# --- m-may AttributeType -----------------------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.7 NAME 'm-may'
DESC 'The list of authorized ATs'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
)
# --- m-type-object-class AttributeType ---------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.8 NAME 'm-type-object-class'
DESC 'The objectclass type'
- EQUALITY typeObjectclassMatch
+ EQUALITY objectClassTypeMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.1
SINGLE-VALUE
)
@@ -190,7 +197,7 @@
# --- m-sup-attribute-type AttributeType --------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.10 NAME 'm-sup-attribute-type'
DESC 'The list of superior'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
SINGLE-VALUE
)
@@ -198,7 +205,7 @@
# --- m-equality AttributeType ------------------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.11 NAME 'm-equality'
DESC 'Equality matching rule'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
SINGLE-VALUE
)
@@ -206,7 +213,7 @@
# --- m-ordering AttributeType ------------------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.12 NAME 'm-ordering'
DESC 'Ordering matching rule'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
SINGLE-VALUE
)
@@ -214,7 +221,7 @@
# --- m-substr AttributeType --------------------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.13 NAME 'm-substr'
DESC 'Substring matching rule'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
SINGLE-VALUE
)
@@ -222,7 +229,7 @@
# --- m-syntax AttributeType --------------------------------------------------
attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.14 NAME 'm-syntax'
DESC 'The attribute syntax'
- EQUALITY nameOrOidMatch
+ EQUALITY nameOrNumericIdMatch
SYNTAX 1.3.6.1.4.1.18060.0.4.0.0.0
SINGLE-VALUE
)
Modified: directory/trunks/apacheds/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java?view=diff&rev=482019&r1=482018&r2=482019
==============================================================================
--- directory/trunks/apacheds/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java (original)
+++ directory/trunks/apacheds/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java Sun Dec 3 18:55:43 2006
@@ -123,9 +123,8 @@
{
private static final Logger log = LoggerFactory.getLogger( ReplicationService.class );
- /** TODO these OID's need to be switched from safehaus to apache enterprise numbers */
- private static final String ENTRY_CSN_OID = "1.2.6.1.4.1.18060.1.1.1.3.30";
- private static final String ENTRY_DELETED_OID = "1.2.6.1.4.1.18060.1.1.1.3.31";
+ private static final String ENTRY_CSN_OID = "1.3.6.1.4.1.18060.0.4.1.2.30";
+ private static final String ENTRY_DELETED_OID = "1.3.6.1.4.1.18060.0.4.1.2.31";
private DirectoryServiceConfiguration directoryServiceConfiguration;
private ReplicationConfiguration configuration;
Added: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxChecker.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxChecker.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxChecker.java (added)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxChecker.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.shared.ldap.schema;
+
+
+import javax.naming.NamingException;
+
+
+import org.apache.directory.shared.ldap.exception.LdapInvalidAttributeValueException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+
+/**
+ * A SyntaxChecker which verifies that a value is either a name or a numeric id
+ * according to RFC 4512.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class NameOrNumericIdSyntaxChecker implements SyntaxChecker
+{
+ public static final String DEFAULT_OID = "1.3.6.1.4.1.18060.0.4.0.0.0";
+ private final String oid;
+
+
+ public NameOrNumericIdSyntaxChecker( String oid )
+ {
+ this.oid = oid;
+ }
+
+
+ public NameOrNumericIdSyntaxChecker()
+ {
+ this.oid = DEFAULT_OID;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SyntaxChecker#assertSyntax(java.lang.Object)
+ */
+ public void assertSyntax( Object value ) throws NamingException
+ {
+ if ( ! isValidSyntax( value ) )
+ {
+ throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX );
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SyntaxChecker#getSyntaxOid()
+ */
+ public String getSyntaxOid()
+ {
+ return oid;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SyntaxChecker#isValidSyntax(java.lang.Object)
+ */
+ public boolean isValidSyntax( Object value )
+ {
+ String strValue;
+
+ if ( value == null )
+ {
+ return false;
+ }
+
+ if ( value instanceof String )
+ {
+ strValue = ( String ) value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ strValue = StringTools.utf8ToString( ( byte[] ) value );
+ }
+ else
+ {
+ strValue = value.toString();
+ }
+
+ if ( strValue.length() == 0 )
+ {
+ return false;
+ }
+
+ // if the first character is a digit it's an attempt at an OID and must be
+ // checked to make sure there are no other chars except '.' and digits.
+ if ( Character.isDigit( strValue.charAt( 0 ) ) )
+ {
+ if ( ! org.apache.directory.shared.asn1.primitives.OID.isOID( strValue ) )
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+ // here we just need to make sure that we have the right characters in the
+ // string and that it starts with a letter.
+ if ( Character.isLetter( strValue.charAt( 0 ) ) )
+ {
+ final int limit = strValue.length();
+ for ( int ii = 0; ii < limit; ii++ )
+ {
+ char ch = strValue.charAt( ii );
+
+ if ( ! Character.isLetter( ch ) && ! Character.isDigit( ch ) && ! ( '-' == ch ) )
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
+}
Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java?view=diff&rev=482019&r1=482018&r2=482019
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/Normalizer.java Sun Dec 3 18:55:43 2006
@@ -20,6 +20,8 @@
package org.apache.directory.shared.ldap.schema;
+import java.io.Serializable;
+
import javax.naming.NamingException;
@@ -29,7 +31,7 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public interface Normalizer
+public interface Normalizer extends Serializable
{
/**
* Gets the normalized value.
Added: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxChecker.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxChecker.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxChecker.java (added)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxChecker.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.shared.ldap.schema;
+
+
+import javax.naming.NamingException;
+
+import org.apache.directory.shared.ldap.exception.LdapInvalidAttributeValueException;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.util.StringTools;
+
+
+/**
+ * A syntax checker which checks to see if an objectClass' type is either:
+ * AUXILIARY, STRUCTURAL, or ABSTRACT. The case is NOT ignored.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ObjectClassTypeSyntaxChecker implements SyntaxChecker
+{
+ public static final String DEFAULT_OID = "1.3.6.1.4.1.18060.0.4.0.0.1";
+ private final String oid;
+
+
+ public ObjectClassTypeSyntaxChecker( String oid )
+ {
+ this.oid = oid;
+ }
+
+
+ public ObjectClassTypeSyntaxChecker()
+ {
+ this.oid = DEFAULT_OID;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SyntaxChecker#assertSyntax(java.lang.Object)
+ */
+ public void assertSyntax( Object value ) throws NamingException
+ {
+ if ( ! isValidSyntax( value ) )
+ {
+ throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX );
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SyntaxChecker#getSyntaxOid()
+ */
+ public String getSyntaxOid()
+ {
+ return oid;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.shared.ldap.schema.SyntaxChecker#isValidSyntax(java.lang.Object)
+ */
+ public boolean isValidSyntax( Object value )
+ {
+ String strValue;
+
+ if ( value == null )
+ {
+ return false;
+ }
+
+ if ( value instanceof String )
+ {
+ strValue = ( String ) value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ strValue = StringTools.utf8ToString( ( byte[] ) value );
+ }
+ else
+ {
+ strValue = value.toString();
+ }
+
+ if ( strValue.length() == 0 )
+ {
+ return false;
+ }
+
+ if ( strValue.length() < 8 || strValue.length() > 10 )
+ {
+ return false;
+ }
+
+ char ch = strValue.charAt( 0 );
+ switch( ch )
+ {
+ case( 'A' ):
+ if ( strValue.equals( "AUXILIARY" ) || strValue.equals( "ABSTRACT" ) )
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ case( 'S' ):
+ return strValue.equals( "STRUCTURAL" );
+ default:
+ return false;
+ }
+ }
+}
Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java?view=diff&rev=482019&r1=482018&r2=482019
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaObject.java Sun Dec 3 18:55:43 2006
@@ -19,6 +19,8 @@
*/
package org.apache.directory.shared.ldap.schema;
+import java.io.Serializable;
+
/**
* Most schema objects have some common attributes. This super interface
@@ -27,7 +29,7 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public interface SchemaObject
+public interface SchemaObject extends Serializable
{
/**
* Gets whether or not this SchemaObject has been inactivated. All
Added: directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxCheckerTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxCheckerTest.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxCheckerTest.java (added)
+++ directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/NameOrNumericIdSyntaxCheckerTest.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.shared.ldap.schema;
+
+
+import junit.framework.TestCase;
+
+
+/**
+ * A test case for the NameOrNumericId test.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class NameOrNumericIdSyntaxCheckerTest extends TestCase
+{
+ NameOrNumericIdSyntaxChecker checker = new NameOrNumericIdSyntaxChecker( "1.1" );
+
+
+ public void testNullString()
+ {
+ assertFalse( checker.isValidSyntax( null ) );
+ }
+
+
+ public void testEmptyString()
+ {
+ assertFalse( checker.isValidSyntax( "" ) );
+ }
+
+
+ public void testOneCharString()
+ {
+ assertFalse( checker.isValidSyntax( "0" ) );
+ assertFalse( checker.isValidSyntax( "." ) );
+ assertTrue( checker.isValidSyntax( "a" ) );
+ assertFalse( checker.isValidSyntax( "-" ) );
+ }
+
+
+ public void testNumericIds()
+ {
+ assertFalse( checker.isValidSyntax( "111" ) );
+ assertFalse( checker.isValidSyntax( "11.a" ) );
+ assertFalse( checker.isValidSyntax( "11.1a" ) );
+ assertTrue( checker.isValidSyntax( "1.1" ) );
+ assertTrue( checker.isValidSyntax( "1.3.6.1.2.67.3.2" ) );
+ }
+
+
+ public void testNames()
+ {
+ assertFalse( checker.isValidSyntax( "asdf$" ) );
+ assertTrue( checker.isValidSyntax( "asdf-asdf" ) );
+ assertFalse( checker.isValidSyntax( "-asdf-asdf" ) );
+ assertTrue( checker.isValidSyntax( "A-asdf-asdf" ) );
+ assertFalse( checker.isValidSyntax( "0-asdf-asdf" ) );
+ assertTrue( checker.isValidSyntax( "A-asdf0a234sdf" ) );
+ }
+}
Added: directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxCheckerTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxCheckerTest.java?view=auto&rev=482019
==============================================================================
--- directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxCheckerTest.java (added)
+++ directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/ObjectClassTypeSyntaxCheckerTest.java Sun Dec 3 18:55:43 2006
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.shared.ldap.schema;
+
+import junit.framework.TestCase;
+
+/**
+ * Test cases for ObjectClassTypeSyntaxChecker.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class ObjectClassTypeSyntaxCheckerTest extends TestCase
+{
+ ObjectClassTypeSyntaxChecker checker = new ObjectClassTypeSyntaxChecker( "1.1" );
+
+
+ public void testNullString()
+ {
+ assertFalse( checker.isValidSyntax( null ) );
+ }
+
+
+ public void testEmptyString()
+ {
+ assertFalse( checker.isValidSyntax( "" ) );
+ }
+
+
+ public void testOneCharString()
+ {
+ assertFalse( checker.isValidSyntax( "0" ) );
+ assertFalse( checker.isValidSyntax( "." ) );
+ assertFalse( checker.isValidSyntax( "a" ) );
+ assertFalse( checker.isValidSyntax( "-" ) );
+ }
+
+
+ public void testWrongCase()
+ {
+ assertFalse( checker.isValidSyntax( "auxiliary" ) );
+ assertFalse( checker.isValidSyntax( "abstract" ) );
+ assertFalse( checker.isValidSyntax( "structural" ) );
+ }
+
+
+ public void testCorrectCase()
+ {
+ assertTrue( checker.isValidSyntax( "AUXILIARY" ) );
+ assertTrue( checker.isValidSyntax( "ABSTRACT" ) );
+ assertTrue( checker.isValidSyntax( "STRUCTURAL" ) );
+ }
+}