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 2004/10/28 09:46:29 UTC
svn commit: rev 55795 - in incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema: . bootstrap
Author: akarasulu
Date: Thu Oct 28 00:46:28 2004
New Revision: 55795
Added:
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalAttributeTypeRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalComparatorRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalDitContentRuleRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalDitStructureRuleRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalMatchingRuleRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalMatchingRuleUseRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalNameFormRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalNormalizerRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalObjectClassRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalOidRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalSyntaxCheckerRegistry.java
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalSyntaxRegistry.java
Modified:
incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/bootstrap/BootstrapAttributeTypeRegistry.java
Log:
adding all the global registries
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalAttributeTypeRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalAttributeTypeRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.util.JoinIterator;
+import org.apache.ldap.common.schema.AttributeType;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapAttributeTypeRegistry;
+
+
+/**
+ * A plain old java object implementation of an AttributeTypeRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalAttributeTypeRegistry implements AttributeTypeRegistry
+{
+ /** maps an OID to an AttributeType */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private AttributeTypeRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapAttributeTypeRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates a GlobalAttributeTypeRegistry which accesses data stored within
+ * the system partition and within the bootstrapping registry to service
+ * AttributeType lookup requests.
+ *
+ * @param systemPartition the system database partition under ou=system
+ * @param bootstrap the bootstrapping registry to delegate to
+ */
+ public GlobalAttributeTypeRegistry( SystemPartition systemPartition,
+ BootstrapAttributeTypeRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.monitor = new AttributeTypeRegistryMonitorAdapter();
+
+ this.oidRegistry = oidRegistry;
+ if ( this.oidRegistry == null )
+ {
+ throw new NullPointerException( "the OID registry cannot be null" ) ;
+ }
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( AttributeTypeRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, AttributeType attributeType ) throws NamingException
+ {
+ if ( byOid.containsKey( attributeType.getOid() ) ||
+ bootstrap.hasAttributeType( attributeType.getOid() ) )
+ {
+ NamingException e = new NamingException( "attributeType w/ OID " +
+ attributeType.getOid() + " has already been registered!" );
+ monitor.registerFailed( attributeType, e );
+ throw e;
+ }
+
+ String[] names = attributeType.getNames();
+ for ( int ii = 0; ii < names.length; ii++ )
+ {
+ oidRegistry.register( names[ii], attributeType.getOid() );
+ }
+
+ oidToSchema.put( attributeType.getOid(), schema );
+ byOid.put( attributeType.getOid(), attributeType );
+ monitor.registered( attributeType );
+ }
+
+
+ public AttributeType lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( ! ( byOid.containsKey( id ) || bootstrap.hasAttributeType( id ) ) )
+ {
+ NamingException e = new NamingException( "attributeType w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+ AttributeType attributeType = ( AttributeType ) byOid.get( id );
+
+ if ( attributeType == null )
+ {
+ attributeType = bootstrap.lookup( id );
+ }
+
+ monitor.lookedUp( attributeType );
+ return attributeType;
+ }
+
+
+ public boolean hasAttributeType( String id )
+ {
+ try
+ {
+
+ if ( oidRegistry.hasOid( id ) )
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasAttributeType( id );
+ }
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.getSchemaName( id ) != null )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+
+
+
+ public Iterator list()
+ {
+ return new JoinIterator( new Iterator[]
+ { byOid.values().iterator(),bootstrap.list() } );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalComparatorRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalComparatorRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Comparator;
+import javax.naming.NamingException;
+
+import org.apache.eve.schema.bootstrap.BootstrapComparatorRegistry;
+import org.apache.eve.SystemPartition;
+
+
+/**
+ * A simple POJO implementation of the ComparatorRegistry service interface.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalComparatorRegistry implements ComparatorRegistry
+{
+ /** the comparators in this registry */
+ private final Map comparators;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the monitor for delivering callback events */
+ private ComparatorRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapComparatorRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates a default ComparatorRegistry by initializing the map and the
+ * montior.
+ */
+ public GlobalComparatorRegistry( SystemPartition systemPartition,
+ BootstrapComparatorRegistry bootstrap )
+ {
+ this.oidToSchema = new HashMap();
+ this.comparators = new HashMap();
+ this.monitor = new ComparatorRegistryMonitorAdapter();
+
+ // override bootstrap registry used by serializable comparators
+ SerializableComparator.setRegistry( this );
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor used by this registry.
+ *
+ * @param monitor the monitor to set for registry event callbacks
+ */
+ public void setMonitor( ComparatorRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, String oid, Comparator comparator )
+ throws NamingException
+ {
+ if ( comparators.containsKey( oid ) || bootstrap.hasComparator( oid ) )
+ {
+ NamingException e = new NamingException( "Comparator with OID "
+ + oid + " already registered!" );
+ monitor.registerFailed( oid, comparator, e );
+ throw e;
+ }
+
+ oidToSchema.put( oid, schema );
+ comparators.put( oid, comparator );
+ monitor.registered( oid, comparator );
+ }
+
+
+ public Comparator lookup( String oid ) throws NamingException
+ {
+ Comparator c;
+ NamingException e;
+
+ if ( comparators.containsKey( oid ) )
+ {
+ c = ( Comparator ) comparators.get( oid );
+ monitor.lookedUp( oid, c );
+ return c;
+ }
+
+ if ( bootstrap.hasComparator( oid ) )
+ {
+ c = ( Comparator ) bootstrap.lookup( oid );
+ monitor.lookedUp( oid, c );
+ return c;
+ }
+
+ e = new NamingException( "Comparator not found for OID: " + oid );
+ monitor.lookupFailed( oid, e );
+ throw e;
+ }
+
+
+ public boolean hasComparator( String oid )
+ {
+ return comparators.containsKey( oid ) || bootstrap.hasComparator( oid );
+ }
+
+
+ public String getSchemaName( String oid ) throws NamingException
+ {
+ if ( ! Character.isDigit( oid.charAt( 0 ) ) )
+ {
+ throw new NamingException( "OID " + oid + " is not a numeric OID" );
+ }
+
+ if ( oidToSchema.containsKey( oid ) )
+ {
+ return ( String ) oidToSchema.get( oid );
+ }
+
+ if ( bootstrap.hasComparator( oid ) )
+ {
+ return bootstrap.getSchemaName( oid );
+ }
+
+ throw new NamingException( "OID " + oid + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalDitContentRuleRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalDitContentRuleRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.DITContentRule;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapDitContentRuleRegistry;
+
+
+/**
+ * A plain old java object implementation of an DITContentRuleRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalDitContentRuleRegistry implements DITContentRuleRegistry
+{
+ /** maps an OID to an DITContentRule */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private DITContentRuleRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapDitContentRuleRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapDitContentRuleRegistry.
+ */
+ public GlobalDitContentRuleRegistry( SystemPartition systemPartition,
+ BootstrapDitContentRuleRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new DITContentRuleRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( DITContentRuleRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, DITContentRule dITContentRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITContentRule.getOid() ) ||
+ bootstrap.hasDITContentRule( dITContentRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITContentRule w/ OID " +
+ dITContentRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITContentRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITContentRule.getName(), dITContentRule.getOid() ) ;
+ byOid.put( dITContentRule.getOid(), dITContentRule );
+ oidToSchema.put( dITContentRule.getOid(), schema );
+ monitor.registered( dITContentRule );
+ }
+
+
+ public DITContentRule lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ DITContentRule dITContentRule = ( DITContentRule ) byOid.get( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ if ( bootstrap.hasDITContentRule( id ) )
+ {
+ DITContentRule dITContentRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ NamingException e = new NamingException( "dITContentRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasDITContentRule( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasDITContentRule( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasDITContentRule( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalDitStructureRuleRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalDitStructureRuleRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.DITStructureRule;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapDitStructureRuleRegistry;
+
+
+/**
+ * A plain old java object implementation of an DITStructureRuleRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalDitStructureRuleRegistry implements DITStructureRuleRegistry
+{
+ /** maps an OID to an DITStructureRule */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private DITStructureRuleRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapDitStructureRuleRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapDitStructureRuleRegistry.
+ */
+ public GlobalDitStructureRuleRegistry( SystemPartition systemPartition,
+ BootstrapDitStructureRuleRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new DITStructureRuleRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( DITStructureRuleRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, DITStructureRule dITStructureRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITStructureRule.getOid() ) ||
+ bootstrap.hasDITStructureRule( dITStructureRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITStructureRule w/ OID " +
+ dITStructureRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITStructureRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITStructureRule.getName(), dITStructureRule.getOid() ) ;
+ byOid.put( dITStructureRule.getOid(), dITStructureRule );
+ oidToSchema.put( dITStructureRule.getOid(), schema );
+ monitor.registered( dITStructureRule );
+ }
+
+
+ public DITStructureRule lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ DITStructureRule dITStructureRule = ( DITStructureRule ) byOid.get( id );
+ monitor.lookedUp( dITStructureRule );
+ return dITStructureRule;
+ }
+
+ if ( bootstrap.hasDITStructureRule( id ) )
+ {
+ DITStructureRule dITStructureRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITStructureRule );
+ return dITStructureRule;
+ }
+
+ NamingException e = new NamingException( "dITStructureRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasDITStructureRule( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasDITStructureRule( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasDITStructureRule( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalMatchingRuleRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalMatchingRuleRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.MatchingRule;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapMatchingRuleRegistry;
+
+
+/**
+ * A plain old java object implementation of an MatchingRuleRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalMatchingRuleRegistry implements MatchingRuleRegistry
+{
+ /** maps an OID to an MatchingRule */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private MatchingRuleRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapMatchingRuleRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapMatchingRuleRegistry.
+ */
+ public GlobalMatchingRuleRegistry( SystemPartition systemPartition,
+ BootstrapMatchingRuleRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new MatchingRuleRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( MatchingRuleRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, MatchingRule dITContentRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITContentRule.getOid() ) ||
+ bootstrap.hasMatchingRule( dITContentRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITContentRule w/ OID " +
+ dITContentRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITContentRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITContentRule.getName(), dITContentRule.getOid() ) ;
+ byOid.put( dITContentRule.getOid(), dITContentRule );
+ oidToSchema.put( dITContentRule.getOid(), schema );
+ monitor.registered( dITContentRule );
+ }
+
+
+ public MatchingRule lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ MatchingRule dITContentRule = ( MatchingRule ) byOid.get( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ if ( bootstrap.hasMatchingRule( id ) )
+ {
+ MatchingRule dITContentRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ NamingException e = new NamingException( "dITContentRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasMatchingRule( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasMatchingRule( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasMatchingRule( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalMatchingRuleUseRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalMatchingRuleUseRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.MatchingRuleUse;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapMatchingRuleUseRegistry;
+
+
+/**
+ * A plain old java object implementation of an MatchingRuleUseRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalMatchingRuleUseRegistry implements MatchingRuleUseRegistry
+{
+ /** maps an OID to an MatchingRuleUse */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private MatchingRuleUseRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapMatchingRuleUseRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapMatchingRuleUseRegistry.
+ */
+ public GlobalMatchingRuleUseRegistry( SystemPartition systemPartition,
+ BootstrapMatchingRuleUseRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new MatchingRuleUseRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( MatchingRuleUseRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, MatchingRuleUse dITContentRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITContentRule.getOid() ) ||
+ bootstrap.hasMatchingRuleUse( dITContentRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITContentRule w/ OID " +
+ dITContentRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITContentRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITContentRule.getName(), dITContentRule.getOid() ) ;
+ byOid.put( dITContentRule.getOid(), dITContentRule );
+ oidToSchema.put( dITContentRule.getOid(), schema );
+ monitor.registered( dITContentRule );
+ }
+
+
+ public MatchingRuleUse lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ MatchingRuleUse dITContentRule = ( MatchingRuleUse ) byOid.get( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ if ( bootstrap.hasMatchingRuleUse( id ) )
+ {
+ MatchingRuleUse dITContentRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ NamingException e = new NamingException( "dITContentRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasMatchingRuleUse( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasMatchingRuleUse( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasMatchingRuleUse( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalNameFormRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalNameFormRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.NameForm;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapNameFormRegistry;
+
+
+/**
+ * A plain old java object implementation of an NameFormRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalNameFormRegistry implements NameFormRegistry
+{
+ /** maps an OID to an NameForm */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private NameFormRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapNameFormRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapNameFormRegistry.
+ */
+ public GlobalNameFormRegistry( SystemPartition systemPartition,
+ BootstrapNameFormRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new NameFormRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( NameFormRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, NameForm dITContentRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITContentRule.getOid() ) ||
+ bootstrap.hasNameForm( dITContentRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITContentRule w/ OID " +
+ dITContentRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITContentRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITContentRule.getName(), dITContentRule.getOid() ) ;
+ byOid.put( dITContentRule.getOid(), dITContentRule );
+ oidToSchema.put( dITContentRule.getOid(), schema );
+ monitor.registered( dITContentRule );
+ }
+
+
+ public NameForm lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ NameForm dITContentRule = ( NameForm ) byOid.get( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ if ( bootstrap.hasNameForm( id ) )
+ {
+ NameForm dITContentRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ NamingException e = new NamingException( "dITContentRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasNameForm( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasNameForm( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasNameForm( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalNormalizerRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalNormalizerRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.Normalizer;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapNormalizerRegistry;
+
+
+/**
+ * A simple POJO implementation of the NormalizerRegistry service interface.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalNormalizerRegistry implements NormalizerRegistry
+{
+ /** the normalizers in this registry */
+ private final Map normalizers;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the monitor for delivering callback events */
+ private NormalizerRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapNormalizerRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates a default NormalizerRegistry by initializing the map and the
+ * montior.
+ */
+ public GlobalNormalizerRegistry( SystemPartition systemPartition,
+ BootstrapNormalizerRegistry bootstrap )
+ {
+ this.oidToSchema = new HashMap();
+ this.normalizers = new HashMap();
+ this.monitor = new NormalizerRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor used by this registry.
+ *
+ * @param monitor the monitor to set for registry event callbacks
+ */
+ public void setMonitor( NormalizerRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, String oid, Normalizer normalizer )
+ throws NamingException
+ {
+ if ( normalizers.containsKey( oid ) || bootstrap.hasNormalizer( oid ) )
+ {
+ NamingException e = new NamingException( "Normalizer with OID "
+ + oid + " already registered!" );
+ monitor.registerFailed( oid, normalizer, e );
+ throw e;
+ }
+
+ oidToSchema.put( oid, schema );
+ normalizers.put( oid, normalizer );
+ monitor.registered( oid, normalizer );
+ }
+
+
+ public Normalizer lookup( String oid ) throws NamingException
+ {
+ Normalizer c;
+ NamingException e;
+
+ if ( normalizers.containsKey( oid ) )
+ {
+ c = ( Normalizer ) normalizers.get( oid );
+ monitor.lookedUp( oid, c );
+ return c;
+ }
+
+ if ( bootstrap.hasNormalizer( oid ) )
+ {
+ c = ( Normalizer ) bootstrap.lookup( oid );
+ monitor.lookedUp( oid, c );
+ return c;
+ }
+
+ e = new NamingException( "Normalizer not found for OID: " + oid );
+ monitor.lookupFailed( oid, e );
+ throw e;
+ }
+
+
+ public boolean hasNormalizer( String oid )
+ {
+ return normalizers.containsKey( oid ) || bootstrap.hasNormalizer( oid );
+ }
+
+
+ public String getSchemaName( String oid ) throws NamingException
+ {
+ if ( ! Character.isDigit( oid.charAt( 0 ) ) )
+ {
+ throw new NamingException( "OID " + oid + " is not a numeric OID" );
+ }
+
+ if ( oidToSchema.containsKey( oid ) )
+ {
+ return ( String ) oidToSchema.get( oid );
+ }
+
+ if ( bootstrap.hasNormalizer( oid ) )
+ {
+ return bootstrap.getSchemaName( oid );
+ }
+
+ throw new NamingException( "OID " + oid + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalObjectClassRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalObjectClassRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.ObjectClass;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapObjectClassRegistry;
+
+
+/**
+ * A plain old java object implementation of an ObjectClassRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalObjectClassRegistry implements ObjectClassRegistry
+{
+ /** maps an OID to an ObjectClass */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private ObjectClassRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapObjectClassRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapObjectClassRegistry.
+ */
+ public GlobalObjectClassRegistry( SystemPartition systemPartition,
+ BootstrapObjectClassRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new ObjectClassRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( ObjectClassRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, ObjectClass dITContentRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITContentRule.getOid() ) ||
+ bootstrap.hasObjectClass( dITContentRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITContentRule w/ OID " +
+ dITContentRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITContentRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITContentRule.getName(), dITContentRule.getOid() ) ;
+ byOid.put( dITContentRule.getOid(), dITContentRule );
+ oidToSchema.put( dITContentRule.getOid(), schema );
+ monitor.registered( dITContentRule );
+ }
+
+
+ public ObjectClass lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ ObjectClass dITContentRule = ( ObjectClass ) byOid.get( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ if ( bootstrap.hasObjectClass( id ) )
+ {
+ ObjectClass dITContentRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ NamingException e = new NamingException( "dITContentRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasObjectClass( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasObjectClass( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasObjectClass( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalOidRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalOidRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,320 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Collections;
+
+import javax.naming.NamingException;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapOidRegistry;
+
+
+/**
+ * Default OID registry implementation used to resolve a schema object OID
+ * to a name and vice-versa.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 55327 $
+ */
+public class GlobalOidRegistry implements OidRegistry
+{
+ /** Maps OID to a name or a list of names if more than one name exists */
+ private Hashtable byOid = new Hashtable();
+ /** Maps several names to an OID */
+ private Hashtable byName = new Hashtable();
+ /** Default OidRegistryMonitor */
+ private OidRegistryMonitor monitor = new OidRegistryMonitorAdapter();
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapOidRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates a default OidRegistry by initializing the map and the montior.
+ */
+ public GlobalOidRegistry( SystemPartition systemPartition,
+ BootstrapOidRegistry bootstrap )
+ {
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+
+
+ /**
+ * Gets the monitor.
+ *
+ * @return the monitor
+ */
+ OidRegistryMonitor getMonitor()
+ {
+ return monitor;
+ }
+
+
+ /**
+ * Sets the monitor.
+ *
+ * @param monitor monitor to set.
+ */
+ void setMonitor( OidRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * @see OidRegistry#getOid(String)
+ */
+ public String getOid( String name ) throws NamingException
+ {
+ if ( name == null )
+ {
+ throw new NamingException( "name should not be null" );
+ }
+
+ /* If name is an OID than we return it back since inherently the
+ * OID is another name for the object referred to by OID and the
+ * caller does not know that the argument is an OID String.
+ */
+ if ( Character.isDigit( name.charAt( 0 ) ) )
+ {
+ monitor.getOidWithOid( name );
+ return name;
+ }
+
+ // If name is mapped to a OID already return OID
+ if ( byName.containsKey( name ) )
+ {
+ String oid = ( String ) byName.get( name );
+ monitor.oidResolved( name, oid );
+ return oid;
+ }
+
+ if ( bootstrap.hasOid( name ) )
+ {
+ String oid = bootstrap.getOid( name );
+ monitor.oidResolved( name, oid );
+ return oid;
+ }
+
+ /*
+ * As a last resort we check if name is not normalized and if the
+ * normalized version used as a key returns an OID. If the normalized
+ * name works add the normalized name as a key with its OID to the
+ * byName lookup. BTW these normalized versions of the key are not
+ * returned on a getNameSet.
+ */
+ String lowerCase = name.trim().toLowerCase();
+ if ( ! name.equals( lowerCase )
+ && byName.containsKey( lowerCase ) )
+ {
+ String oid = ( String ) byName.get( lowerCase );
+ monitor.oidResolved( name, lowerCase, oid );
+
+ // We expect to see this version of the key again so we add it
+ byName.put( name, oid );
+ return oid;
+ }
+
+ NamingException fault = new NamingException ( "OID for name '"
+ + name + "' was not " + "found within the OID registry" );
+ monitor.oidResolutionFailed( name, fault );
+ throw fault;
+ }
+
+
+ /**
+ * @see OidRegistry#hasOid(String)
+ */
+ public boolean hasOid( String name )
+ {
+ return this.byName.contains( name ) || this.byOid.contains( name );
+ }
+
+
+ /**
+ * @see OidRegistry#getPrimaryName(String)
+ */
+ public String getPrimaryName( String oid ) throws NamingException
+ {
+ Object value = byOid.get( oid );
+
+ if ( null == value )
+ {
+ NamingException fault = new NamingException ( "OID '" + oid
+ + "' was not found within the OID registry" );
+ monitor.oidDoesNotExist( oid, fault );
+ throw fault;
+ }
+
+ if ( value instanceof String )
+ {
+ monitor.nameResolved( oid, ( String ) value );
+ return ( String ) value;
+ }
+
+ String name = ( String ) ( ( List ) value ).get( 0 );
+ monitor.nameResolved( oid, name );
+ return name;
+ }
+
+
+ /**
+ * @see OidRegistry#getNameSet(String)
+ */
+ public List getNameSet( String oid ) throws NamingException
+ {
+ Object value = byOid.get( oid );
+
+ if ( null == value )
+ {
+ NamingException fault = new NamingException ( "OID '" + oid
+ + "' was not found within the OID registry" );
+ monitor.oidDoesNotExist( oid, fault );
+ throw fault;
+ }
+
+ if ( value instanceof String )
+ {
+ List list = Collections.singletonList( value );
+ monitor.namesResolved( oid, list );
+ return list;
+ }
+
+ monitor.namesResolved( oid, ( List ) value );
+ return ( List ) value;
+ }
+
+
+ /**
+ * @see OidRegistry#list()
+ */
+ public Iterator list()
+ {
+ return Collections.unmodifiableSet( byOid.keySet() ).iterator();
+ }
+
+
+ /**
+ * @see OidRegistry#register(String, String)
+ */
+ public void register( String name, String oid )
+ {
+ if ( ! Character.isDigit( oid.charAt( 0 ) ) )
+ {
+ throw new RuntimeException( "Swap the parameter order: the oid " +
+ "does not start with a digit!" );
+ }
+
+ /*
+ * Add the entry for the given name as is and its lowercased version if
+ * the lower cased name is different from the given name name.
+ */
+ String lowerCase = name.toLowerCase();
+ if ( ! lowerCase.equals( name ) )
+ {
+ byName.put( lowerCase, oid );
+ }
+
+ // Put both the name and the oid as names
+ byName.put( name, oid );
+ byName.put( oid, oid );
+
+ /*
+ * Update OID Map
+ *
+ * 1). Check if we already have a value[s] stored
+ * 1a). Value is a single value and is a String
+ * Replace value with list containing old and new values
+ * 1b). More than one value stored in a list
+ * Add new value to the list
+ * 2). If we do not have a value then we just add it as a String
+ */
+ Object value = null;
+ if ( ! byOid.containsKey( oid ) )
+ {
+ value = name;
+ }
+ else
+ {
+ ArrayList list = null;
+ value = byOid.get( oid );
+
+ if ( value instanceof String )
+ {
+ String existingName = ( String ) value;
+
+ // if the existing name is already there we don't readd it
+ if ( existingName.equalsIgnoreCase( name ) )
+ {
+ return;
+ }
+
+ list = new ArrayList();
+ list.add( value );
+ value = list;
+ }
+ else if ( value instanceof ArrayList )
+ {
+ list = ( ArrayList ) value;
+
+ for ( int ii = 0; ii < list.size(); ii++ )
+ {
+ // One form or another of the name already exists in list
+ if ( ! name.equalsIgnoreCase( ( String ) list.get( ii ) ) )
+ {
+ return;
+ }
+ }
+
+ list.add( name );
+ }
+ }
+
+ byOid.put( oid, value );
+ monitor.registered( name, oid );
+ }
+}
+
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalSyntaxCheckerRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalSyntaxCheckerRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.SyntaxChecker;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapSyntaxCheckerRegistry;
+
+
+/**
+ * A simple POJO implementation of the SyntaxCheckerRegistry service interface.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalSyntaxCheckerRegistry implements SyntaxCheckerRegistry
+{
+ /** the syntaxCheckers in this registry */
+ private final Map syntaxCheckers;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the monitor for delivering callback events */
+ private SyntaxCheckerRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapSyntaxCheckerRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates a default SyntaxCheckerRegistry by initializing the map and the
+ * montior.
+ */
+ public GlobalSyntaxCheckerRegistry( SystemPartition systemPartition,
+ BootstrapSyntaxCheckerRegistry bootstrap )
+ {
+ this.oidToSchema = new HashMap();
+ this.syntaxCheckers = new HashMap();
+ this.monitor = new SyntaxCheckerRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor used by this registry.
+ *
+ * @param monitor the monitor to set for registry event callbacks
+ */
+ public void setMonitor( SyntaxCheckerRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, String oid, SyntaxChecker syntaxChecker )
+ throws NamingException
+ {
+ if ( syntaxCheckers.containsKey( oid ) || bootstrap.hasSyntaxChecker( oid ) )
+ {
+ NamingException e = new NamingException( "SyntaxChecker with OID "
+ + oid + " already registered!" );
+ monitor.registerFailed( oid, syntaxChecker, e );
+ throw e;
+ }
+
+ oidToSchema.put( oid, schema );
+ syntaxCheckers.put( oid, syntaxChecker );
+ monitor.registered( oid, syntaxChecker );
+ }
+
+
+ public SyntaxChecker lookup( String oid ) throws NamingException
+ {
+ SyntaxChecker c;
+ NamingException e;
+
+ if ( syntaxCheckers.containsKey( oid ) )
+ {
+ c = ( SyntaxChecker ) syntaxCheckers.get( oid );
+ monitor.lookedUp( oid, c );
+ return c;
+ }
+
+ if ( bootstrap.hasSyntaxChecker( oid ) )
+ {
+ c = ( SyntaxChecker ) bootstrap.lookup( oid );
+ monitor.lookedUp( oid, c );
+ return c;
+ }
+
+ e = new NamingException( "SyntaxChecker not found for OID: " + oid );
+ monitor.lookupFailed( oid, e );
+ throw e;
+ }
+
+
+ public boolean hasSyntaxChecker( String oid )
+ {
+ return syntaxCheckers.containsKey( oid ) || bootstrap.hasSyntaxChecker( oid );
+ }
+
+
+ public String getSchemaName( String oid ) throws NamingException
+ {
+ if ( ! Character.isDigit( oid.charAt( 0 ) ) )
+ {
+ throw new NamingException( "OID " + oid + " is not a numeric OID" );
+ }
+
+ if ( oidToSchema.containsKey( oid ) )
+ {
+ return ( String ) oidToSchema.get( oid );
+ }
+
+ if ( bootstrap.hasSyntaxChecker( oid ) )
+ {
+ return bootstrap.getSchemaName( oid );
+ }
+
+ throw new NamingException( "OID " + oid + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Added: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalSyntaxRegistry.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/GlobalSyntaxRegistry.java Thu Oct 28 00:46:28 2004
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.eve.schema;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import javax.naming.NamingException;
+
+import org.apache.ldap.common.schema.Syntax;
+
+import org.apache.eve.SystemPartition;
+import org.apache.eve.schema.bootstrap.BootstrapSyntaxRegistry;
+
+
+/**
+ * A plain old java object implementation of an SyntaxRegistry.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class GlobalSyntaxRegistry implements SyntaxRegistry
+{
+ /** maps an OID to an Syntax */
+ private final Map byOid;
+ /** maps an OID to a schema name*/
+ private final Map oidToSchema;
+ /** the registry used to resolve names to OIDs */
+ private final OidRegistry oidRegistry;
+ /** monitor notified via callback events */
+ private SyntaxRegistryMonitor monitor;
+ /** the underlying bootstrap registry to delegate on misses to */
+ private BootstrapSyntaxRegistry bootstrap;
+ /** the system partition where we keep attributeType updates */
+ private SystemPartition systemPartition;
+
+
+ // ------------------------------------------------------------------------
+ // C O N S T R U C T O R S
+ // ------------------------------------------------------------------------
+
+
+ /**
+ * Creates an empty BootstrapSyntaxRegistry.
+ */
+ public GlobalSyntaxRegistry( SystemPartition systemPartition,
+ BootstrapSyntaxRegistry bootstrap, OidRegistry oidRegistry )
+ {
+ this.byOid = new HashMap();
+ this.oidToSchema = new HashMap();
+ this.oidRegistry = oidRegistry;
+ this.monitor = new SyntaxRegistryMonitorAdapter();
+
+ this.bootstrap = bootstrap;
+ if ( this.bootstrap == null )
+ {
+ throw new NullPointerException( "the bootstrap registry cannot be null" ) ;
+ }
+
+ this.systemPartition = systemPartition;
+ if ( this.systemPartition == null )
+ {
+ throw new NullPointerException( "the system partition cannot be null" ) ;
+ }
+ }
+
+
+ /**
+ * Sets the monitor that is to be notified via callback events.
+ *
+ * @param monitor the new monitor to notify of notable events
+ */
+ public void setMonitor( SyntaxRegistryMonitor monitor )
+ {
+ this.monitor = monitor;
+ }
+
+
+ // ------------------------------------------------------------------------
+ // Service Methods
+ // ------------------------------------------------------------------------
+
+
+ public void register( String schema, Syntax dITContentRule ) throws NamingException
+ {
+ if ( byOid.containsKey( dITContentRule.getOid() ) ||
+ bootstrap.hasSyntax( dITContentRule.getOid() ) )
+ {
+ NamingException e = new NamingException( "dITContentRule w/ OID " +
+ dITContentRule.getOid() + " has already been registered!" );
+ monitor.registerFailed( dITContentRule, e );
+ throw e;
+ }
+
+ oidRegistry.register( dITContentRule.getName(), dITContentRule.getOid() ) ;
+ byOid.put( dITContentRule.getOid(), dITContentRule );
+ oidToSchema.put( dITContentRule.getOid(), schema );
+ monitor.registered( dITContentRule );
+ }
+
+
+ public Syntax lookup( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( byOid.containsKey( id ) )
+ {
+ Syntax dITContentRule = ( Syntax ) byOid.get( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ if ( bootstrap.hasSyntax( id ) )
+ {
+ Syntax dITContentRule = bootstrap.lookup( id );
+ monitor.lookedUp( dITContentRule );
+ return dITContentRule;
+ }
+
+ NamingException e = new NamingException( "dITContentRule w/ OID "
+ + id + " not registered!" );
+ monitor.lookupFailed( id, e );
+ throw e;
+ }
+
+
+ public boolean hasSyntax( String id )
+ {
+ if ( oidRegistry.hasOid( id ) )
+ {
+ try
+ {
+ return byOid.containsKey( oidRegistry.getOid( id ) ) ||
+ bootstrap.hasSyntax( id );
+ }
+ catch ( NamingException e )
+ {
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+
+ public String getSchemaName( String id ) throws NamingException
+ {
+ id = oidRegistry.getOid( id );
+
+ if ( oidToSchema.containsKey( id ) )
+ {
+ return ( String ) oidToSchema.get( id );
+ }
+
+ if ( bootstrap.hasSyntax( id ) )
+ {
+ return bootstrap.getSchemaName( id );
+ }
+
+ throw new NamingException( "OID " + id + " not found in oid to " +
+ "schema name map!" );
+ }
+}
Modified: incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/bootstrap/BootstrapAttributeTypeRegistry.java
==============================================================================
--- incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/bootstrap/BootstrapAttributeTypeRegistry.java (original)
+++ incubator/directory/eve/trunk/backend/core/src/java/org/apache/eve/schema/bootstrap/BootstrapAttributeTypeRegistry.java Thu Oct 28 00:46:28 2004
@@ -151,8 +151,7 @@
}
-
- Iterator list()
+ public Iterator list()
{
return byOid.values().iterator();
}