You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2011/11/11 10:57:31 UTC
svn commit: r1200792 [1/2] - in /directory/apacheds/trunk:
core-api/src/main/java/org/apache/directory/server/core/api/
core-api/src/main/java/org/apache/directory/server/core/api/interceptor/
core-api/src/main/java/org/apache/directory/server/core/api...
Author: elecharny
Date: Fri Nov 11 09:57:30 2011
New Revision: 1200792
URL: http://svn.apache.org/viewvc?rev=1200792&view=rev
Log:
o Moved the Search operation out of the InterceptorChain
o Completely get rid of the InterceptorChain and all the associated data structures
Removed:
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/InterceptorChain.java
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/NextInterceptor.java
directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/interceptor/
Modified:
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/DirectoryService.java
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/BaseInterceptor.java
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/Interceptor.java
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/context/SearchOperationContext.java
directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockDirectoryService.java
directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockInterceptor.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java
directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java
directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java
directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java
directory/apacheds/trunk/interceptors/collective/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java
directory/apacheds/trunk/interceptors/logger/src/main/java/org/apache/directory/server/core/logger/TimerInterceptor.java
directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
directory/apacheds/trunk/interceptors/operational/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeInterceptor.java
directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java
directory/apacheds/trunk/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/search/SearchLimitsIT.java
Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/DirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/DirectoryService.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/DirectoryService.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/DirectoryService.java Fri Nov 11 09:57:30 2011
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.core.api;
@@ -32,7 +32,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.entry.ServerEntryFactory;
import org.apache.directory.server.core.api.event.EventService;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.InterceptorChain;
import org.apache.directory.server.core.api.journal.Journal;
import org.apache.directory.server.core.api.partition.Partition;
import org.apache.directory.server.core.api.partition.PartitionNexus;
@@ -97,11 +96,8 @@ public interface DirectoryService extend
PartitionNexus getPartitionNexus();
- InterceptorChain getInterceptorChain();
-
-
void addPartition( Partition partition ) throws Exception;
-
+
void removePartition( Partition partition ) throws Exception;
@@ -109,20 +105,20 @@ public interface DirectoryService extend
* @return The Directory Service SchemaManager
*/
SchemaManager getSchemaManager();
-
-
+
+
/**
* @return The LDAP codec service.
*/
LdapApiService getLdapCodecService();
-
+
/**
* @return The referral manager
*/
ReferralManager getReferralManager();
-
+
/**
* Set the referralManager
*
@@ -130,7 +126,7 @@ public interface DirectoryService extend
*/
void setReferralManager( ReferralManager referralManager );
-
+
/**
* @return The schema partition
*/
@@ -145,8 +141,8 @@ public interface DirectoryService extend
EventService getEventService();
-
-
+
+
/**
*/
void setEventService( EventService eventService );
@@ -181,15 +177,15 @@ public interface DirectoryService extend
*/
boolean isStarted();
-
+
/**
* @return The Admin session
*/
CoreSession getAdminSession();
-
-
- /**
- * @return Returns the hash mapping the Dn of a subentry to its SubtreeSpecification/types
+
+
+ /**
+ * @return Returns the hash mapping the Dn of a subentry to its SubtreeSpecification/types
**/
SubentryCache getSubentryCache();
@@ -197,42 +193,42 @@ public interface DirectoryService extend
* @return Returns the subentry evaluator
*/
SubtreeEvaluator getEvaluator();
-
+
/**
* Gets a logical session to perform operations on this DirectoryService
- * as the anonymous user. This bypasses authentication without
+ * as the anonymous user. This bypasses authentication without
* propagating a bind operation into the core.
*
* @return a logical session as the anonymous user
*/
CoreSession getSession() throws Exception;
-
+
/**
* Gets a logical session to perform operations on this DirectoryService
- * as a specific user. This bypasses authentication without propagating
+ * as a specific user. This bypasses authentication without propagating
* a bind operation into the core.
*
* @return a logical session as a specific user
*/
CoreSession getSession( LdapPrincipal principal ) throws Exception;
-
+
/**
* Gets a logical session to perform operations on this DirectoryService
- * as a specific user with a separate authorization principal. This
- * bypasses authentication without propagating a bind operation into the
+ * as a specific user with a separate authorization principal. This
+ * bypasses authentication without propagating a bind operation into the
* core.
*
* @return a logical session as a specific user
*/
CoreSession getSession( Dn principalDn, byte[] credentials ) throws LdapException;
-
+
/**
* Gets a logical session to perform operations on this DirectoryService
- * as a specific user with a separate authorization principal. This
- * bypasses authentication without propagating a bind operation into the
+ * as a specific user with a separate authorization principal. This
+ * bypasses authentication without propagating a bind operation into the
* core.
*
* @return a logical session as a specific user
@@ -240,7 +236,7 @@ public interface DirectoryService extend
CoreSession getSession( Dn principalDn, byte[] credentials, String saslMechanism, String saslAuthId )
throws Exception;
-
+
/**
*/
void setInstanceId( String instanceId );
@@ -341,29 +337,29 @@ public interface DirectoryService extend
* @param interceptors the interceptors to be used in the server.
*/
void setInterceptors( List<Interceptor> interceptors );
-
-
+
+
/**
* Add an interceptor in the first position in the interceptor list.
* @param interceptor The added interceptor
*/
void addFirst( Interceptor interceptor ) throws LdapException;
-
-
+
+
/**
* Add an interceptor in the last position in the interceptor list.
* @param interceptor The added interceptor
*/
void addLast( Interceptor interceptor ) throws LdapException;
-
+
/**
* Add an interceptor after a given interceptor in the interceptor list.
* @param interceptorName The interceptor name to find
* @param interceptor The added interceptor
*/
void addAfter( String interceptorName, Interceptor interceptor );
-
-
+
+
/**
* Remove an interceptor from the list of interceptors
* @param interceptorName The interceptor to remove
@@ -378,7 +374,7 @@ public interface DirectoryService extend
*/
void setJournal( Journal journal );
-
+
/**
* Returns test directory entries({@link org.apache.directory.shared.ldap.model.ldif.LdifEntry}) to be loaded while
* bootstrapping.
@@ -404,7 +400,7 @@ public interface DirectoryService extend
*/
InstanceLayout getInstanceLayout();
-
+
/**
* Sets the InstanceLayout used by the DirectoryService to store the files
* @param instanceLayout The InstanceLayout to set
@@ -477,7 +473,7 @@ public interface DirectoryService extend
* @param changeLog the change log service to set
*/
void setChangeLog( ChangeLog changeLog );
-
+
/**
* Create a new Entry.
@@ -486,8 +482,8 @@ public interface DirectoryService extend
* @param dn the Dn for this new entry
*/
Entry newEntry( String ldif, String dn );
-
-
+
+
/**
* Gets the operation manager.
*/
@@ -501,21 +497,21 @@ public interface DirectoryService extend
/**
- * Set the maximum allowed size for an incoming PDU
+ * Set the maximum allowed size for an incoming PDU
* @param maxPDUSize A positive number of bytes for the PDU. A negative or
* null value will be transformed to {@link Integer#MAX_VALUE}
*/
void setMaxPDUSize( int maxPDUSize );
-
-
+
+
/**
* Get an Interceptor instance from its name
- * @param interceptorName The interceptor's name for which we want the instance
+ * @param interceptorName The interceptor's name for which we want the instance
* @return the interceptor for the given name
*/
Interceptor getInterceptor( String interceptorName );
-
-
+
+
/**
* Get a new CSN
* @return The CSN generated for this directory service
@@ -541,7 +537,7 @@ public interface DirectoryService extend
* @param schemaManager The SchemaManager to associate
*/
void setSchemaManager( SchemaManager schemaManager );
-
+
/**
* the highest committed CSN value
@@ -550,31 +546,31 @@ public interface DirectoryService extend
*/
void setContextCsn( String lastCommittedCsnVal );
-
+
/**
* @return the current highest committed CSN value
*/
String getContextCsn();
-
-
+
+
/**
* the time interval at which the DirectoryService's data is flushed to disk
*
* @param syncPeriodMillis the syncPeriodMillis to set
*/
void setSyncPeriodMillis( long syncPeriodMillis );
-
-
+
+
/**
* @return the syncPeriodMillis
*/
long getSyncPeriodMillis();
-
+
/**
* @return the cache service
*/
CacheService getCacheService();
-
+
/**
* @return The AccessControl AdministrativePoint cache
@@ -598,8 +594,8 @@ public interface DirectoryService extend
* @return The TriggerExecution AdministrativePoint cache
*/
DnNode<TriggerExecutionAdministrativePoint> getTriggerExecutionAPCache();
-
-
+
+
/**
* @return true if the password policy is enabled, false otherwise
*/
Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/BaseInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/BaseInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/BaseInterceptor.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/BaseInterceptor.java Fri Nov 11 09:57:30 2011
@@ -253,7 +253,7 @@ public abstract class BaseInterceptor im
/**
* {@inheritDoc}
*/
- public EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
return nexus.search( searchContext );
}
@@ -653,9 +653,27 @@ public abstract class BaseInterceptor im
}
- public EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext ) throws LdapException
+ /**
+ * {@inheritDoc}
+ */
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
- return next.search( searchContext );
+ return null;
+ }
+
+
+ /**
+ * Calls the next interceptor for the search operation.
+ *
+ * @param searchContext The context in which we are executing this operation
+ * @return the cursor containing the found entries
+ * @throws LdapException If something went wrong
+ */
+ protected final EntryFilteringCursor next( SearchOperationContext searchContext ) throws LdapException
+ {
+ Interceptor interceptor = getNextInterceptor( searchContext );
+
+ return interceptor.search( searchContext );
}
Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/Interceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/Interceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/Interceptor.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/Interceptor.java Fri Nov 11 09:57:30 2011
@@ -208,7 +208,7 @@ public interface Interceptor
/**
* Filters {@link Partition#search( SearchOperationContext )} call.
*/
- EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext ) throws LdapException;
+ EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException;
/**
Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/context/SearchOperationContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/context/SearchOperationContext.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/context/SearchOperationContext.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/interceptor/context/SearchOperationContext.java Fri Nov 11 09:57:30 2011
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.core.api.interceptor.context;
@@ -28,6 +28,7 @@ import java.util.Set;
import javax.naming.directory.SearchControls;
import org.apache.directory.server.core.api.CoreSession;
+import org.apache.directory.server.core.api.OperationEnum;
import org.apache.directory.shared.ldap.model.message.controls.ManageDsaIT;
import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
import org.apache.directory.shared.ldap.model.exception.LdapException;
@@ -57,41 +58,43 @@ public class SearchOperationContext exte
public SearchOperationContext( CoreSession session )
{
super( session );
+ setInterceptors( session.getDirectoryService().getInterceptors( OperationEnum.SEARCH ) );
}
/**
* Creates a new instance of SearchOperationContext.
- * @throws Exception
+ * @throws Exception
*/
public SearchOperationContext( CoreSession session, SearchRequest searchRequest ) throws LdapException
{
super( session );
-
+ setInterceptors( session.getDirectoryService().getInterceptors( OperationEnum.SEARCH ) );
+
this.dn = searchRequest.getBase();
this.filter = searchRequest.getFilter();
this.abandoned = searchRequest.isAbandoned();
this.aliasDerefMode = searchRequest.getDerefAliases();
-
+
this.requestControls = searchRequest.getControls();
this.scope = searchRequest.getScope();
this.sizeLimit = searchRequest.getSizeLimit();
this.timeLimit = searchRequest.getTimeLimit();
this.typesOnly = searchRequest.getTypesOnly();
-
+
List<String> ats = searchRequest.getAttributes();
-
+
// section 4.5.1.8 of RFC 4511
//1. An empty list with no attributes requests the return of all user attributes.
if ( ats.isEmpty() )
{
ats = new ArrayList<String>();
ats.add( SchemaConstants.ALL_USER_ATTRIBUTES );
- ats = Collections.unmodifiableList( ats );
+ ats = Collections.unmodifiableList( ats );
}
-
+
setReturningAttributes( ats );
-
+
throwReferral = !requestControls.containsKey( ManageDsaIT.OID );
}
@@ -111,6 +114,7 @@ public class SearchOperationContext exte
timeLimit = searchControls.getTimeLimit();
sizeLimit = searchControls.getCountLimit();
typesOnly = searchControls.getReturningObjFlag();
+ setInterceptors( session.getDirectoryService().getInterceptors( OperationEnum.SEARCH ) );
if ( searchControls.getReturningAttributes() != null )
{
@@ -139,11 +143,12 @@ public class SearchOperationContext exte
super( session, dn, returningAttributes );
super.setScope( scope );
this.filter = filter;
+ setInterceptors( session.getDirectoryService().getInterceptors( OperationEnum.SEARCH ) );
}
/**
- * Checks whether or not the ManageDsaITControl is present. If not
+ * Checks whether or not the ManageDsaITControl is present. If not
* present then the filter is modified to force the return of all referral
* entries regardless of whether or not the filter matches the referral
* entry.
@@ -152,8 +157,8 @@ public class SearchOperationContext exte
{
return super.hasRequestControl( ManageDsaIT.OID );
}
-
-
+
+
/**
* @return The filter
*/
@@ -180,7 +185,7 @@ public class SearchOperationContext exte
public String toString()
{
return "SearchContext for Dn '" + getDn().getName() + "', filter :'"
- + filter + "'";
+ + filter + "'";
}
Modified: directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockDirectoryService.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockDirectoryService.java (original)
+++ directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockDirectoryService.java Fri Nov 11 09:57:30 2011
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.server.core.api;
@@ -35,7 +35,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.changelog.ChangeLog;
import org.apache.directory.server.core.api.event.EventService;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.InterceptorChain;
import org.apache.directory.server.core.api.journal.Journal;
import org.apache.directory.server.core.api.partition.Partition;
import org.apache.directory.server.core.api.partition.PartitionNexus;
@@ -60,22 +59,22 @@ import org.apache.directory.shared.ldap.
public class MockDirectoryService implements DirectoryService
{
int count;
-
+
/** The schemaManager */
SchemaManager schemaManager;
-
+
public MockDirectoryService()
{
this( 0 );
}
-
-
+
+
public MockDirectoryService( int count )
{
this.count = count;
}
-
+
public Hashtable<String, Object> getEnvironment()
{
return null;
@@ -105,12 +104,6 @@ public class MockDirectoryService implem
}
- public InterceptorChain getInterceptorChain()
- {
- return null;
- }
-
-
public void addPartition( Partition partition ) throws LdapException
{
}
@@ -338,12 +331,12 @@ public class MockDirectoryService implem
{
}
-
+
public void setChangeLog( ChangeLog changeLog )
{
-
+
}
-
+
public ChangeLog getChangeLog()
{
return null;
@@ -360,7 +353,7 @@ public class MockDirectoryService implem
{
return null;
}
-
+
public Entry newEntry( String ldif, String dn )
{
return null;
@@ -390,12 +383,12 @@ public class MockDirectoryService implem
return null;
}
-
+
public CoreSession getSession( Dn principalDn, byte[] credentials, String saslMechanism, String saslAuthId )
throws LdapException
- {
+ {
return null;
- }
+ }
public CoreSession getAdminSession()
{
@@ -410,19 +403,19 @@ public class MockDirectoryService implem
public void setEventService( EventService eventService )
{
}
-
-
+
+
public boolean isPasswordHidden()
{
return false;
}
-
-
+
+
public void setPasswordHidden( boolean passwordHidden )
{
}
-
+
public int getMaxPDUSize()
{
return Integer.MAX_VALUE;
@@ -434,25 +427,25 @@ public class MockDirectoryService implem
// Do nothing
}
-
+
public Interceptor getInterceptor( String interceptorName )
{
return null;
}
-
-
+
+
public Csn getCSN()
{
return null;
}
-
-
+
+
public int getReplicaId()
{
return 0;
}
-
-
+
+
public void setReplicaId( int replicaId )
{
}
@@ -573,38 +566,38 @@ public class MockDirectoryService implem
}
- @Override
- public List<String> getInterceptors( OperationEnum operation )
- {
- // TODO Auto-generated method stub
- return null;
- }
-
-
- @Override
- public void addFirst( Interceptor interceptor ) throws LdapException
- {
- // TODO Auto-generated method stub
- }
-
-
- @Override
- public void addLast( Interceptor interceptor ) throws LdapException
- {
- // TODO Auto-generated method stub
- }
-
-
- @Override
- public void addAfter( String interceptorName, Interceptor interceptor )
- {
- // TODO Auto-generated method stub
- }
-
-
- @Override
- public void remove( String interceptorName )
- {
- // TODO Auto-generated method stub
- }
+ @Override
+ public List<String> getInterceptors( OperationEnum operation )
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+ @Override
+ public void addFirst( Interceptor interceptor ) throws LdapException
+ {
+ // TODO Auto-generated method stub
+ }
+
+
+ @Override
+ public void addLast( Interceptor interceptor ) throws LdapException
+ {
+ // TODO Auto-generated method stub
+ }
+
+
+ @Override
+ public void addAfter( String interceptorName, Interceptor interceptor )
+ {
+ // TODO Auto-generated method stub
+ }
+
+
+ @Override
+ public void remove( String interceptorName )
+ {
+ // TODO Auto-generated method stub
+ }
}
Modified: directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockInterceptor.java (original)
+++ directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/MockInterceptor.java Fri Nov 11 09:57:30 2011
@@ -24,7 +24,6 @@ import java.util.List;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -202,11 +201,11 @@ public class MockInterceptor extends Bas
/**
* {@inheritDoc}
*/
- public EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
interceptors.add( this );
- return next.search( searchContext );
+ return next( searchContext );
}
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Fri Nov 11 09:57:30 2011
@@ -66,7 +66,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.event.EventService;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.InterceptorChain;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.api.interceptor.context.EntryOperationContext;
@@ -144,7 +143,7 @@ public class DefaultDirectoryService imp
/** A reference on the SchemaManager */
private SchemaManager schemaManager;
-
+
/** The LDAP Codec Service */
private LdapApiService ldapCodecService = LdapApiServiceFactory.getSingleton();
@@ -154,9 +153,6 @@ public class DefaultDirectoryService imp
/** whether or not server is started for the first time */
private boolean firstStart;
- /** The interceptor (or interceptor chain) for this service */
- private InterceptorChain interceptorChain;
-
/** whether or not this instance has been shutdown */
private boolean started;
@@ -192,7 +188,7 @@ public class DefaultDirectoryService imp
/** remove me after implementation is completed */
private static final String PARTIAL_IMPL_WARNING =
- "WARNING: the changelog is only partially operational and will revert\n" +
+ "WARNING: the changelog is only partially operational and will revert\n" +
"state without consideration of who made the original change. All reverting " +
"changes are made by the admin user.\n Furthermore the used controls are not at " +
"all taken into account";
@@ -245,14 +241,14 @@ public class DefaultDirectoryService imp
/** The list of declared interceptors */
private List<Interceptor> interceptors;
private Map<String, Interceptor> interceptorNames;
-
+
/** A lock to protect the interceptors List */
private ReadWriteLock interceptorsLock = new ReentrantReadWriteLock();
-
+
/** The read and write locks */
private Lock readLock = interceptorsLock.readLock();
private Lock writeLock = interceptorsLock.writeLock();
-
+
/** A map associating a list of interceptor to each operation */
private Map<OperationEnum, List<String>> operationInterceptors;
@@ -296,7 +292,7 @@ public class DefaultDirectoryService imp
/** The Dn factory */
private DnFactory dnFactory;
-
+
/** The Subentry cache */
SubentryCache subentryCache = new SubentryCache();
@@ -479,14 +475,14 @@ public class DefaultDirectoryService imp
public List<Interceptor> getInterceptors()
{
List<Interceptor> cloned = new ArrayList<Interceptor>();
-
+
try
{
readLock.lock();
-
- cloned.addAll( interceptors );
-
- return cloned;
+
+ cloned.addAll( interceptors );
+
+ return cloned;
}
finally
{
@@ -503,13 +499,13 @@ public class DefaultDirectoryService imp
public List<String> getInterceptors( OperationEnum operation )
{
List<String> cloned = new ArrayList<String>();
-
+
try
{
- readLock.lock();
- cloned.addAll( operationInterceptors.get( operation ) );
-
- return cloned;
+ readLock.lock();
+ cloned.addAll( operationInterceptors.get( operation ) );
+
+ return cloned;
}
finally
{
@@ -517,36 +513,36 @@ public class DefaultDirectoryService imp
}
}
-
-
+
+
/**
* Compute the list of to call for each operation
*/
private void initOperationsList()
{
- try
- {
- writeLock.lock();
- operationInterceptors = new ConcurrentHashMap<OperationEnum, List<String>>();
-
- for ( OperationEnum operation : OperationEnum.getOperations() )
- {
- List<String> operationList = new ArrayList<String>();
-
- for ( Interceptor interceptor : interceptors )
- {
- gatherInterceptors( interceptor, interceptor.getClass(), operation, operationList );
- }
- operationInterceptors.put( operation, operationList );
- }
- }
- finally
- {
- writeLock.unlock();
- }
+ try
+ {
+ writeLock.lock();
+ operationInterceptors = new ConcurrentHashMap<OperationEnum, List<String>>();
+
+ for ( OperationEnum operation : OperationEnum.getOperations() )
+ {
+ List<String> operationList = new ArrayList<String>();
+
+ for ( Interceptor interceptor : interceptors )
+ {
+ gatherInterceptors( interceptor, interceptor.getClass(), operation, operationList );
+ }
+ operationInterceptors.put( operation, operationList );
+ }
+ }
+ finally
+ {
+ writeLock.unlock();
+ }
}
-
-
+
+
/**
* Recursively checks if the given interceptor can be added to the list of interceptors for a given
* operation and adds to the list of interceptors if it implements the respective operation
@@ -562,20 +558,20 @@ public class DefaultDirectoryService imp
{
return;
}
-
+
Method[] methods = interceptorClz.getDeclaredMethods();
-
+
for ( Method method : methods )
{
Class<?>[] param = method.getParameterTypes();
boolean hasCorrestSig = false;
-
+
// check for the correct signature
if( ( param == null ) || ( param.length > 1 ) || ( param.length == 0 ))
{
continue;
}
-
+
if ( OperationContext.class.isAssignableFrom( param[0] ) )
{
hasCorrestSig = true;
@@ -591,101 +587,101 @@ public class DefaultDirectoryService imp
break;
}
}
-
+
gatherInterceptors( interceptor, interceptorClz.getSuperclass(), operation, selectedInterceptorList );
}
-
-
+
+
/**
* Add an interceptor to the list of interceptors to call for each operation
- * @throws LdapException
+ * @throws LdapException
*/
private void addInterceptor( Interceptor interceptor, int position ) throws LdapException
{
- // First, init the interceptor
- interceptor.init( this );
-
- try
- {
- writeLock.lock();
-
- for ( OperationEnum operation : OperationEnum.getOperations() )
- {
- List<String> operationList = operationInterceptors.get( operation );
-
- Method[] methods = interceptor.getClass().getDeclaredMethods();
-
- for ( Method method : methods )
- {
- if ( method.getName().equals( operation.getMethodName() ) )
- {
- if ( position == -1 )
- {
- operationList.add( interceptor.getName() );
- }
- else
- {
- operationList.add( position, interceptor.getName() );
- }
-
- break;
- }
- }
- }
-
- interceptorNames.put( interceptor.getName(), interceptor );
-
- if ( position == -1 )
- {
- interceptors.add( interceptor );
- }
- else
- {
- interceptors.add( position, interceptor );
- }
- }
- finally
- {
- writeLock.unlock();
- }
+ // First, init the interceptor
+ interceptor.init( this );
+
+ try
+ {
+ writeLock.lock();
+
+ for ( OperationEnum operation : OperationEnum.getOperations() )
+ {
+ List<String> operationList = operationInterceptors.get( operation );
+
+ Method[] methods = interceptor.getClass().getDeclaredMethods();
+
+ for ( Method method : methods )
+ {
+ if ( method.getName().equals( operation.getMethodName() ) )
+ {
+ if ( position == -1 )
+ {
+ operationList.add( interceptor.getName() );
+ }
+ else
+ {
+ operationList.add( position, interceptor.getName() );
+ }
+
+ break;
+ }
+ }
+ }
+
+ interceptorNames.put( interceptor.getName(), interceptor );
+
+ if ( position == -1 )
+ {
+ interceptors.add( interceptor );
+ }
+ else
+ {
+ interceptors.add( position, interceptor );
+ }
+ }
+ finally
+ {
+ writeLock.unlock();
+ }
}
-
+
/**
* Remove an interceptor to the list of interceptors to call for each operation
*/
private void removeOperationsList( String interceptorName )
{
- Interceptor interceptor = interceptorNames.get( interceptorName );
-
- try
- {
- writeLock.lock();
-
- for ( OperationEnum operation : OperationEnum.getOperations() )
- {
- List<String> operationList = operationInterceptors.get( operation );
-
- Method[] methods = interceptor.getClass().getDeclaredMethods();
-
- for ( Method method : methods )
- {
- if ( method.getName().equals( operation.getMethodName() ) )
- {
- operationList.remove( interceptor.getName() );
-
- break;
- }
- }
- }
-
- interceptorNames.remove( interceptorName );
- interceptors.remove( interceptor );
- }
- finally
- {
- writeLock.unlock();
- }
+ Interceptor interceptor = interceptorNames.get( interceptorName );
+
+ try
+ {
+ writeLock.lock();
+
+ for ( OperationEnum operation : OperationEnum.getOperations() )
+ {
+ List<String> operationList = operationInterceptors.get( operation );
+
+ Method[] methods = interceptor.getClass().getDeclaredMethods();
+
+ for ( Method method : methods )
+ {
+ if ( method.getName().equals( operation.getMethodName() ) )
+ {
+ operationList.remove( interceptor.getName() );
+
+ break;
+ }
+ }
+ }
+
+ interceptorNames.remove( interceptorName );
+ interceptors.remove( interceptor );
+ }
+ finally
+ {
+ writeLock.unlock();
+ }
}
@@ -706,7 +702,7 @@ public class DefaultDirectoryService imp
LOG.warn( "Encountered duplicate definitions for {} interceptor", interceptor.getName() );
continue;
}
-
+
interceptorNames.put( interceptor.getName(), interceptor );
}
@@ -714,7 +710,19 @@ public class DefaultDirectoryService imp
this.interceptorNames = interceptorNames;
// Now update the Map that connect each operation with the list of interceptors.
- initOperationsList();
+ initOperationsList();
+ }
+
+
+ /**
+ * Initialize the interceptors
+ */
+ private void initInterceptors() throws LdapException
+ {
+ for ( Interceptor interceptor : interceptors )
+ {
+ interceptor.init( this );
+ }
}
@@ -728,7 +736,7 @@ public class DefaultDirectoryService imp
{
List<LdifEntry> cloned = new ArrayList<LdifEntry>();
cloned.addAll( testEntries );
-
+
return cloned;
}
@@ -763,7 +771,7 @@ public class DefaultDirectoryService imp
public void setInstanceLayout( InstanceLayout instanceLayout ) throws IOException
{
this.instanceLayout = instanceLayout;
-
+
// Create the directories if they are missing
if ( !instanceLayout.getInstanceDirectory().exists() )
{
@@ -780,7 +788,7 @@ public class DefaultDirectoryService imp
throw new IOException(I18n.err( I18n.ERR_112_COULD_NOT_CREATE_DIRECORY, instanceLayout.getLogDirectory() ) );
}
}
-
+
if ( !instanceLayout.getRunDirectory().exists() )
{
if ( !instanceLayout.getRunDirectory().mkdirs() )
@@ -788,7 +796,7 @@ public class DefaultDirectoryService imp
throw new IOException(I18n.err( I18n.ERR_112_COULD_NOT_CREATE_DIRECORY, instanceLayout.getRunDirectory() ) );
}
}
-
+
if ( !instanceLayout.getPartitionsDirectory().exists() )
{
if ( !instanceLayout.getPartitionsDirectory().mkdirs() )
@@ -796,7 +804,7 @@ public class DefaultDirectoryService imp
throw new IOException(I18n.err( I18n.ERR_112_COULD_NOT_CREATE_DIRECORY, instanceLayout.getPartitionsDirectory() ) );
}
}
-
+
if ( !instanceLayout.getConfDirectory().exists() )
{
if ( !instanceLayout.getConfDirectory().mkdirs() )
@@ -915,7 +923,7 @@ public class DefaultDirectoryService imp
// We've got an exception, we cannot add the partition to the partitions
throw le;
}
-
+
// Now, add the partition to the set of managed partitions
partitions.add( partition );
}
@@ -937,7 +945,7 @@ public class DefaultDirectoryService imp
// Bad ! We can't go any further
throw le;
}
-
+
// And update the set of managed partitions
partitions.remove( partition );
}
@@ -1002,7 +1010,7 @@ public class DefaultDirectoryService imp
bindContext.setCredentials( credentials );
bindContext.setDn( principalDn );
bindContext.setInterceptors( getInterceptors( OperationEnum.BIND ) );
-
+
operationManager.bind( bindContext );
return bindContext.getSession();
@@ -1011,7 +1019,7 @@ public class DefaultDirectoryService imp
public CoreSession getSession( Dn principalDn, byte[] credentials, String saslMechanism, String saslAuthId )
throws Exception
- {
+ {
if ( ! started )
{
throw new IllegalStateException( "Service has not started." );
@@ -1026,7 +1034,7 @@ public class DefaultDirectoryService imp
operationManager.bind( bindContext );
return bindContext.getSession();
- }
+ }
public long revert() throws LdapException
@@ -1254,13 +1262,13 @@ public class DefaultDirectoryService imp
// load the last stored valid CSN value
LookupOperationContext loc = new LookupOperationContext( getAdminSession() );
loc.setDn( systemPartition.getSuffixDn() );
-
+
// get back all the attributes
loc.setAttrsId( SchemaConstants.ALL_ATTRIBUTES_ARRAY );
Entry entry = systemPartition.lookup( loc );
Attribute cntextCsnAt = entry.get( SchemaConstants.CONTEXT_CSN_AT );
-
+
if ( cntextCsnAt != null )
{
// this is a multivalued attribute but current syncrepl provider implementation stores only ONE value at ou=system
@@ -1339,9 +1347,8 @@ public class DefaultDirectoryService imp
// --------------------------------------------------------------------
// And shutdown the server
// --------------------------------------------------------------------
- interceptorChain.destroy();
cacheService.destroy();
-
+
if ( lockFile != null )
{
try
@@ -1397,7 +1404,7 @@ public class DefaultDirectoryService imp
this.schemaManager = schemaManager;
}
-
+
public LdapApiService getLdapCodecService()
{
return ldapCodecService;
@@ -1428,12 +1435,6 @@ public class DefaultDirectoryService imp
}
- public InterceptorChain getInterceptorChain()
- {
- return interceptorChain;
- }
-
-
public boolean isFirstStart()
{
return firstStart;
@@ -1478,10 +1479,10 @@ public class DefaultDirectoryService imp
Entry serverEntry = new DefaultEntry( schemaManager, adminDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
- SchemaConstants.TOP_OC,
- SchemaConstants.PERSON_OC,
- SchemaConstants.ORGANIZATIONAL_PERSON_OC,
- SchemaConstants.INET_ORG_PERSON_OC );
+ SchemaConstants.TOP_OC,
+ SchemaConstants.PERSON_OC,
+ SchemaConstants.ORGANIZATIONAL_PERSON_OC,
+ SchemaConstants.INET_ORG_PERSON_OC );
serverEntry.put( SchemaConstants.UID_AT, PartitionNexus.ADMIN_UID );
serverEntry.put( SchemaConstants.USER_PASSWORD_AT, PartitionNexus.ADMIN_PASSWORD_BYTES );
@@ -1511,8 +1512,8 @@ public class DefaultDirectoryService imp
Entry serverEntry = new DefaultEntry( schemaManager, userDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
- SchemaConstants.TOP_OC,
- SchemaConstants.ORGANIZATIONAL_UNIT_OC );
+ SchemaConstants.TOP_OC,
+ SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "users" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
@@ -1536,8 +1537,8 @@ public class DefaultDirectoryService imp
Entry serverEntry = new DefaultEntry( schemaManager, groupDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
- SchemaConstants.TOP_OC,
- SchemaConstants.ORGANIZATIONAL_UNIT_OC );
+ SchemaConstants.TOP_OC,
+ SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "groups" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
@@ -1561,8 +1562,8 @@ public class DefaultDirectoryService imp
Entry serverEntry = new DefaultEntry( schemaManager, name );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
- SchemaConstants.TOP_OC,
- SchemaConstants.GROUP_OF_UNIQUE_NAMES_OC );
+ SchemaConstants.TOP_OC,
+ SchemaConstants.GROUP_OF_UNIQUE_NAMES_OC );
serverEntry.put( SchemaConstants.CN_AT, "Administrators" );
serverEntry.put( SchemaConstants.UNIQUE_MEMBER_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
@@ -1745,12 +1746,12 @@ public class DefaultDirectoryService imp
}
}
}
-
-
+
+
private void initializeSystemPartition() throws Exception
{
Partition system = getSystemPartition();
-
+
// Add root context entry for system partition
Dn systemSuffixDn = getDnFactory().create( ServerDNConstants.SYSTEM_DN );
CoreSession adminSession = getAdminSession();
@@ -1758,11 +1759,11 @@ public class DefaultDirectoryService imp
if ( !system.hasEntry( new EntryOperationContext( adminSession, systemSuffixDn ) ) )
{
Entry systemEntry = new DefaultEntry( schemaManager, systemSuffixDn );
-
+
// Add the ObjectClasses
systemEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC,
SchemaConstants.ORGANIZATIONAL_UNIT_OC, SchemaConstants.EXTENSIBLE_OBJECT_OC );
-
+
// Add some operational attributes
systemEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN );
systemEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
@@ -1770,7 +1771,7 @@ public class DefaultDirectoryService imp
systemEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
systemEntry.put( DnUtils.getRdnAttributeType( ServerDNConstants.SYSTEM_DN ), DnUtils
.getRdnValue( ServerDNConstants.SYSTEM_DN ) );
-
+
AddOperationContext addOperationContext = new AddOperationContext( adminSession, systemEntry );
system.add( addOperationContext );
}
@@ -1788,7 +1789,7 @@ public class DefaultDirectoryService imp
{
LOG.debug( "---> Initializing the DefaultDirectoryService " );
}
-
+
cacheService = new CacheService();
cacheService.initialize( this );
@@ -1799,7 +1800,7 @@ public class DefaultDirectoryService imp
triggerExecutionAPCache = new DnNode<TriggerExecutionAdministrativePoint>();
dnFactory = new DefaultDnFactory( schemaManager, cacheService.getCache( "dnCache" ) );
-
+
// triggers partition to load schema fully from schema partition
schemaPartition.initialize();
partitions.add( schemaPartition );
@@ -1814,15 +1815,15 @@ public class DefaultDirectoryService imp
partitionNexus.initialize( );
initializeSystemPartition();
-
+
// --------------------------------------------------------------------
// Create all the bootstrap entries before initializing chain
// --------------------------------------------------------------------
firstStart = createBootstrapEntries();
-
- interceptorChain = new InterceptorChain();
- interceptorChain.init( this );
+
+ // Initialize the interceptors
+ initInterceptors();
// --------------------------------------------------------------------
// Initialize the changeLog if it's enabled
@@ -2011,19 +2012,19 @@ public class DefaultDirectoryService imp
*/
public Interceptor getInterceptor( String interceptorName )
{
- try
- {
- readLock.lock();
-
- for ( Interceptor interceptor:interceptors )
- {
- if ( interceptor.getName().equalsIgnoreCase( interceptorName ) )
- {
- return interceptor;
- }
- }
-
- return null;
+ try
+ {
+ readLock.lock();
+
+ for ( Interceptor interceptor:interceptors )
+ {
+ if ( interceptor.getName().equalsIgnoreCase( interceptorName ) )
+ {
+ return interceptor;
+ }
+ }
+
+ return null;
}
finally
{
@@ -2034,39 +2035,39 @@ public class DefaultDirectoryService imp
/**
* {@inheritDoc}
- * @throws LdapException
+ * @throws LdapException
*/
- public void addFirst( Interceptor interceptor ) throws LdapException
- {
- addInterceptor( interceptor, 0 );
- }
+ public void addFirst( Interceptor interceptor ) throws LdapException
+ {
+ addInterceptor( interceptor, 0 );
+ }
/**
* {@inheritDoc}
- * @throws LdapException
+ * @throws LdapException
*/
- public void addLast( Interceptor interceptor ) throws LdapException
- {
- addInterceptor( interceptor, -1 );
- }
+ public void addLast( Interceptor interceptor ) throws LdapException
+ {
+ addInterceptor( interceptor, -1 );
+ }
/**
* {@inheritDoc}
*/
- public void addAfter( String interceptorName, Interceptor interceptor )
- {
- }
+ public void addAfter( String interceptorName, Interceptor interceptor )
+ {
+ }
/**
* {@inheritDoc}
*/
- public void remove( String interceptorName )
- {
- removeOperationsList( interceptorName );
- }
+ public void remove( String interceptorName )
+ {
+ removeOperationsList( interceptorName );
+ }
/**
@@ -2224,24 +2225,24 @@ public class DefaultDirectoryService imp
{
return triggerExecutionAPCache;
}
-
-
+
+
/**
* {@inheritDoc}
*/
public boolean isPwdPolicyEnabled()
{
AuthenticationInterceptor authenticationInterceptor = (AuthenticationInterceptor)getInterceptor( AuthenticationInterceptor.class.getSimpleName() );
-
+
if ( authenticationInterceptor == null )
{
return false;
}
PpolicyConfigContainer pwdPolicyContainer = authenticationInterceptor.getPwdPolicyContainer();
-
- return ( ( pwdPolicyContainer != null )
- && ( ( pwdPolicyContainer.getDefaultPolicy() != null )
+
+ return ( ( pwdPolicyContainer != null )
+ && ( ( pwdPolicyContainer.getDefaultPolicy() != null )
|| ( pwdPolicyContainer.hasCustomConfigs() ) ) );
}
@@ -2262,8 +2263,8 @@ public class DefaultDirectoryService imp
{
return subentryCache;
}
-
-
+
+
/**
* {@inheritDoc}
*/
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultOperationManager.java Fri Nov 11 09:57:30 2011
@@ -29,7 +29,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.ReferralManager;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.InterceptorChain;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -1111,9 +1110,10 @@ public class DefaultOperationManager imp
// Unlock the ReferralManager
directoryService.getReferralManager().unlock();
- // Call the Add method
- InterceptorChain interceptorChain = directoryService.getInterceptorChain();
- return interceptorChain.search( searchContext );
+ // Call the Search method
+ Interceptor head = directoryService.getInterceptor( searchContext.getNextInterceptor() );
+
+ return head.search( searchContext );
}
finally
{
Modified: directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java Fri Nov 11 09:57:30 2011
@@ -51,7 +51,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -782,9 +781,8 @@ public class AuthenticationInterceptor e
}
- public EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext )
- throws LdapException
- {
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
+ {
if ( IS_DEBUG )
{
LOG.debug( "Operation Context: {}", searchContext );
@@ -793,8 +791,8 @@ public class AuthenticationInterceptor e
checkAuthenticated( searchContext );
checkPwdReset( searchContext );
- return next.search( searchContext );
- }
+ return next( searchContext );
+ }
/**
Modified: directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java Fri Nov 11 09:57:30 2011
@@ -39,7 +39,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilter;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
@@ -1233,11 +1232,11 @@ public class AciAuthorizationInterceptor
}
- public EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
LdapPrincipal user = searchContext.getSession().getEffectivePrincipal();
Dn principalDn = user.getDn();
- EntryFilteringCursor cursor = next.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
boolean isSubschemaSubentryLookup = subschemaSubentryDn.equals( searchContext.getDn().getNormName() );
SearchControls searchCtls = searchContext.getSearchControls();
Modified: directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/DefaultAuthorizationInterceptor.java Fri Nov 11 09:57:30 2011
@@ -34,7 +34,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
import org.apache.directory.server.core.api.interceptor.context.ListOperationContext;
import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
@@ -447,9 +446,9 @@ public class DefaultAuthorizationInterce
}
- public EntryFilteringCursor search( NextInterceptor nextInterceptor, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
- EntryFilteringCursor cursor = nextInterceptor.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
if ( searchContext.getSession().getDirectoryService().isAccessControlEnabled() )
{
Modified: directory/apacheds/trunk/interceptors/collective/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/collective/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/collective/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/collective/src/main/java/org/apache/directory/server/core/collective/CollectiveAttributeInterceptor.java Fri Nov 11 09:57:30 2011
@@ -30,7 +30,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilter;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.ListOperationContext;
import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
@@ -165,9 +164,9 @@ public class CollectiveAttributeIntercep
/**
* {@inheritDoc}
*/
- public EntryFilteringCursor search( NextInterceptor nextInterceptor, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
- EntryFilteringCursor cursor = nextInterceptor.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
cursor.addEntryFilter( SEARCH_FILTER );
Modified: directory/apacheds/trunk/interceptors/logger/src/main/java/org/apache/directory/server/core/logger/TimerInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/logger/src/main/java/org/apache/directory/server/core/logger/TimerInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/logger/src/main/java/org/apache/directory/server/core/logger/TimerInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/logger/src/main/java/org/apache/directory/server/core/logger/TimerInterceptor.java Fri Nov 11 09:57:30 2011
@@ -25,7 +25,6 @@ import java.util.concurrent.atomic.Atomi
import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -171,7 +170,7 @@ public class TimerInterceptor extends Ba
/**
* {@inheritDoc}
*/
- public void bind( NextInterceptor next, BindOperationContext bindContext ) throws LdapException
+ public void bind( BindOperationContext bindContext ) throws LdapException
{
long t0 = System.nanoTime();
next( bindContext );
@@ -514,10 +513,10 @@ public class TimerInterceptor extends Ba
/**
* {@inheritDoc}
*/
- public EntryFilteringCursor search( NextInterceptor next, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
long t0 = System.nanoTime();
- EntryFilteringCursor cursor = next.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
long delta = System.nanoTime() - t0;
if ( IS_DEBUG_STATS )
Modified: directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java Fri Nov 11 09:57:30 2011
@@ -26,7 +26,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.BaseEntryFilteringCursor;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
@@ -245,7 +244,7 @@ public class NormalizationInterceptor ex
/**
* {@inheritDoc}
*/
- public EntryFilteringCursor search( NextInterceptor nextInterceptor, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
Dn dn = searchContext.getDn();
@@ -275,7 +274,7 @@ public class NormalizationInterceptor ex
searchContext.setFilter( filter );
// TODO Normalize the returned Attributes, storing the UP attributes to format the returned values.
- return nextInterceptor.search( searchContext );
+ return next( searchContext );
}
}
Modified: directory/apacheds/trunk/interceptors/operational/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/operational/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/operational/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/operational/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeInterceptor.java Fri Nov 11 09:57:30 2011
@@ -34,7 +34,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
import org.apache.directory.server.core.api.interceptor.Interceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.ListOperationContext;
import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
@@ -415,9 +414,9 @@ public class OperationalAttributeInterce
}
- public EntryFilteringCursor search( NextInterceptor nextInterceptor, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
- EntryFilteringCursor cursor = nextInterceptor.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
if ( searchContext.isAllOperationalAttributes()
|| ( searchContext.getReturningAttributes() != null && !searchContext.getReturningAttributes().isEmpty() ) )
@@ -431,6 +430,7 @@ public class OperationalAttributeInterce
}
cursor.addEntryFilter( SEARCH_FILTER );
+
return cursor;
}
Modified: directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/SchemaInterceptor.java Fri Nov 11 09:57:30 2011
@@ -39,7 +39,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilter;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
import org.apache.directory.server.core.api.interceptor.context.ListOperationContext;
@@ -630,7 +629,7 @@ public class SchemaInterceptor extends B
}
- public EntryFilteringCursor search( NextInterceptor nextInterceptor, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
Dn base = searchContext.getDn();
SearchControls searchCtls = searchContext.getSearchControls();
@@ -652,7 +651,7 @@ public class SchemaInterceptor extends B
// Deal with the normal case : searching for a normal value (not subSchemaSubEntry)
if ( !subschemaSubentryDnNorm.equals( baseNormForm ) )
{
- EntryFilteringCursor cursor = nextInterceptor.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
if ( searchCtls.getReturningAttributes() != null )
{
Modified: directory/apacheds/trunk/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java?rev=1200792&r1=1200791&r2=1200792&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java Fri Nov 11 09:57:30 2011
@@ -36,7 +36,6 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilter;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
-import org.apache.directory.server.core.api.interceptor.NextInterceptor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
import org.apache.directory.server.core.api.interceptor.context.ListOperationContext;
@@ -1518,9 +1517,9 @@ public class SubentryInterceptor extends
/**
* {@inheritDoc}
*/
- public EntryFilteringCursor search( NextInterceptor nextInterceptor, SearchOperationContext searchContext ) throws LdapException
+ public EntryFilteringCursor search( SearchOperationContext searchContext ) throws LdapException
{
- EntryFilteringCursor cursor = nextInterceptor.search( searchContext );
+ EntryFilteringCursor cursor = next( searchContext );
// object scope searches by default return subentries
if ( searchContext.getScope() == SearchScope.OBJECT )