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 2008/05/31 04:51:51 UTC
svn commit: r661934 - in
/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core:
CoreSession.java DefaultDirectoryService.java DefaultOperationManager.java
DirectoryService.java OperationManager.java
Author: akarasulu
Date: Fri May 30 19:51:51 2008
New Revision: 661934
URL: http://svn.apache.org/viewvc?rev=661934&view=rev
Log:
some preliminary interfaces for performing operations against the DS - will refine for some time until the best fit is found.
Added:
directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java
directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/OperationManager.java
Modified:
directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/CoreSession.java
directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DirectoryService.java
Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/CoreSession.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/CoreSession.java?rev=661934&r1=661933&r2=661934&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/CoreSession.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/CoreSession.java Fri May 30 19:51:51 2008
@@ -27,6 +27,8 @@
import javax.naming.ldap.Control;
import org.apache.directory.server.core.authn.LdapPrincipal;
+import org.apache.directory.server.core.cursor.Cursor;
+import org.apache.directory.server.core.entry.ClonedServerEntry;
import org.apache.directory.server.core.entry.ServerEntry;
import org.apache.directory.server.core.interceptor.context.OperationContext;
import org.apache.directory.shared.ldap.constants.AuthenticationLevel;
@@ -164,45 +166,172 @@
// -----------------------------------------------------------------------
+ /**
+ * Adds an entry into the DirectoryService associated with this CoreSession.
+ *
+ * @param entry the entry to add
+ * @exception Exception on failures to add the entry
+ */
void add( ServerEntry entry ) throws Exception;
+ /**
+ * Checks to see if an attribute in an entry contains a value.
+ *
+ * @param dn the distinguished name of the entry to check
+ * @param oid the OID of the attribute to check for the value
+ * @param value the value to check for
+ * @throws Exception if there are failures while comparing
+ */
void compare( LdapDN dn, String oid, Object value ) throws Exception;
+ /**
+ * Deletes an entry in the server.
+ *
+ * @param dn the distinguished name of the entry to delete
+ * @throws Exception if there are failures while deleting the entry
+ */
void delete( LdapDN dn ) throws Exception;
+ /**
+ * Looks up an entry in the server returning all attributes: both user and
+ * operational attributes.
+ *
+ * @param dn the name of the entry to lookup
+ * @throws Exception if there are failures while looking up the entry
+ */
void lookup( LdapDN dn ) throws Exception;
+ /**
+ * Modifies an entry within the server by applying a list of modifications
+ * to the entry.
+ *
+ * @param dn the distinguished name of the entry to modify
+ * @param mods the list of modifications to apply
+ * @throws Exception if there are failures while modifying the entry
+ */
void modify( LdapDN dn, List<Modification> mods ) throws Exception;
+ /**
+ * Modifies an entry within the server by applying a list of modifications
+ * to the entry as a collateral operation. This means such operations
+ * avoid certain house keeping operations.
+ *
+ * TODO determine if this overload should even be here since this is used
+ * internally by services in the server.
+ *
+ * @param dn the distinguished name of the entry to modify
+ * @param mods the list of modifications to apply
+ * @param collateral whether or not the operation is a side effect of
+ * another modify
+ * @throws Exception if there are failures while modifying the entry
+ */
void modify( LdapDN dn, List<Modification> mods, boolean collateral ) throws Exception;
+ /**
+ * Moves an entry or a branch of entries at a specified distinguished name
+ * to a position under a new parent.
+ *
+ * @param dn the distinguished name of the entry/branch to move
+ * @param newParent the new parent under which the entry/branch is moved
+ * @exception if there are failures while moving the entry/branch
+ */
void move( LdapDN dn, LdapDN newParent ) throws Exception;
+ /**
+ * Moves and renames (the relative distinguished name of) an entry (or a
+ * branch if the entry has children) at a specified distinguished name to
+ * a position under a new parent.
+ *
+ * @param dn the distinguished name of the entry/branch to move
+ * @param newParent the new parent under which the entry/branch is moved
+ * @param newRdn the new relative distinguished name of the entry at the
+ * root of the branch
+ * @exception if there are failures while moving and renaming the entry
+ * or branch
+ */
void moveAndRename( LdapDN dn, LdapDN newParent, Rdn newRdn, boolean deleteOldRdn ) throws Exception;
+ /**
+ * Renames an entry by changing it's relative distinguished name. This
+ * has the side effect of changing the distinguished name of all entries
+ * directly or indirectly subordinate to the named entry if it has
+ * descendants.
+ *
+ * @param dn the distinguished name of the entry to rename
+ * @param newRdn the new relative distinguished name for the entry
+ * @param deleteOldRdn whether or not the old value for the relative
+ * distinguished name is to be deleted from the entry
+ * @throws Exception if there are failures while renaming the entry
+ */
void rename( LdapDN dn, Rdn newRdn, boolean deleteOldRdn ) throws Exception;
- void list( LdapDN dn, AliasDerefMode aliasDerefMode, Set<AttributeTypeOptions> returningAttributes )
- throws Exception;
+ /**
+ * An optimized search operation using one level search scope which
+ * returns all the children of an entry specified by distinguished name.
+ * This is equivalent to a search operation with one level scope using
+ * the <code>(objectClass=*)</code> filter.
+ *
+ * @param dn the distinguished name of the entry to list the children of
+ * @param aliasDerefMode the alias dereferencing mode used
+ * @param returningAttributes the attributes to return
+ * @throws Exception if there are failures while listing children
+ */
+ Cursor<ClonedServerEntry> list( LdapDN dn, AliasDerefMode aliasDerefMode,
+ Set<AttributeTypeOptions> returningAttributes ) throws Exception;
- void list( LdapDN dn, AliasDerefMode aliasDerefMode,
+ /**
+ * An optimized search operation using one level search scope which
+ * applies size and time limit constraints and returns all the children
+ * of an entry specified by distinguished name if thes limits are not
+ * violated. This is equivalent to a search operation with one level
+ * scope using the <code>(objectClass=*)</code> filter.
+ *
+ * @param dn the distinguished name of the entry to list the children of
+ * @param aliasDerefMode the alias dereferencing mode used
+ * @param returningAttributes the attributes to return
+ * @param sizeLimit the upper bound to the number of entries to return
+ * @param timeLimit the upper bound to the amount of time before
+ * terminating the search
+ * @throws Exception if there are failures while listing children
+ */
+ Cursor<ClonedServerEntry> list( LdapDN dn, AliasDerefMode aliasDerefMode,
Set<AttributeTypeOptions> returningAttributes, int sizeLimit, int timeLimit ) throws Exception;
+ /**
+ * Searches the directory using a specified search scope and filter.
+ *
+ * @param dn the distinguished name of the entry to list the children of
+ * @param scope the search scope to apply
+ * @param aliasDerefMode the alias dereferencing mode used
+ * @param returningAttributes the attributes to return
+ * @throws Exception if there are failures while listing children
+ */
void search( LdapDN dn, SearchScope scope, ExprNode filter, AliasDerefMode aliasDerefMode,
Set<AttributeTypeOptions> returningAttributes ) throws Exception;
+ /**
+ * Searches the directory using a specified search scope and filter.
+ *
+ * @param dn the distinguished name of the entry to list the children of
+ * @param aliasDerefMode the alias dereferencing mode used
+ * @param returningAttributes the attributes to return
+ * @param sizeLimit the upper bound to the number of entries to return
+ * @param timeLimit the upper bound to the amount of time before
+ * terminating the search
+ * @throws Exception if there are failures while listing children
+ */
void search( LdapDN dn, SearchScope scope, ExprNode filter, AliasDerefMode aliasDerefMode,
Set<AttributeTypeOptions> returningAttributes, int sizeLimit, int timeLimit ) throws Exception;
}
Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=661934&r1=661933&r2=661934&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Fri May 30 19:51:51 2008
@@ -149,7 +149,14 @@
/** the change log service */
private ChangeLog changeLog;
+
+ /**
+ * the interface used to perform various operations on this
+ * DirectoryService
+ */
+ private OperationManager operationManager = new DefaultOperationManager( this );
+ /** the distinguished name of the administrative user */
private LdapDN adminDn;
/** remove me after implementation is completed */
@@ -735,6 +742,12 @@
return changeLog.getCurrentRevision();
}
+
+ public OperationManager getOperationManager()
+ {
+ return operationManager;
+ }
+
/**
* @throws NamingException if the LDAP server cannot be started
@@ -1331,7 +1344,7 @@
for ( String attributeId : listing.getIndexedAttributes() )
{
- indexedAttributes.add( new JdbmIndex( attributeId ) );
+ indexedAttributes.add( new JdbmIndex<Object,ServerEntry>( attributeId ) );
}
schemaPartition.setIndexedAttributes( indexedAttributes );
@@ -1367,7 +1380,7 @@
if ( partition instanceof BTreePartition )
{
JdbmPartition btpconf = ( JdbmPartition ) partition;
- for ( Index index : btpconf.getIndexedAttributes() )
+ for ( Index<?,ServerEntry> index : btpconf.getIndexedAttributes() )
{
String schemaName = dao.findSchema( index.getAttributeId() );
if ( schemaName == null )
Added: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java?rev=661934&view=auto
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java (added)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java Fri May 30 19:51:51 2008
@@ -0,0 +1,215 @@
+/*
+ * 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;
+
+
+import java.util.Iterator;
+
+import org.apache.directory.server.core.entry.ClonedServerEntry;
+import org.apache.directory.server.core.filtering.EntryFilteringCursor;
+import org.apache.directory.server.core.interceptor.context.AddOperationContext;
+import org.apache.directory.server.core.interceptor.context.BindOperationContext;
+import org.apache.directory.server.core.interceptor.context.CompareOperationContext;
+import org.apache.directory.server.core.interceptor.context.DeleteOperationContext;
+import org.apache.directory.server.core.interceptor.context.EntryOperationContext;
+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.ListOperationContext;
+import org.apache.directory.server.core.interceptor.context.ListSuffixOperationContext;
+import org.apache.directory.server.core.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
+import org.apache.directory.server.core.interceptor.context.MoveAndRenameOperationContext;
+import org.apache.directory.server.core.interceptor.context.MoveOperationContext;
+import org.apache.directory.server.core.interceptor.context.RenameOperationContext;
+import org.apache.directory.server.core.interceptor.context.SearchOperationContext;
+import org.apache.directory.server.core.interceptor.context.UnbindOperationContext;
+import org.apache.directory.shared.ldap.name.LdapDN;
+
+
+/**
+ * The default implementation of an OperationManager.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class DefaultOperationManager implements OperationManager
+{
+ private final DirectoryService directoryService;
+
+
+ public DefaultOperationManager( DirectoryService directoryService )
+ {
+ this.directoryService = directoryService;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#add(org.apache.directory.server.core.interceptor.context.AddOperationContext)
+ */
+ public void add( AddOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().add( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#bind(org.apache.directory.server.core.interceptor.context.BindOperationContext)
+ */
+ public void bind( BindOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().bind( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#compare(org.apache.directory.server.core.interceptor.context.CompareOperationContext)
+ */
+ public boolean compare( CompareOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().compare( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#delete(org.apache.directory.server.core.interceptor.context.DeleteOperationContext)
+ */
+ public void delete( DeleteOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().delete( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#getMatchedName(org.apache.directory.server.core.interceptor.context.GetMatchedNameOperationContext)
+ */
+ public LdapDN getMatchedName( GetMatchedNameOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().getMatchedName( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#getRootDSE(org.apache.directory.server.core.interceptor.context.GetRootDSEOperationContext)
+ */
+ public ClonedServerEntry getRootDSE( GetRootDSEOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().getRootDSE( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#getSuffix(org.apache.directory.server.core.interceptor.context.GetSuffixOperationContext)
+ */
+ public LdapDN getSuffix( GetSuffixOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().getSuffix( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#hasEntry(org.apache.directory.server.core.interceptor.context.EntryOperationContext)
+ */
+ public boolean hasEntry( EntryOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().hasEntry( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#list(org.apache.directory.server.core.interceptor.context.ListOperationContext)
+ */
+ public EntryFilteringCursor list( ListOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().list( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#listSuffixes(org.apache.directory.server.core.interceptor.context.ListSuffixOperationContext)
+ */
+ public Iterator<String> listSuffixes( ListSuffixOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().listSuffixes( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#lookup(org.apache.directory.server.core.interceptor.context.LookupOperationContext)
+ */
+ public ClonedServerEntry lookup( LookupOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().lookup( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#modify(org.apache.directory.server.core.interceptor.context.ModifyOperationContext)
+ */
+ public void modify( ModifyOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().modify( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#move(org.apache.directory.server.core.interceptor.context.MoveOperationContext)
+ */
+ public void move( MoveOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().move( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#moveAndRename(org.apache.directory.server.core.interceptor.context.MoveAndRenameOperationContext)
+ */
+ public void moveAndRename( MoveAndRenameOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().moveAndRename( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#rename(org.apache.directory.server.core.interceptor.context.RenameOperationContext)
+ */
+ public void rename( RenameOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().rename( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#search(org.apache.directory.server.core.interceptor.context.SearchOperationContext)
+ */
+ public EntryFilteringCursor search( SearchOperationContext opContext ) throws Exception
+ {
+ return directoryService.getInterceptorChain().search( opContext );
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.directory.server.core.OperationManager#unbind(org.apache.directory.server.core.interceptor.context.UnbindOperationContext)
+ */
+ public void unbind( UnbindOperationContext opContext ) throws Exception
+ {
+ directoryService.getInterceptorChain().unbind( opContext );
+ }
+}
Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DirectoryService.java?rev=661934&r1=661933&r2=661934&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DirectoryService.java (original)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/DirectoryService.java Fri May 30 19:51:51 2008
@@ -389,4 +389,10 @@
* @param dn the DN for this new entry
*/
ServerEntry newEntry( String ldif, String dn );
+
+
+ /**
+ * Gets the operation manager.
+ */
+ OperationManager getOperationManager();
}
Added: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/OperationManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/OperationManager.java?rev=661934&view=auto
==============================================================================
--- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/OperationManager.java (added)
+++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/OperationManager.java Fri May 30 19:51:51 2008
@@ -0,0 +1,156 @@
+/*
+ * 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;
+
+
+import java.util.Iterator;
+
+import org.apache.directory.server.core.entry.ClonedServerEntry;
+import org.apache.directory.server.core.filtering.EntryFilteringCursor;
+import org.apache.directory.server.core.interceptor.context.AddOperationContext;
+import org.apache.directory.server.core.interceptor.context.BindOperationContext;
+import org.apache.directory.server.core.interceptor.context.CompareOperationContext;
+import org.apache.directory.server.core.interceptor.context.DeleteOperationContext;
+import org.apache.directory.server.core.interceptor.context.EntryOperationContext;
+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.ListOperationContext;
+import org.apache.directory.server.core.interceptor.context.ListSuffixOperationContext;
+import org.apache.directory.server.core.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
+import org.apache.directory.server.core.interceptor.context.MoveAndRenameOperationContext;
+import org.apache.directory.server.core.interceptor.context.MoveOperationContext;
+import org.apache.directory.server.core.interceptor.context.RenameOperationContext;
+import org.apache.directory.server.core.interceptor.context.SearchOperationContext;
+import org.apache.directory.server.core.interceptor.context.UnbindOperationContext;
+import org.apache.directory.shared.ldap.name.LdapDN;
+
+
+/**
+ * An interface used by the DirectoryService to isolate operations that can be
+ * performed on it.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public interface OperationManager
+{
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ ClonedServerEntry getRootDSE( GetRootDSEOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ LdapDN getMatchedName( GetMatchedNameOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ LdapDN getSuffix ( GetSuffixOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ Iterator<String> listSuffixes( ListSuffixOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ boolean compare( CompareOperationContext opContext) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void delete( DeleteOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void add( AddOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void modify( ModifyOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ EntryFilteringCursor list( ListOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ EntryFilteringCursor search( SearchOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ ClonedServerEntry lookup( LookupOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ boolean hasEntry( EntryOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void rename( RenameOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void move( MoveOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void moveAndRename( MoveAndRenameOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void bind( BindOperationContext opContext ) throws Exception;
+
+
+ /**
+ * TODO document after determining if this method should be here.
+ */
+ void unbind( UnbindOperationContext opContext ) throws Exception;
+}