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 2012/11/27 10:51:37 UTC
svn commit: r1414045 -
/directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java
Author: elecharny
Date: Tue Nov 27 09:51:36 2012
New Revision: 1414045
URL: http://svn.apache.org/viewvc?rev=1414045&view=rev
Log:
Some reorganization to avoid useless operations if not necessary
Modified:
directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java
Modified: directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java?rev=1414045&r1=1414044&r2=1414045&view=diff
==============================================================================
--- directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java (original)
+++ directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java Tue Nov 27 09:51:36 2012
@@ -51,8 +51,6 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.model.entry.Entry;
import org.apache.directory.shared.ldap.model.exception.LdapException;
import org.apache.directory.shared.ldap.model.name.Dn;
-import org.apache.directory.shared.ldap.model.schema.normalizers.ConcreteNameComponentNormalizer;
-import org.apache.directory.shared.ldap.model.schema.normalizers.NameComponentNormalizer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -90,7 +88,6 @@ public class EventInterceptor extends Ba
LOG.info( "Initializing ..." );
super.init( directoryService );
- NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( schemaManager );
evaluator = new ExpressionEvaluator( schemaManager );
executor = new ThreadPoolExecutor( 1, 10, 1000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>( 100 ) );
@@ -163,7 +160,7 @@ public class EventInterceptor extends Ba
case MOVE:
if ( listener.isSynchronous() )
{
- listener.entryMoved( ( MoveOperationContext ) opContext );
+ listener.entryMoved( ( MoveOperationContext ) opContext );
}
else
{
@@ -195,6 +192,22 @@ public class EventInterceptor extends Ba
}
break;
+
+ case MOVE_AND_RENAME:
+ if ( listener.isSynchronous() )
+ {
+ listener.entryMovedAndRenamed( ( MoveAndRenameOperationContext ) opContext );
+ }
+ else
+ executor.execute( new Runnable()
+ {
+ public void run()
+ {
+ listener.entryMovedAndRenamed( ( MoveAndRenameOperationContext ) opContext );
+ }
+ } );
+
+ break;
}
}
@@ -228,9 +241,10 @@ public class EventInterceptor extends Ba
*/
public void delete( final DeleteOperationContext deleteContext ) throws LdapException
{
- List<RegistrationEntry> selecting = getSelectingRegistrations( deleteContext.getDn(), deleteContext.getEntry() );
next( deleteContext );
+ List<RegistrationEntry> selecting = getSelectingRegistrations( deleteContext.getDn(), deleteContext.getEntry() );
+
if ( selecting.isEmpty() )
{
return;
@@ -253,14 +267,14 @@ public class EventInterceptor extends Ba
{
Entry oriEntry = modifyContext.getEntry();
- List<RegistrationEntry> selecting = getSelectingRegistrations( modifyContext.getDn(), oriEntry );
-
// modification was already done when this flag is turned on, move to sending the events
- if( !modifyContext.isPushToEvtIntrcptor() )
+ if( !modifyContext.isPushToEvtInterceptor() )
{
next( modifyContext );
}
+ List<RegistrationEntry> selecting = getSelectingRegistrations( modifyContext.getDn(), oriEntry );
+
if ( selecting.isEmpty() )
{
return;
@@ -290,10 +304,11 @@ public class EventInterceptor extends Ba
public void move( MoveOperationContext moveContext ) throws LdapException
{
Entry oriEntry = moveContext.getOriginalEntry();
- List<RegistrationEntry> selecting = getSelectingRegistrations( moveContext.getDn(), oriEntry );
next( moveContext );
+ List<RegistrationEntry> selecting = getSelectingRegistrations( moveContext.getDn(), oriEntry );
+
if ( selecting.isEmpty() )
{
return;
@@ -315,9 +330,10 @@ public class EventInterceptor extends Ba
public void moveAndRename( final MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException
{
Entry oriEntry = moveAndRenameContext.getOriginalEntry();
- List<RegistrationEntry> selecting = getSelectingRegistrations( moveAndRenameContext.getDn(), oriEntry );
next( moveAndRenameContext );
+ List<RegistrationEntry> selecting = getSelectingRegistrations( moveAndRenameContext.getDn(), oriEntry );
+
if ( selecting.isEmpty() )
{
return;
@@ -327,13 +343,7 @@ public class EventInterceptor extends Ba
{
if ( EventType.isMoveAndRename( registration.getCriteria().getEventMask() ) )
{
- executor.execute( new Runnable()
- {
- public void run()
- {
- registration.getListener().entryMovedAndRenamed( moveAndRenameContext );
- }
- } );
+ fire( moveAndRenameContext, EventType.MOVE_AND_RENAME, registration.getListener() );
}
}
}
@@ -345,16 +355,17 @@ public class EventInterceptor extends Ba
public void rename( RenameOperationContext renameContext ) throws LdapException
{
Entry oriEntry = ( ( ClonedServerEntry ) renameContext.getEntry() ).getOriginalEntry();
- List<RegistrationEntry> selecting = getSelectingRegistrations( renameContext.getDn(), oriEntry );
next( renameContext );
+ List<RegistrationEntry> selecting = getSelectingRegistrations( renameContext.getDn(), oriEntry );
+
if ( selecting.isEmpty() )
{
return;
}
- // Get the modifed entry
+ // Get the modified entry
CoreSession session = renameContext.getSession();
LookupOperationContext lookupContext = new LookupOperationContext( session, renameContext.getNewDn() );
lookupContext.setAttrsId( SchemaConstants.ALL_ATTRIBUTES_ARRAY );
@@ -378,14 +389,16 @@ public class EventInterceptor extends Ba
*/
private List<RegistrationEntry> getSelectingRegistrations( Dn name, Entry entry ) throws LdapException
{
- if ( directoryService.getEventService().getRegistrationEntries().isEmpty() )
+ List<RegistrationEntry> registrations = directoryService.getEventService().getRegistrationEntries();
+
+ if ( registrations.isEmpty() )
{
return Collections.emptyList();
}
List<RegistrationEntry> selecting = new ArrayList<RegistrationEntry>();
- for ( RegistrationEntry registration : directoryService.getEventService().getRegistrationEntries() )
+ for ( RegistrationEntry registration : registrations )
{
NotificationCriteria criteria = registration.getCriteria();