blob: 794e2bbc573d456f9da2cc3668d6acc427d5b5ba [file] [log] [blame]
package org.apache.directory.server.core.partition;
import java.util.Set;
import org.apache.directory.server.core.entry.ClonedServerEntry;
import org.apache.directory.server.core.interceptor.context.AddContextPartitionOperationContext;
import org.apache.directory.server.core.interceptor.context.CompareOperationContext;
import org.apache.directory.server.core.interceptor.context.GetMatchedNameOperationContext;
import org.apache.directory.server.core.interceptor.context.GetRootDSEOperationContext;
import org.apache.directory.server.core.interceptor.context.GetSuffixOperationContext;
import org.apache.directory.server.core.interceptor.context.ListSuffixOperationContext;
import org.apache.directory.server.core.interceptor.context.RemoveContextPartitionOperationContext;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.util.StringTools;
public interface PartitionNexus extends Partition
{
/** the admin super user uid */
public static final String ADMIN_UID = "admin";
/** the initial admin passwd set on startup */
public static final String ADMIN_PASSWORD_STRING = "secret";
public static final byte[] ADMIN_PASSWORD_BYTES = StringTools.getBytesUtf8( ADMIN_PASSWORD_STRING );
/**
* Get's the RootDSE entry for the DSA.
*
* @return the attributes of the RootDSE
*/
public ClonedServerEntry getRootDSE( GetRootDSEOperationContext getRootDSEContext );
/**
* Add a partition to the server.
*
* @param opContext The Add Partition context
* @throws Exception If the addition can't be done
*/
public void addContextPartition( AddContextPartitionOperationContext opContext ) throws Exception;
/**
* Remove a partition from the server.
*
* @param opContext The Remove Partition context
* @throws Exception If the removal can't be done
*/
public void removeContextPartition( RemoveContextPartitionOperationContext removeContextPartition )
throws Exception;
/**
* @return The ou=system partition
*/
public Partition getSystemPartition();
/**
* Get's the partition corresponding to a distinguished name. This
* name need not be the name of the partition suffix. When used in
* conjunction with get suffix this can properly find the partition
* associated with the DN. Make sure to use the normalized DN.
*
* @param dn the normalized distinguished name to get a partition for
* @return the partition containing the entry represented by the dn
* @throws Exception if there is no partition for the dn
*/
public Partition getPartition( DN dn ) throws Exception;
/**
* Gets the most significant Dn that exists within the server for any Dn.
*
* @param getMatchedNameContext the context containing the distinguished name
* to use for matching.
* @return a distinguished name representing the matching portion of dn,
* as originally provided by the user on creation of the matched entry or
* the empty string distinguished name if no match was found.
* @throws Exception if there are any problems
*/
public DN getMatchedName( GetMatchedNameOperationContext matchedNameContext ) throws Exception;
/**
* Gets the distinguished name of the suffix that would hold an entry with
* the supplied distinguished name parameter. If the DN argument does not
* fall under a partition suffix then the empty string Dn is returned.
*
* @param suffixContext the Context containing normalized distinguished
* name to use for finding a suffix.
* @return the suffix portion of dn, or the valid empty string Dn if no
* naming context was found for dn.
* @throws Exception if there are any problems
*/
public DN getSuffix( GetSuffixOperationContext getSuffixContext ) throws Exception;
/**
* Gets an iteration over the Name suffixes of the partitions managed by this
* {@link DefaultPartitionNexus}.
*
* @return Iteration over ContextPartition suffix names as Names.
* @throws Exception if there are any problems
*/
public Set<String> listSuffixes( ListSuffixOperationContext emptyContext ) throws Exception;
/**
* Adds a set of supportedExtension (OID Strings) to the RootDSE.
*
* @param extensionOids a set of OID strings to add to the supportedExtension
* attribute in the RootDSE
*/
public void registerSupportedExtensions( Set<String> extensionOids ) throws Exception;
/**
* Adds a set of supportedSaslMechanisms (OID Strings) to the RootDSE.
*
* @param extensionOids a set of OID strings to add to the supportedSaslMechanisms
* attribute in the RootDSE
*/
public void registerSupportedSaslMechanisms( Set<String> supportedSaslMechanisms ) throws Exception;
public boolean compare( CompareOperationContext opContext ) throws Exception;
}