You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ni...@apache.org on 2004/09/05 11:15:32 UTC
svn commit: rev 43385 - incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus
Author: niclas
Date: Sun Sep 5 02:15:31 2004
New Revision: 43385
Added:
incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusComponent.java
- copied, changed from rev 43384, incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusModule.java
Removed:
incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusModule.java
Log:
Better name for the component, and ripped out the superclass' content.
Copied: incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusComponent.java (from rev 43384, incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusModule.java)
==============================================================================
--- incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusModule.java (original)
+++ incubator/directory/sandbox/trunk/store/nexus-metro/src/java/org/apache/ldap/metro/store/nexus/NexusComponent.java Sun Sep 5 02:15:31 2004
@@ -23,344 +23,45 @@
* -- any LDAPd project for copyright and distribution information. --
*
*/
-package org.apache.ldap.store.nexus;
-
-import java.util.Collections ;
-import java.util.HashMap ;
-import java.util.Hashtable ;
-import java.util.Iterator ;
-
-import javax.naming.Name ;
-import javax.naming.NameNotFoundException ;
-import javax.naming.NamingEnumeration ;
-import javax.naming.NamingException ;
-
-import javax.naming.directory.Attributes ;
-import javax.naming.directory.ModificationItem ;
-import javax.naming.directory.SearchControls ;
-
-import javax.naming.ldap.Control ;
-import javax.naming.ldap.LdapContext ;
+package org.apache.ldap.metro.store.nexus;
import org.apache.avalon.framework.service.Serviceable ;
import org.apache.avalon.framework.service.ServiceManager ;
import org.apache.avalon.framework.service.ServiceException ;
-import org.apache.ldap.common.filter.ExprNode ;
-import org.apache.ldap.common.NotImplementedException ;
-
-import org.apache.ldap.store.api.BackendNexus ;
import org.apache.ldap.store.api.AtomicBackend ;
+import org.apache.ldap.store.nexus.NexusModule;
/**
- * BackendNexus implementing LDAPd Module.
+ * Metro component for the Nexus implementation.
*
* @avalon.component name="backend-nexus" lifestyle="singleton"
- * @avalon.service type="org.apache.ldap.server.nexus.BackendNexus"
+ * @avalon.service type="org.apache.ldap.store.api.BackendNexus"
* version="1.0"
*
* @author <a href="mailto:aok123@bellsouth.net">Alex Karasulu</a>
* @author $Author: akarasulu $
* @version $Revision: 1.8 $
*/
-public class NexusComponent extends org.apache.ldap.store.nexus.NexusModule
- implements BackendNexus, Serviceable
+public class NexusComponent extends NexusModule
+ implements Serviceable
{
- /** Handle on the singleton instance of this class within the entire JVM. */
- private static NexusModule s_singleton = null ;
-
- /** the system backend */
- private AtomicBackend m_system ;
- /** the backends keyed by normalized suffix strings */
- private HashMap m_backends = new HashMap() ;
-
-
+
/**
* Default constructor that checks to make sure that there is only one
* instance of this class within the entire JVM.
*/
- public NexusModule()
- {
- if ( null != s_singleton )
- {
- throw new IllegalStateException() ;
- }
-
- s_singleton = this ;
- }
-
-
- // ------------------------------------------------------------------------
- // BackendNexus Interface Method Implementations
- // ------------------------------------------------------------------------
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#getLdapContext()
- */
- public LdapContext getLdapContext()
- {
- throw new NotImplementedException() ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#getMatchedDn(javax.naming.Name,
- * boolean)
- */
- public Name getMatchedDn( Name a_dn, boolean a_normalized )
- throws NamingException
- {
- throw new NotImplementedException() ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#getSuffix(javax.naming.Name,
- * boolean)
- */
- public Name getSuffix( Name a_dn, boolean a_normalized )
- throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- return l_backend.getSuffix( a_normalized ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#listSuffixes(boolean)
- */
- public Iterator listSuffixes( boolean a_normalized )
- throws NamingException
- {
- return Collections.unmodifiableSet( m_backends.keySet() ).iterator() ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#getRootDSE()
- */
- public Attributes getRootDSE()
- {
- throw new NotImplementedException() ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#register(
- * org.apache.ldap.server.backend.AtomicBackend)
- */
- public void register( AtomicBackend a_backend )
- {
- m_backends.put( a_backend.getSuffix( true ).toString(), a_backend ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.BackendNexus#unregister(
- * org.apache.ldap.server.backend.AtomicBackend)
- */
- public void unregister( AtomicBackend a_backend )
- {
- m_backends.remove( a_backend.getSuffix( true ).toString() ) ;
- }
-
-
- // ------------------------------------------------------------------------
- // Backend Interface Method Implementations
- // ------------------------------------------------------------------------
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#delete(javax.naming.Name)
- */
- public void delete( Name a_dn ) throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- l_backend.delete( a_dn ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#add(javax.naming.Name,
- * javax.naming.directory.Attributes)
- */
- public void add( String a_updn, Name a_dn, Attributes an_entry )
- throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- l_backend.add( a_updn, a_dn, an_entry ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#modify(javax.naming.Name, int,
- * javax.naming.directory.Attributes)
- */
- public void modify( Name a_dn, int a_modOp, Attributes a_mods )
- throws NamingException
+ public NexusComponent()
{
- AtomicBackend l_backend = getBackend( a_dn ) ;
- l_backend.modify( a_dn, a_modOp, a_mods ) ;
}
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#modify(javax.naming.Name,
- * javax.naming.directory.ModificationItem[])
- */
- public void modify( Name a_dn, ModificationItem[] a_mods )
- throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- l_backend.modify( a_dn, a_mods ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#list(javax.naming.Name)
- */
- public NamingEnumeration list( Name a_base ) throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_base ) ;
- return l_backend.list( a_base ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#search(javax.naming.Name,
- * java.util.Hashtable, org.apache.ldap.common.filter.ExprNode,
- * javax.naming.ldap.Control[], javax.naming.directory.SearchControls)
- */
- public NamingEnumeration search( Name a_base, Hashtable a_env,
- ExprNode a_filter, Control [] a_reqCtls, SearchControls a_searchCtls )
- throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_base ) ;
- return l_backend.search( a_base, a_env, a_filter,
- a_reqCtls, a_searchCtls ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#lookup(javax.naming.Name,
- * java.lang.String)
- */
- public Attributes lookup( Name a_dn, String [] a_attrIds )
- throws NamingException
- {
- throw new NotImplementedException() ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#lookup(javax.naming.Name)
- */
- public Attributes lookup( Name a_dn ) throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- return l_backend.lookup( a_dn ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#hasEntry(javax.naming.Name)
- */
- public boolean hasEntry( Name a_dn ) throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- return l_backend.hasEntry( a_dn ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#isSuffix(javax.naming.Name)
- */
- public boolean isSuffix( Name a_dn ) throws NamingException
- {
- return m_backends.containsKey( a_dn.toString() ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#modifyRdn(javax.naming.Name,
- * java.lang.String, boolean)
- */
- public void modifyRdn( Name a_dn, String a_newRdn, boolean a_deleteOldRdn )
- throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_dn ) ;
- l_backend.modifyRdn( a_dn, a_newRdn, a_deleteOldRdn ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#move(javax.naming.Name,
- * javax.naming.Name)
- */
- public void move( Name a_oldChildDn, Name a_newParentDn )
- throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_oldChildDn ) ;
- l_backend.move( a_oldChildDn, a_newParentDn ) ;
- }
-
-
- /**
- * @see org.apache.ldap.server.backend.Backend#move(javax.naming.Name,
- * javax.naming.Name, java.lang.String, boolean)
- */
- public void move( Name a_oldChildDn, Name a_newParentDn, String a_newRdn,
- boolean a_deleteOldRdn ) throws NamingException
- {
- AtomicBackend l_backend = getBackend( a_oldChildDn ) ;
- l_backend.move( a_oldChildDn, a_newParentDn, a_newRdn, a_deleteOldRdn );
- }
-
-
- // ------------------------------------------------------------------------
- // Private Methods
- // ------------------------------------------------------------------------
-
-
- /**
- * Gets the backend partition associated with a dn.
- *
- * @param a_dn the name to resolve to a backend
- * @return the backend partition associated with the dn
- * @throws NamingException if the name cannot be resolved to a backend
- */
- private AtomicBackend getBackend( Name a_dn ) throws NamingException
- {
- Name l_dn = ( Name ) a_dn.clone() ;
- AtomicBackend l_backend = null ;
-
- while ( l_dn.size() > 0 )
- {
- if ( m_backends.containsKey( l_dn.toString() ) )
- {
- return ( AtomicBackend ) m_backends.get( l_dn.toString() ) ;
- }
-
- l_dn.remove( 0 ) ;
- }
-
- throw new NameNotFoundException() ;
- }
-
-
- // ------------------------------------------------------------------------
- // Life-Cycle Stage Methods
- // ------------------------------------------------------------------------
-
/**
* The nexus is dependent on the SystemBackend and so must get a handle on
* it during the Serviceable life-cycle stage.
*
* @avalon.dependency
- * type="org.apache.ldap.server.backend.AtomicBackend"
+ * type="org.apache.ldap.store.api.AtomicBackend"
* key="system-backend" version="1.0"
*
* @see org.apache.avalon.framework.service.Serviceable#service(
@@ -369,7 +70,7 @@
public void service( ServiceManager a_manager )
throws ServiceException
{
- m_system = ( AtomicBackend ) a_manager.lookup( "system-backend" ) ;
- register( m_system ) ;
+ AtomicBackend system = ( AtomicBackend ) a_manager.lookup( "system-backend" ) ;
+ setSystem( system ) ;
}
}