You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2006/09/05 21:35:35 UTC
svn commit: r440458 [1/2] - in /directory/trunks:
apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/
apacheds/core/src/main/java/org/apache/directory/server/core/subtree/
apacheds/core/src/main/java/org/apache/directory/server/c...
Author: ersiner
Date: Tue Sep 5 12:35:34 2006
New Revision: 440458
URL: http://svn.apache.org/viewvc?view=rev&rev=440458
Log:
Update Trigger code in order to complete Basic Trigger Execution Scheme.
Renamed some Trigger related operational attributes.
Removed BEFORE and INSTEAD OF Triggers.
Removed non-change-inducing operations support.
Added/Updated utilities in TriggerUtils.
Updated parameter injection mechanism. Eats more memory now. (Can be refactored.)
Updated all related tests.
And also upgraded deamon dependency version for some apacheds projects.
Added:
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java
- copied, changed from r440188, directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModDNStoredProcedureParameterInjector.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageSchemeOption.java
- copied, changed from r440188, directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageOption.java
Removed:
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModDNStoredProcedureParameterInjector.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageOption.java
Modified:
directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/AbstractTriggerServiceTest.java
directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/DefaulTriggerServiceTest.java
directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/SubentryServiceForTriggersTest.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyStoredProcedureParameterInjector.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java
directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java
directory/trunks/apacheds/core/src/main/schema/apache.schema
directory/trunks/apacheds/server-sar/pom.xml
directory/trunks/apacheds/server-tools/pom.xml
directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/AbstractServerTriggerServiceTest.java
directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/DefaultServerTriggerServiceTest.java
directory/trunks/shared/ldap/src/main/antlr/TriggerSpecification.g
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/ActionTime.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/LdapOperation.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureParameter.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/TriggerSpecification.java
directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/TriggerUtils.java
directory/trunks/shared/ldap/src/test/java/org/apache/directory/shared/ldap/trigger/TriggerSpecificationParserTest.java
Modified: directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/AbstractTriggerServiceTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/AbstractTriggerServiceTest.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/AbstractTriggerServiceTest.java (original)
+++ directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/AbstractTriggerServiceTest.java Tue Sep 5 12:35:34 2006
@@ -170,9 +170,9 @@
subentry.put( objectClass );
objectClass.add( "top" );
objectClass.add( "subentry" );
- objectClass.add( "triggerSubentry" );
+ objectClass.add( "triggerExecutionSubentry" );
subentry.put( "subtreeSpecification", subtree );
- subentry.put( "prescriptiveTrigger", triggerSpec );
+ subentry.put( "prescriptiveTriggerSpecification", triggerSpec );
adminCtx.createSubcontext( "cn=" + cn, subentry );
}
Modified: directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/DefaulTriggerServiceTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/DefaulTriggerServiceTest.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/DefaulTriggerServiceTest.java (original)
+++ directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/DefaulTriggerServiceTest.java Tue Sep 5 12:35:34 2006
@@ -54,7 +54,7 @@
// Create the Triger Specification within a Trigger Subentry.
createTriggerSubentry( "triggerSubentry1",
- "AFTER delete CALL \"" + BackupUtilities.class.getName() + ".backupDeleted\" ( $rootDSE, $name, $operationPrincipal, $deletedEntry )" );
+ "AFTER Delete CALL \"" + BackupUtilities.class.getName() + ".backupDeleted\" ( $ldapContext \"\", $name, $operationPrincipal, $deletedEntry )" );
// Create a test entry which is selected by the Trigger Subentry.
Attributes testEntry = new BasicAttributes( "ou", "testou", true );
@@ -75,7 +75,7 @@
assertNotNull( sysRoot.lookup( "ou=testou,ou=backupContext" ) );
}
- public void testBeforeDeleteLogWarning() throws NamingException
+ /*public void testBeforeDeleteLogWarning() throws NamingException
{
// Load the stored procedure unit which has the stored procedure to be triggered.
JavaStoredProcedureUtils.loadStoredProcedureClass( sysRoot, LoggingUtilities.class );
@@ -98,6 +98,6 @@
// ------------------------------------------
// The trigger should be fired at this point.
// ------------------------------------------
- }
+ }*/
}
Modified: directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/SubentryServiceForTriggersTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/SubentryServiceForTriggersTest.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/SubentryServiceForTriggersTest.java (original)
+++ directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/trigger/SubentryServiceForTriggersTest.java Tue Sep 5 12:35:34 2006
@@ -67,10 +67,10 @@
Attribute objectClass = new LockableAttributeImpl( "objectClass" );
objectClass.add( "top" );
objectClass.add( "subentry" );
- objectClass.add( "triggerSubentry" );
+ objectClass.add( "triggerExecutionSubentry" );
subentry.put( objectClass );
subentry.put( "subtreeSpecification", "{ base \"ou=configuration\" }" );
- subentry.put( "prescriptiveTrigger", "BEFORE bind CALL \"AuthUtilities.beforeBind\"($name)" );
+ subentry.put( "prescriptiveTriggerSpecification", "AFTER Delete CALL \"LogUtils.logDelete\"($name)" );
subentry.put( "cn", "testsubentry" );
return subentry;
}
@@ -81,11 +81,11 @@
Attribute objectClass = new LockableAttributeImpl( "objectClass" );
objectClass.add( "top" );
objectClass.add( "subentry" );
- objectClass.add( "triggerSubentry" );
+ objectClass.add( "triggerExecutionSubentry" );
subentry.put( objectClass );
String spec = "{ base \"ou=configuration\", specificExclusions { chopBefore:\"cn=unmarked\" } }";
subentry.put( "subtreeSpecification", spec );
- subentry.put( "prescriptiveTrigger", "BEFORE bind CALL \"AuthUtilities.beforeBind\"($name)" );
+ subentry.put( "prescriptiveTriggerSpecification", "AFTER Delete CALL \"LogUtils.logDelete\"($name)" );
subentry.put( "cn", "testsubentry" );
return subentry;
}
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java Tue Sep 5 12:35:34 2006
@@ -89,9 +89,9 @@
public static final String COLLECTIVE_INNERAREA = "collectiveAttributeInnerArea";
public static final String COLLECTIVE_ATTRIBUTE_SUBENTRIES = "collectiveAttributeSubentries";
- public static final String TRIGGER_AREA = "triggerSpecificArea";
- public static final String TRIGGER_INNERAREA = "triggerInnerArea";
- public static final String TRIGGER_SUBENTRIES = "triggerSubentries";
+ public static final String TRIGGER_AREA = "triggerExecutionSpecificArea";
+ public static final String TRIGGER_INNERAREA = "triggerExecutionInnerArea";
+ public static final String TRIGGER_SUBENTRIES = "triggerExecutionSubentries";
public static final String[] SUBENTRY_OPATTRS =
{ AC_SUBENTRIES, SCHEMA_SUBENTRY, COLLECTIVE_ATTRIBUTE_SUBENTRIES, TRIGGER_SUBENTRIES };
@@ -199,7 +199,7 @@
types |= Subentry.COLLECTIVE_SUBENTRY;
}
- if ( oc.contains( "triggerSubentry" ) )
+ if ( oc.contains( "triggerExecutionSubentry" ) )
{
types |= Subentry.TRIGGER_SUBENTRY;
}
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java Tue Sep 5 12:35:34 2006
@@ -22,7 +22,6 @@
import java.security.Principal;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -36,6 +35,7 @@
import org.apache.directory.server.core.jndi.ServerLdapContext;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter.Generic_LDAP_CONTEXT;
public abstract class AbstractStoredProcedureParameterInjector implements StoredProcedureParameterInjector
{
@@ -46,9 +46,8 @@
{
this.invocation = invocation;
injectors = new HashMap();
- injectors.put( StoredProcedureParameter.OPERATION_PRINCIPAL, $operationPrincipalInjector.inject() );
- injectors.put( StoredProcedureParameter.OPERATION_TIME, $operationTimeInjector.inject() );
- injectors.put( StoredProcedureParameter.ROOT_DSE, $rootDSE.inject() );
+ injectors.put( StoredProcedureParameter.Generic_OPERATION_PRINCIPAL.class, $operationPrincipalInjector );
+ injectors.put( StoredProcedureParameter.Generic_LDAP_CONTEXT.class, $ldapContextInjector );
}
protected Name getOperationPrincipal() throws NamingException
@@ -58,11 +57,6 @@
return userName;
}
- protected Date getOperationTime()
- {
- return new Date();
- }
-
protected Map getInjectors()
{
return injectors;
@@ -78,7 +72,7 @@
this.invocation = invocation;
}
- public final List getArgumentsToInject( List parameterList )
+ public final List getArgumentsToInject( List parameterList ) throws NamingException
{
List arguments = new ArrayList();
@@ -86,7 +80,8 @@
while ( it.hasNext() )
{
StoredProcedureParameter spParameter = ( StoredProcedureParameter ) it.next();
- arguments.add( injectors.get( spParameter ) );
+ MicroInjector injector = ( MicroInjector ) injectors.get( spParameter.getClass() );
+ arguments.add( injector.inject( spParameter ) );
}
return arguments;
@@ -94,25 +89,19 @@
MicroInjector $operationPrincipalInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
return getOperationPrincipal();
};
};
- MicroInjector $operationTimeInjector = new MicroInjector()
- {
- public Object inject() throws NamingException
- {
- return getOperationTime();
- };
- };
-
- MicroInjector $rootDSE = new MicroInjector()
+ MicroInjector $ldapContextInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
- return ( ServerLdapContext ) ( ( ServerLdapContext ) invocation.getCaller() ).getRootContext();
+ Generic_LDAP_CONTEXT ldapCtxParam = ( Generic_LDAP_CONTEXT ) param;
+ LdapDN ldapCtxName = ldapCtxParam.getCtxName();
+ return (( ServerLdapContext ) ( ( ServerLdapContext ) invocation.getCaller() ).getRootContext()).lookup( ldapCtxName );
};
};
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java Tue Sep 5 12:35:34 2006
@@ -27,7 +27,7 @@
import org.apache.directory.server.core.invocation.Invocation;
import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter.AddStoredProcedureParameter;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
public class AddStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
{
@@ -42,13 +42,13 @@
this.addedEntryName = addedEntryName;
this.addedEntry = addedEntry;
injectors = super.getInjectors();
- injectors.put( AddStoredProcedureParameter.ENTRY, $entryInjector.inject() );
- injectors.put( AddStoredProcedureParameter.ATTRIBUTES, $attributesInjector.inject() );
+ injectors.put( StoredProcedureParameter.Add_ENTRY.class, $entryInjector );
+ injectors.put( StoredProcedureParameter.Add_ATTRIBUTES.class, $attributesInjector );
}
MicroInjector $entryInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
// Return a safe copy constructed with user provided name.
return new LdapDN( addedEntryName.getUpName() );
@@ -57,7 +57,7 @@
MicroInjector $attributesInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
return addedEntry.clone();
};
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java Tue Sep 5 12:35:34 2006
@@ -29,12 +29,13 @@
import org.apache.directory.server.core.invocation.Invocation;
import org.apache.directory.server.core.partition.PartitionNexusProxy;
import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter.DeleteStoredProcedureParameter;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
public class DeleteStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
{
private LdapDN deletedEntryName;
+ private Attributes deletedEntry;
private Map injectors;
@@ -42,14 +43,15 @@
{
super( invocation );
this.deletedEntryName = deletedEntryName;
+ this.deletedEntry = getDeletedEntry();
injectors = super.getInjectors();
- injectors.put( DeleteStoredProcedureParameter.NAME, $nameInjector.inject() );
- injectors.put( DeleteStoredProcedureParameter.DELETED_ENTRY, $deletedEntryInjector.inject() );
+ injectors.put( StoredProcedureParameter.Delete_NAME.class, $nameInjector );
+ injectors.put( StoredProcedureParameter.Delete_DELETED_ENTRY.class, $deletedEntryInjector );
}
MicroInjector $nameInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
// Return a safe copy constructed with user provided name.
return new LdapDN( deletedEntryName.getUpName() );
@@ -58,16 +60,20 @@
MicroInjector $deletedEntryInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
- PartitionNexusProxy proxy = getInvocation().getProxy();
- /**
- * Using LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS here to exclude operational attributes
- * especially subentry related ones like "triggerSubentries".
- */
- Attributes deletedEntry = proxy.lookup( deletedEntryName, PartitionNexusProxy.LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS );
return deletedEntry;
};
};
-
+
+ private Attributes getDeletedEntry() throws NamingException
+ {
+ PartitionNexusProxy proxy = getInvocation().getProxy();
+ /**
+ * Using LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS here to exclude operational attributes
+ * especially subentry related ones like "triggerExecutionSubentries".
+ */
+ Attributes deletedEntry = proxy.lookup( deletedEntryName, PartitionNexusProxy.LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS );
+ return deletedEntry;
+ }
}
Copied: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java (from r440188, directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModDNStoredProcedureParameterInjector.java)
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java?view=diff&rev=440458&p1=directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModDNStoredProcedureParameterInjector.java&r1=440188&p2=directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModDNStoredProcedureParameterInjector.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java Tue Sep 5 12:35:34 2006
@@ -28,7 +28,7 @@
import org.apache.directory.shared.ldap.name.LdapDN;
-public class ModDNStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
+public class ModifyDNStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
{
private LdapDN oldName;
private String newRn;
@@ -36,7 +36,8 @@
private Map injectors;
- public ModDNStoredProcedureParameterInjector( Invocation invocation, LdapDN oldName, String newRn, boolean deleteOldRn ) throws NamingException
+ public ModifyDNStoredProcedureParameterInjector( Invocation invocation, boolean deleteOldRn,
+ LdapDN oldRDN, LdapDN newRDN, LdapDN oldSuperiorDN, LdapDN newSuperiorDN, LdapDN oldDN, LdapDN newDN) throws NamingException
{
super( invocation );
init( oldName, newRn, deleteOldRn );
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyStoredProcedureParameterInjector.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyStoredProcedureParameterInjector.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/ModifyStoredProcedureParameterInjector.java Tue Sep 5 12:35:34 2006
@@ -26,13 +26,12 @@
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
-import javax.naming.directory.DirContext;
import javax.naming.directory.ModificationItem;
import org.apache.directory.server.core.invocation.Invocation;
import org.apache.directory.server.core.partition.PartitionNexusProxy;
import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter.ModifyStoredProcedureParameter;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
public class ModifyStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
{
@@ -68,16 +67,17 @@
{
this.modifiedEntryName = modifiedEntryName;
this.modifications = modifications;
+ this.oldEntry = getEntry();
injectors = super.getInjectors();
- injectors.put( ModifyStoredProcedureParameter.OBJECT, $objectInjector.inject() );
- injectors.put( ModifyStoredProcedureParameter.MODIFICATION, $modificationInjector.inject() );
- injectors.put( ModifyStoredProcedureParameter.OLD_ENTRY, $oldEntryInjector.inject() );
- injectors.put( ModifyStoredProcedureParameter.NEW_ENTRY, $newEntryInjector.inject() );
+ injectors.put( StoredProcedureParameter.Modify_OBJECT.class, $objectInjector );
+ injectors.put( StoredProcedureParameter.Modify_MODIFICATION.class, $modificationInjector );
+ injectors.put( StoredProcedureParameter.Modify_OLD_ENTRY.class, $oldEntryInjector );
+ injectors.put( StoredProcedureParameter.Modify_NEW_ENTRY.class, $newEntryInjector );
}
MicroInjector $objectInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
// Return a safe copy constructed with user provided name.
return new LdapDN( modifiedEntryName.getUpName() );
@@ -86,7 +86,7 @@
MicroInjector $modificationInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
return modifications.clone();
};
@@ -94,43 +94,28 @@
MicroInjector $oldEntryInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
- PartitionNexusProxy proxy = getInvocation().getProxy();
- /**
- * Using LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS here to exclude operational attributes
- * especially subentry related ones like "triggerSubentries".
- */
- oldEntry = proxy.lookup( modifiedEntryName, PartitionNexusProxy.LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS );
return oldEntry;
};
};
MicroInjector $newEntryInjector = new MicroInjector()
{
- public Object inject() throws NamingException
+ public Object inject( StoredProcedureParameter param ) throws NamingException
{
- Attributes newEntry = ( Attributes ) oldEntry.clone();
-
- for ( int i = 0; i < modifications.length; i++ )
- {
- switch ( modifications[i].getModificationOp() )
- {
- case ( DirContext.ADD_ATTRIBUTE ):
- newEntry.put( modifications[i].getAttribute() );
- break;
- case ( DirContext.REMOVE_ATTRIBUTE ):
- newEntry.remove( modifications[i].getAttribute().getID() );
- break;
- case ( DirContext.REPLACE_ATTRIBUTE ):
- newEntry.remove( modifications[i].getAttribute().getID() );
- newEntry.put( modifications[i].getAttribute() );
- break;
- }
- }
-
- return newEntry;
+ return getEntry();
};
};
+
+ private Attributes getEntry() throws NamingException
+ {
+ PartitionNexusProxy proxy = getInvocation().getProxy();
+ /**
+ * Using LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS here to exclude operational attributes
+ * especially subentry related ones like "triggerExecutionSubentries".
+ */
+ return proxy.lookup( modifiedEntryName, PartitionNexusProxy.LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS );
+ }
}
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java Tue Sep 5 12:35:34 2006
@@ -24,12 +24,14 @@
import javax.naming.NamingException;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
+
public interface StoredProcedureParameterInjector
{
- List getArgumentsToInject( List parameterList );
+ List getArgumentsToInject( List parameterList ) throws NamingException;
public interface MicroInjector
{
- Object inject() throws NamingException;
+ Object inject( StoredProcedureParameter param ) throws NamingException;
}
}
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java Tue Sep 5 12:35:34 2006
@@ -30,6 +30,7 @@
import java.util.List;
import java.util.Map;
+import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
@@ -38,6 +39,7 @@
import org.apache.directory.server.core.DirectoryServiceConfiguration;
import org.apache.directory.server.core.configuration.InterceptorConfiguration;
import org.apache.directory.server.core.interceptor.BaseInterceptor;
+import org.apache.directory.server.core.interceptor.InterceptorChain;
import org.apache.directory.server.core.interceptor.NextInterceptor;
import org.apache.directory.server.core.invocation.Invocation;
import org.apache.directory.server.core.invocation.InvocationStack;
@@ -45,6 +47,7 @@
import org.apache.directory.server.core.partition.PartitionNexusProxy;
import org.apache.directory.server.core.schema.AttributeTypeRegistry;
import org.apache.directory.server.core.sp.LdapClassLoader;
+import org.apache.directory.server.core.subtree.SubentryService;
import org.apache.directory.shared.ldap.exception.LdapNamingException;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.name.LdapDN;
@@ -72,13 +75,13 @@
private static final Logger log = LoggerFactory.getLogger( TriggerService.class );
/** the entry trigger attribute string: entryTrigger */
- private static final String ENTRY_TRIGGER_ATTR = "entryTrigger";
+ private static final String ENTRY_TRIGGER_ATTR = "entryTriggerSpecification";
/**
* the multivalued operational attribute used to track the prescriptive
* trigger subentries that apply to an entry
*/
- private static final String TRIGGER_SUBENTRIES_ATTR = "triggerSubentries";
+ private static final String TRIGGER_SUBENTRIES_ATTR = "triggerExecutionSubentries";
/** a triggerSpecCache that responds to add, delete, and modify attempts */
private TriggerSpecCache triggerSpecCache;
@@ -86,6 +89,8 @@
private TriggerSpecificationParser triggerParser;
/** the attribute type registry */
private AttributeTypeRegistry attrRegistry;
+ /** */
+ private InterceptorChain chain;
/** whether or not this interceptor is activated */
private boolean enabled = true;
@@ -177,8 +182,6 @@
public Map getActionTimeMappedTriggerSpecsForOperation( List triggerSpecs, LdapOperation ldapOperation )
{
- List beforeTriggerSpecs = new ArrayList();
- List insteadofTriggerSpecs = new ArrayList();
List afterTriggerSpecs = new ArrayList();
Map triggerSpecMap = new HashMap();
@@ -188,15 +191,7 @@
TriggerSpecification triggerSpec = ( TriggerSpecification ) it.next();
if ( triggerSpec.getLdapOperation().equals( ldapOperation ) )
{
- if ( triggerSpec.getActionTime().equals( ActionTime.BEFORE ) )
- {
- beforeTriggerSpecs.add( triggerSpec );
- }
- else if ( triggerSpec.getActionTime().equals( ActionTime.INSTEADOF ) )
- {
- insteadofTriggerSpecs.add( triggerSpec );
- }
- else if ( triggerSpec.getActionTime().equals( ActionTime.AFTER ) )
+ if ( triggerSpec.getActionTime().equals( ActionTime.AFTER ) )
{
afterTriggerSpecs.add( triggerSpec );
}
@@ -207,8 +202,6 @@
}
}
- triggerSpecMap.put( ActionTime.BEFORE, beforeTriggerSpecs );
- triggerSpecMap.put( ActionTime.INSTEADOF, insteadofTriggerSpecs );
triggerSpecMap.put( ActionTime.AFTER, afterTriggerSpecs );
return triggerSpecMap;
@@ -232,6 +225,7 @@
}
}
);
+ chain = dirServCfg.getInterceptorChain();
this.enabled = true; // TODO: Get this from the configuration if needed.
}
@@ -254,28 +248,14 @@
List triggerSpecs = new ArrayList();
addPrescriptiveTriggerSpecs( triggerSpecs, proxy, normName, addedEntry );
/**
- * NOTE: We do not handle entryTriggers for ADD operation.
+ * NOTE: We do not handle entryTriggerSpecs for ADD operation.
*/
// Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.ADD.
Map triggerMap = getActionTimeMappedTriggerSpecsForOperation( triggerSpecs, LdapOperation.ADD );
- // Fire BEFORE Triggers.
- List beforeTriggerSpecs = ( List ) triggerMap.get( ActionTime.BEFORE );
- executeTriggers( beforeTriggerSpecs, injector, callerRootCtx );
-
- List insteadofTriggerSpecs = ( List ) triggerMap.get( ActionTime.INSTEADOF );
- if ( insteadofTriggerSpecs.size() == 0 )
- {
- // Really add only when there is no INSTEADOF Trigger that applies to the entry.
- next.add( normName, addedEntry );
- triggerSpecCache.subentryAdded( normName, addedEntry );
- }
- else
- {
- // Fire INSTEADOF Triggers.
- executeTriggers( insteadofTriggerSpecs, injector, callerRootCtx );
- }
+ next.add( normName, addedEntry );
+ triggerSpecCache.subentryAdded( normName, addedEntry );
// Fire AFTER Triggers.
List afterTriggerSpecs = ( List ) triggerMap.get( ActionTime.AFTER );
@@ -306,22 +286,8 @@
// Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.DELETE.
Map triggerMap = getActionTimeMappedTriggerSpecsForOperation( triggerSpecs, LdapOperation.DELETE );
- // Fire BEFORE Triggers.
- List beforeTriggerSpecs = ( List ) triggerMap.get( ActionTime.BEFORE );
- executeTriggers( beforeTriggerSpecs, injector, callerRootCtx );
-
- List insteadofTriggerSpecs = ( List ) triggerMap.get( ActionTime.INSTEADOF );
- if ( insteadofTriggerSpecs.size() == 0 )
- {
- // Really delete only when there is no INSTEADOF Trigger that applies to the entry.
- next.delete( normName );
- triggerSpecCache.subentryDeleted( normName, deletedEntry );
- }
- else
- {
- // Fire INSTEADOF Triggers.
- executeTriggers( insteadofTriggerSpecs, injector, callerRootCtx );
- }
+ next.delete( normName );
+ triggerSpecCache.subentryDeleted( normName, deletedEntry );
// Fire AFTER Triggers.
List afterTriggerSpecs = ( List ) triggerMap.get( ActionTime.AFTER );
@@ -352,22 +318,8 @@
// Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFY.
Map triggerMap = getActionTimeMappedTriggerSpecsForOperation( triggerSpecs, LdapOperation.MODIFY );
- // Fire BEFORE Triggers.
- List beforeTriggerSpecs = ( List ) triggerMap.get( ActionTime.BEFORE );
- executeTriggers( beforeTriggerSpecs, injector, callerRootCtx );
-
- List insteadofTriggerSpecs = ( List ) triggerMap.get( ActionTime.INSTEADOF );
- if ( insteadofTriggerSpecs.size() == 0 )
- {
- // Really modify only when there is no INSTEADOF Trigger that applies to the entry.
- next.modify( normName, modOp, mods );
- triggerSpecCache.subentryModified( normName, modOp, mods, modifiedEntry );
- }
- else
- {
- // Fire INSTEADOF Triggers.
- executeTriggers( insteadofTriggerSpecs, injector, callerRootCtx );
- }
+ next.modify( normName, modOp, mods );
+ triggerSpecCache.subentryModified( normName, modOp, mods, modifiedEntry );
// Fire AFTER Triggers.
List afterTriggerSpecs = ( List ) triggerMap.get( ActionTime.AFTER );
@@ -399,50 +351,202 @@
// Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFY.
Map triggerMap = getActionTimeMappedTriggerSpecsForOperation( triggerSpecs, LdapOperation.MODIFY );
- // Fire BEFORE Triggers.
- List beforeTriggerSpecs = ( List ) triggerMap.get( ActionTime.BEFORE );
- executeTriggers( beforeTriggerSpecs, injector, callerRootCtx );
+ next.modify( normName, mods );
+ triggerSpecCache.subentryModified( normName, mods, modifiedEntry );
- List insteadofTriggerSpecs = ( List ) triggerMap.get( ActionTime.INSTEADOF );
- if ( insteadofTriggerSpecs.size() == 0 )
- {
- // Really modify only when there is no INSTEADOF Trigger that applies to the entry.
- next.modify( normName, mods );
- triggerSpecCache.subentryModified( normName, mods, modifiedEntry );
- }
- else
+ // Fire AFTER Triggers.
+ List afterTriggerSpecs = ( List ) triggerMap.get( ActionTime.AFTER );
+ executeTriggers( afterTriggerSpecs, injector, callerRootCtx );
+ }
+
+
+ public void modifyRn( NextInterceptor next, LdapDN name, String newRn, boolean deleteOldRn ) throws NamingException
+ {
+ // Bypass trigger handling if the service is disabled.
+ if ( !enabled )
{
- // Fire INSTEADOF Triggers.
- executeTriggers( insteadofTriggerSpecs, injector, callerRootCtx );
+ next.modifyRn( name, newRn, deleteOldRn );
+ return;
}
+ // Gather supplementary data.
+ Invocation invocation = InvocationStack.getInstance().peek();
+ PartitionNexusProxy proxy = invocation.getProxy();
+ Attributes renamedEntry = proxy.lookup( name, PartitionNexusProxy.LOOKUP_BYPASS );
+ ServerLdapContext callerRootCtx = ( ServerLdapContext ) ( ( ServerLdapContext ) invocation.getCaller() ).getRootContext();
+
+ LdapDN oldRDN = new LdapDN( name.getRdn().getUpName() );
+ LdapDN newRDN = new LdapDN( newRn );
+ LdapDN oldSuperiorDN = ( LdapDN ) name.clone();
+ oldSuperiorDN.remove( oldSuperiorDN.size() - 1 );
+ LdapDN newSuperiorDN = ( LdapDN ) oldSuperiorDN.clone();
+ LdapDN oldDN = ( LdapDN ) name.clone();
+ LdapDN newDN = ( LdapDN ) name.clone();
+ newDN.add( newRn );
+
+ StoredProcedureParameterInjector injector = new ModifyDNStoredProcedureParameterInjector(
+ invocation, deleteOldRn, oldRDN, newRDN, oldSuperiorDN, newSuperiorDN, oldDN, newDN );
+
+ // Gather Trigger Specifications which apply to the entry being renamed.
+ List triggerSpecs = new ArrayList();
+ addPrescriptiveTriggerSpecs( triggerSpecs, proxy, name, renamedEntry );
+ addEntryTriggerSpecs( triggerSpecs, renamedEntry );
+
+ // Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFYDN_RENAME.
+ Map triggerMap = getActionTimeMappedTriggerSpecsForOperation( triggerSpecs, LdapOperation.MODIFYDN_RENAME );
+
+ next.modifyRn( name, newRn, deleteOldRn );
+ triggerSpecCache.subentryRenamed( name, newDN );
+
// Fire AFTER Triggers.
List afterTriggerSpecs = ( List ) triggerMap.get( ActionTime.AFTER );
executeTriggers( afterTriggerSpecs, injector, callerRootCtx );
}
- /**
- * TODO: Fill in this method!
- */
- /*
- public void modifyRn( NextInterceptor next, LdapDN normName, String newRn, boolean deleteOldRn ) throws NamingException
+ public void move( NextInterceptor next, LdapDN oriChildName, LdapDN newParentName, String newRn, boolean deleteOldRn ) throws NamingException
{
// Bypass trigger handling if the service is disabled.
if ( !enabled )
{
- next.modifyRn( normName, newRn, deleteOldRn );
+ next.move( oriChildName, newParentName, newRn, deleteOldRn );
return;
}
- // Gather supplementary data.
+ // Gather supplementary data.
+ Invocation invocation = InvocationStack.getInstance().peek();
+ PartitionNexusProxy proxy = invocation.getProxy();
+ Attributes movedEntry = proxy.lookup( oriChildName, PartitionNexusProxy.LOOKUP_BYPASS );
+ ServerLdapContext callerRootCtx = ( ServerLdapContext ) ( ( ServerLdapContext ) invocation.getCaller() ).getRootContext();
+
+ LdapDN oldRDN = new LdapDN( oriChildName.getRdn().getUpName() );
+ LdapDN newRDN = new LdapDN( newRn );
+ LdapDN oldSuperiorDN = ( LdapDN ) oriChildName.clone();
+ oldSuperiorDN.remove( oldSuperiorDN.size() - 1 );
+ LdapDN newSuperiorDN = ( LdapDN ) newParentName.clone();
+ LdapDN oldDN = ( LdapDN ) oriChildName.clone();
+ LdapDN newDN = ( LdapDN ) newParentName.clone();
+ newDN.add( newRn );
+
+ StoredProcedureParameterInjector injector = new ModifyDNStoredProcedureParameterInjector(
+ invocation, deleteOldRn, oldRDN, newRDN, oldSuperiorDN, newSuperiorDN, oldDN, newDN );
+
+ // Gather Trigger Specifications which apply to the entry being exported.
+ List exportTriggerSpecs = new ArrayList();
+ addPrescriptiveTriggerSpecs( exportTriggerSpecs, proxy, oriChildName, movedEntry );
+ addEntryTriggerSpecs( exportTriggerSpecs, movedEntry );
+
+ // Get the entry again without operational attributes
+ // because access control subentry operational attributes
+ // will not be valid at the new location.
+ // This will certainly be fixed by the SubentryService,
+ // but after this service.
+ Attributes importedEntry = proxy.lookup( oriChildName, PartitionNexusProxy.LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS );
+ // As the target entry does not exist yet and so
+ // its subentry operational attributes are not there,
+ // we need to construct an entry to represent it
+ // at least with minimal requirements which are object class
+ // and access control subentry operational attributes.
+ SubentryService subentryService = ( SubentryService ) chain.get( "subentryService" );
+ Attributes fakeImportedEntry = subentryService.getSubentryAttributes( newDN, importedEntry );
+ NamingEnumeration attrList = importedEntry.getAll();
+ while ( attrList.hasMore() )
+ {
+ fakeImportedEntry.put( ( Attribute ) attrList.next() );
+ }
+
+ // Gather Trigger Specifications which apply to the entry being imported.
+ // Note: Entry Trigger Specifications are not valid for Import.
+ List importTriggerSpecs = new ArrayList();
+ addPrescriptiveTriggerSpecs( importTriggerSpecs, proxy, newDN, fakeImportedEntry );
+
+ // Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFYDN_EXPORT.
+ Map exportTriggerMap = getActionTimeMappedTriggerSpecsForOperation( exportTriggerSpecs, LdapOperation.MODIFYDN_EXPORT );
+
+ // Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFYDN_IMPORT.
+ Map importTriggerMap = getActionTimeMappedTriggerSpecsForOperation( importTriggerSpecs, LdapOperation.MODIFYDN_IMPORT );
+
+ next.move( oriChildName, newParentName, newRn, deleteOldRn );
+ triggerSpecCache.subentryRenamed( oldDN, newDN );
+
+ // Fire AFTER Triggers.
+ List afterExportTriggerSpecs = ( List ) exportTriggerMap.get( ActionTime.AFTER );
+ List afterImportTriggerSpecs = ( List ) importTriggerMap.get( ActionTime.AFTER );
+ executeTriggers( afterExportTriggerSpecs, injector, callerRootCtx );
+ executeTriggers( afterImportTriggerSpecs, injector, callerRootCtx );
+ }
+
+
+ public void move( NextInterceptor next, LdapDN oriChildName, LdapDN newParentName ) throws NamingException
+ {
+ // Bypass trigger handling if the service is disabled.
+ if ( !enabled )
+ {
+ next.move( oriChildName, newParentName );
+ return;
+ }
+
+ // Gather supplementary data.
Invocation invocation = InvocationStack.getInstance().peek();
- DirectoryPartitionNexusProxy proxy = invocation.getProxy();
- Attributes entry = proxy.lookup( normName, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
- LdapDN newName = ( LdapDN ) normName.clone();
- newName.remove( normName.size() - 1 );
- newName.add( parseNormalized( newRn ).get( 0 ) );
+ PartitionNexusProxy proxy = invocation.getProxy();
+ Attributes movedEntry = proxy.lookup( oriChildName, PartitionNexusProxy.LOOKUP_BYPASS );
+ ServerLdapContext callerRootCtx = ( ServerLdapContext ) ( ( ServerLdapContext ) invocation.getCaller() ).getRootContext();
+
+ LdapDN oldRDN = new LdapDN( oriChildName.getRdn().getUpName() );
+ LdapDN newRDN = new LdapDN( oriChildName.getRdn().getUpName() );
+ LdapDN oldSuperiorDN = ( LdapDN ) oriChildName.clone();
+ oldSuperiorDN.remove( oldSuperiorDN.size() - 1 );
+ LdapDN newSuperiorDN = ( LdapDN ) newParentName.clone();
+ LdapDN oldDN = ( LdapDN ) oriChildName.clone();
+ LdapDN newDN = ( LdapDN ) newParentName.clone();
+ newDN.add( newRDN.getUpName() );
+
+ StoredProcedureParameterInjector injector = new ModifyDNStoredProcedureParameterInjector(
+ invocation, false, oldRDN, newRDN, oldSuperiorDN, newSuperiorDN, oldDN, newDN );
+
+ // Gather Trigger Specifications which apply to the entry being exported.
+ List exportTriggerSpecs = new ArrayList();
+ addPrescriptiveTriggerSpecs( exportTriggerSpecs, proxy, oriChildName, movedEntry );
+ addEntryTriggerSpecs( exportTriggerSpecs, movedEntry );
+
+ // Get the entry again without operational attributes
+ // because access control subentry operational attributes
+ // will not be valid at the new location.
+ // This will certainly be fixed by the SubentryService,
+ // but after this service.
+ Attributes importedEntry = proxy.lookup( oriChildName, PartitionNexusProxy.LOOKUP_EXCLUDING_OPR_ATTRS_BYPASS );
+ // As the target entry does not exist yet and so
+ // its subentry operational attributes are not there,
+ // we need to construct an entry to represent it
+ // at least with minimal requirements which are object class
+ // and access control subentry operational attributes.
+ SubentryService subentryService = ( SubentryService ) chain.get( "subentryService" );
+ Attributes fakeImportedEntry = subentryService.getSubentryAttributes( newDN, importedEntry );
+ NamingEnumeration attrList = importedEntry.getAll();
+ while ( attrList.hasMore() )
+ {
+ fakeImportedEntry.put( ( Attribute ) attrList.next() );
+ }
+
+ // Gather Trigger Specifications which apply to the entry being imported.
+ // Note: Entry Trigger Specifications are not valid for Import.
+ List importTriggerSpecs = new ArrayList();
+ addPrescriptiveTriggerSpecs( importTriggerSpecs, proxy, newDN, fakeImportedEntry );
+
+ // Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFYDN_EXPORT.
+ Map exportTriggerMap = getActionTimeMappedTriggerSpecsForOperation( exportTriggerSpecs, LdapOperation.MODIFYDN_EXPORT );
+
+ // Gather a Map<ActionTime,TriggerSpecification> where TriggerSpecification.ldapOperation = LdapOperation.MODIFYDN_IMPORT.
+ Map importTriggerMap = getActionTimeMappedTriggerSpecsForOperation( importTriggerSpecs, LdapOperation.MODIFYDN_IMPORT );
+
+ next.move( oriChildName, newParentName );
+ triggerSpecCache.subentryRenamed( oldDN, newDN );
+
+ // Fire AFTER Triggers.
+ List afterExportTriggerSpecs = ( List ) exportTriggerMap.get( ActionTime.AFTER );
+ List afterImportTriggerSpecs = ( List ) importTriggerMap.get( ActionTime.AFTER );
+ executeTriggers( afterExportTriggerSpecs, injector, callerRootCtx );
+ executeTriggers( afterImportTriggerSpecs, injector, callerRootCtx );
}
- */
////////////////////////////////////////////////////////////////////////////
// Utility Methods
@@ -480,7 +584,6 @@
{
List arguments = new ArrayList();
arguments.addAll( injector.getArgumentsToInject( tsec.getStoredProcedureParameters() ) );
-
List typeList = new ArrayList();
typeList.addAll( getTypesFromValues( arguments ) );
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java (original)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java Tue Sep 5 12:35:34 2006
@@ -63,11 +63,11 @@
public class TriggerSpecCache
{
/** the attribute id for prescriptive trigger: prescriptiveTrigger */
- private static final String PRESCRIPTIVE_TRIGGER_ATTR = "prescriptiveTrigger";
+ private static final String PRESCRIPTIVE_TRIGGER_ATTR = "prescriptiveTriggerSpecification";
/** the attribute id for an object class: objectClass */
private static final String OC_ATTR = "objectClass";
- /** the object class for trigger subentries: triggerSubentry */
- private static final String TRIGGER_SUBENTRY_OC = "triggerSubentry";
+ /** the object class for trigger subentries: triggerExecutionSubentry */
+ private static final String TRIGGER_SUBENTRY_OC = "triggerExecutionSubentry";
/** the logger for this class */
private static final Logger log = LoggerFactory.getLogger( TriggerSpecCache.class );
@@ -126,7 +126,7 @@
Attribute triggerSpec = result.getAttributes().get( PRESCRIPTIVE_TRIGGER_ATTR );
if ( triggerSpec == null )
{
- log.warn( "Found triggerSubentry '" + subentryDn + "' without any " + PRESCRIPTIVE_TRIGGER_ATTR );
+ log.warn( "Found triggerExecutionSubentry '" + subentryDn + "' without any " + PRESCRIPTIVE_TRIGGER_ATTR );
continue;
}
Modified: directory/trunks/apacheds/core/src/main/schema/apache.schema
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core/src/main/schema/apache.schema?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/core/src/main/schema/apache.schema (original)
+++ directory/trunks/apacheds/core/src/main/schema/apache.schema Tue Sep 5 12:35:34 2006
@@ -223,19 +223,19 @@
# Trigger related
# ===============
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.25 NAME 'prescriptiveTrigger'
+attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.25 NAME 'prescriptiveTriggerSpecification'
DESC 'Trigger specification that applies to a set of entries'
EQUALITY directoryStringFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.59
USAGE directoryOperation )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.26 NAME 'entryTrigger'
+attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.26 NAME 'entryTriggerSpecification'
DESC 'Trigger specification that applies to a single entry'
EQUALITY directoryStringFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.59
USAGE directoryOperation )
-attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.27 NAME 'triggerSubentries'
+attributetype ( 1.2.6.1.4.1.18060.1.1.1.3.27 NAME 'triggerExecutionSubentries'
DESC 'Used to track subentries associated with a trigger area which an entry falls under'
SUP distinguishedName
EQUALITY distinguishedNameMatch
@@ -243,10 +243,10 @@
NO-USER-MODIFICATION
USAGE directoryOperation )
-objectclass ( 1.2.6.1.4.1.18060.1.1.1.3.28 NAME 'triggerSubentry'
+objectclass ( 1.2.6.1.4.1.18060.1.1.1.3.28 NAME 'triggerExecutionSubentry'
DESC 'Used to track a subentry associated with trigger areas'
AUXILIARY
- MUST prescriptiveTrigger )
+ MUST prescriptiveTriggerSpecification )
# ======================
# End of Trigger related
Modified: directory/trunks/apacheds/server-sar/pom.xml
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-sar/pom.xml?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/server-sar/pom.xml (original)
+++ directory/trunks/apacheds/server-sar/pom.xml Tue Sep 5 12:35:34 2006
@@ -21,7 +21,7 @@
<dependency>
<groupId>org.apache.directory.daemon</groupId>
<artifactId>daemon-bootstrappers</artifactId>
- <version>1.0-RC3-SNAPSHOT</version>
+ <version>1.0-RC3</version>
</dependency>
<dependency>
<groupId>jboss</groupId>
Modified: directory/trunks/apacheds/server-tools/pom.xml
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/pom.xml?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/server-tools/pom.xml (original)
+++ directory/trunks/apacheds/server-tools/pom.xml Tue Sep 5 12:35:34 2006
@@ -22,7 +22,7 @@
<dependency>
<groupId>org.apache.directory.daemon</groupId>
<artifactId>daemon-bootstrappers</artifactId>
- <version>1.0-RC3-SNAPSHOT</version>
+ <version>1.0-RC3</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
Modified: directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/AbstractServerTriggerServiceTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/AbstractServerTriggerServiceTest.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/AbstractServerTriggerServiceTest.java (original)
+++ directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/AbstractServerTriggerServiceTest.java Tue Sep 5 12:35:34 2006
@@ -159,9 +159,9 @@
subentry.put( objectClass );
objectClass.add( "top" );
objectClass.add( "subentry" );
- objectClass.add( "triggerSubentry" );
+ objectClass.add( "triggerExecutionSubentry" );
subentry.put( "subtreeSpecification", subtree );
- subentry.put( "prescriptiveTrigger", triggerSpec );
+ subentry.put( "prescriptiveTriggerSpecification", triggerSpec );
adminCtx.createSubcontext( "cn=" + cn, subentry );
}
@@ -176,7 +176,7 @@
*/
public void addEntryTrigger( LdapContext adminCtx, Name rdn, String triggerSpec ) throws NamingException
{
- Attributes changes = new BasicAttributes( "entryTrigger", triggerSpec, true );
+ Attributes changes = new BasicAttributes( "entryTriggerSpecification", triggerSpec, true );
adminCtx.modifyAttributes( rdn, DirContext.ADD_ATTRIBUTE, changes );
}
Modified: directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/DefaultServerTriggerServiceTest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/DefaultServerTriggerServiceTest.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/DefaultServerTriggerServiceTest.java (original)
+++ directory/trunks/apacheds/server-unit/src/test/java/org/apache/directory/server/DefaultServerTriggerServiceTest.java Tue Sep 5 12:35:34 2006
@@ -87,7 +87,7 @@
// Create the Triger Specification within a Trigger Subentry.
createTriggerSubentry( ctx, "triggerSubentry1",
- "AFTER delete CALL \"" + BackupUtilities.class.getName() + ".backupDeleted\" ( $rootDSE, $name, $operationPrincipal, $deletedEntry )" );
+ "AFTER Delete CALL \"" + BackupUtilities.class.getName() + ".backupDeleted\" ( $ldapContext \"\", $name, $operationPrincipal, $deletedEntry )" );
// Create a test entry which is selected by the Trigger Subentry.
Attributes testEntry = new BasicAttributes( "ou", "testou", true );
Modified: directory/trunks/shared/ldap/src/main/antlr/TriggerSpecification.g
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/antlr/TriggerSpecification.g?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/shared/ldap/src/main/antlr/TriggerSpecification.g (original)
+++ directory/trunks/shared/ldap/src/main/antlr/TriggerSpecification.g Tue Sep 5 12:35:34 2006
@@ -138,64 +138,23 @@
{
log.debug( "entered actionTime()" );
}
- : ID_BEFORE { triggerActionTime = ActionTime.BEFORE; }
- | ID_AFTER { triggerActionTime = ActionTime.AFTER; }
- | ID_INSTEADOF { triggerActionTime = ActionTime.INSTEADOF; }
+ : ID_AFTER { triggerActionTime = ActionTime.AFTER; }
;
ldapOperationAndStoredProcedureCall
{
log.debug( "entered ldapOperationAndStoredProcedureCall()" );
}
- : bindOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.BIND; }
- | unbindOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.UNBIND; }
- | searchOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.SEARCH; }
- | modifyOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.MODIFY; }
+ : modifyOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.MODIFY; }
| addOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.ADD; }
| deleteOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.DELETE; }
- | modDNOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.MODDN; }
- | compareOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.COMPARE; }
- | abandonOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.ABANDON; }
- | extendedOperationAndStoredProcedureCall { triggerLdapOperation = LdapOperation.EXTENDED; }
+ | modifyDNOperationAndStoredProcedureCall
;
// -----------------------------------------------------------------------------
// XXXOperationAndStoredProcedureCall
// -----------------------------------------------------------------------------
-bindOperationAndStoredProcedureCall
-{
- log.debug( "entered bindOperationAndStoredProcedureCall()" );
-}
- :
- ID_bind theCompositeRuleForCallAndSPNameAndSPOptionList
- OPEN_PARAN ( SP )*
- ( bindStoredProcedureParameterList )?
- CLOSE_PARAN
- ;
-
-unbindOperationAndStoredProcedureCall
-{
- log.debug( "entered unbindOperationAndStoredProcedureCall()" );
-}
- :
- ID_unbind theCompositeRuleForCallAndSPNameAndSPOptionList
- OPEN_PARAN ( SP )*
- ( unbindStoredProcedureParameterList )?
- CLOSE_PARAN
- ;
-
-searchOperationAndStoredProcedureCall
-{
- log.debug( "entered searchOperationAndStoredProcedureCall()" );
-}
- :
- ID_search theCompositeRuleForCallAndSPNameAndSPOptionList
- OPEN_PARAN ( SP )*
- ( searchStoredProcedureParameterList )?
- CLOSE_PARAN
- ;
-
modifyOperationAndStoredProcedureCall
{
log.debug( "entered modifyOperationAndStoredProcedureCall()" );
@@ -229,47 +188,18 @@
CLOSE_PARAN
;
-modDNOperationAndStoredProcedureCall
-{
- log.debug( "entered modDNOperationAndStoredProcedureCall()" );
-}
- :
- ID_modDN theCompositeRuleForCallAndSPNameAndSPOptionList
- OPEN_PARAN ( SP )*
- ( modDNStoredProcedureParameterList )?
- CLOSE_PARAN
- ;
-
-compareOperationAndStoredProcedureCall
-{
- log.debug( "entered compareOperationAndStoredProcedureCall()" );
-}
- :
- ID_compare theCompositeRuleForCallAndSPNameAndSPOptionList
- OPEN_PARAN ( SP )*
- ( compareStoredProcedureParameterList )?
- CLOSE_PARAN
- ;
-
-abandonOperationAndStoredProcedureCall
+modifyDNOperationAndStoredProcedureCall
{
- log.debug( "entered abandonOperationAndStoredProcedureCall()" );
+ log.debug( "entered modifyDNOperationAndStoredProcedureCall()" );
}
:
- ID_abandon theCompositeRuleForCallAndSPNameAndSPOptionList
+ ID_modifyDN DOT
+ ( ID_modifyDNRename { triggerLdapOperation = LdapOperation.MODIFYDN_RENAME; }
+ | ID_modifyDNExport { triggerLdapOperation = LdapOperation.MODIFYDN_EXPORT; }
+ | ID_modifyDNImport { triggerLdapOperation = LdapOperation.MODIFYDN_IMPORT; } )
+ theCompositeRuleForCallAndSPNameAndSPOptionList
OPEN_PARAN ( SP )*
- ( abandonStoredProcedureParameterList )?
- CLOSE_PARAN
- ;
-
-extendedOperationAndStoredProcedureCall
-{
- log.debug( "entered extendedOperationAndStoredProcedureCall()" );
-}
- :
- ID_extended theCompositeRuleForCallAndSPNameAndSPOptionList
- OPEN_PARAN ( SP )*
- ( extendedStoredProcedureParameterList )?
+ ( modifyDNStoredProcedureParameterList )?
CLOSE_PARAN
;
@@ -296,33 +226,6 @@
// XXXStoredProcedureParameterList
// -----------------------------------------------------------------------------
-bindStoredProcedureParameterList
-{
- log.debug( "entered bindStoredProcedureParameterList()" );
-}
- :
- bindStoredProcedureParameter ( SP )*
- ( SEP ( SP )* bindStoredProcedureParameter ( SP )* )*
- ;
-
-unbindStoredProcedureParameterList
-{
- log.debug( "entered unbindStoredProcedureParameterList()" );
-}
- :
- unbindStoredProcedureParameter ( SP )*
- ( SEP ( SP )* unbindStoredProcedureParameter ( SP )* )*
- ;
-
-searchStoredProcedureParameterList
-{
- log.debug( "entered searchStoredProcedureParameterList()" );
-}
- :
- searchStoredProcedureParameter ( SP )*
- ( SEP ( SP )* searchStoredProcedureParameter ( SP )* )*
- ;
-
modifyStoredProcedureParameterList
{
log.debug( "entered modifyStoredProcedureParameterList()" );
@@ -350,86 +253,27 @@
( SEP ( SP )* deleteStoredProcedureParameter ( SP )* )*
;
-modDNStoredProcedureParameterList
-{
- log.debug( "entered modDNStoredProcedureParameterList()" );
-}
- :
- modDNStoredProcedureParameter ( SP )*
- ( SEP ( SP )* modDNStoredProcedureParameter ( SP )* )*
- ;
-
-compareStoredProcedureParameterList
+modifyDNStoredProcedureParameterList
{
- log.debug( "entered compareStoredProcedureParameterList()" );
+ log.debug( "entered modifyDNStoredProcedureParameterList()" );
}
:
- compareStoredProcedureParameter ( SP )*
- ( SEP ( SP )* compareStoredProcedureParameter ( SP )* )*
- ;
-
-abandonStoredProcedureParameterList
-{
- log.debug( "entered abandonStoredProcedureParameterList()" );
-}
- :
- abandonStoredProcedureParameter ( SP )*
- ( SEP ( SP )* abandonStoredProcedureParameter ( SP )* )*
- ;
-
-extendedStoredProcedureParameterList
-{
- log.debug( "entered extendedStoredProcedureParameterList()" );
-}
- :
- extendedStoredProcedureParameter ( SP )*
- ( SEP ( SP )* extendedStoredProcedureParameter ( SP )* )*
+ modifyDNStoredProcedureParameter ( SP )*
+ ( SEP ( SP )* modifyDNStoredProcedureParameter ( SP )* )*
;
// -----------------------------------------------------------------------------
// XXXStoredProcedureParameter
// -----------------------------------------------------------------------------
-bindStoredProcedureParameter
-{
- log.debug( "entered bindStoredProcedureParameter()" );
-}
- : ID_version { triggerStoredProcedureParameters.add( StoredProcedureParameter.BindStoredProcedureParameter.VERSION ); }
- | ID_name { triggerStoredProcedureParameters.add( StoredProcedureParameter.BindStoredProcedureParameter.NAME ); }
- | ID_authentication { triggerStoredProcedureParameters.add( StoredProcedureParameter.BindStoredProcedureParameter.AUTHENTICATION ); }
- | genericStoredProcedureParameter
- ;
-
-unbindStoredProcedureParameter
-{
- log.debug( "entered unbindStoredProcedureParameter()" );
-}
- : genericStoredProcedureParameter
- ;
-
-searchStoredProcedureParameter
-{
- log.debug( "entered searchStoredProcedureParameter()" );
-}
- : ID_baseObject { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.BASE_OBJECT ); }
- | ID_scope { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.SCOPE ); }
- | ID_derefAliases { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.DEREF_ALIASES ); }
- | ID_sizeLimit { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.SIZE_LIMIT ); }
- | ID_timeLimit { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.TIME_LIMIT ); }
- | ID_typesOnly { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.TYPES_ONLY ); }
- | ID_filter { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.FILTER ); }
- | ID_attributes { triggerStoredProcedureParameters.add( StoredProcedureParameter.SearchStoredProcedureParameter.ATTRIBUTES ); }
- | genericStoredProcedureParameter
- ;
-
modifyStoredProcedureParameter
{
log.debug( "entered modifyStoredProcedureParameter()" );
}
- : ID_object { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyStoredProcedureParameter.OBJECT ); }
- | ID_modification { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyStoredProcedureParameter.MODIFICATION ); }
- | ID_oldEntry { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyStoredProcedureParameter.OLD_ENTRY ); }
- | ID_newEntry { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyStoredProcedureParameter.NEW_ENTRY ); }
+ : ID_object { triggerStoredProcedureParameters.add( StoredProcedureParameter.Modify_OBJECT.instance() ); }
+ | ID_modification { triggerStoredProcedureParameters.add( StoredProcedureParameter.Modify_MODIFICATION.instance() ); }
+ | ID_oldEntry { triggerStoredProcedureParameters.add( StoredProcedureParameter.Modify_OLD_ENTRY.instance() ); }
+ | ID_newEntry { triggerStoredProcedureParameters.add( StoredProcedureParameter.Modify_NEW_ENTRY.instance() ); }
| genericStoredProcedureParameter
;
@@ -437,8 +281,8 @@
{
log.debug( "entered addStoredProcedureParameter()" );
}
- : ID_entry { triggerStoredProcedureParameters.add( StoredProcedureParameter.AddStoredProcedureParameter.ENTRY ); }
- | ID_attributes { triggerStoredProcedureParameters.add( StoredProcedureParameter.AddStoredProcedureParameter.ATTRIBUTES ); }
+ : ID_entry { triggerStoredProcedureParameters.add( StoredProcedureParameter.Add_ENTRY.instance() ); }
+ | ID_attributes { triggerStoredProcedureParameters.add( StoredProcedureParameter.Add_ATTRIBUTES.instance() ); }
| genericStoredProcedureParameter
;
@@ -446,45 +290,19 @@
{
log.debug( "entered deleteStoredProcedureParameter()" );
}
- : ID_name { triggerStoredProcedureParameters.add( StoredProcedureParameter.DeleteStoredProcedureParameter.NAME ); }
- | ID_deletedEntry { triggerStoredProcedureParameters.add( StoredProcedureParameter.DeleteStoredProcedureParameter.DELETED_ENTRY ); }
- | genericStoredProcedureParameter
- ;
-
-modDNStoredProcedureParameter
-{
- log.debug( "entered modDNStoredProcedureParameter()" );
-}
- : ID_entry { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModDNStoredProcedureParameter.ENTRY ); }
- | ID_newrdn { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModDNStoredProcedureParameter.NEW_RDN ); }
- | ID_deleteoldrdn { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModDNStoredProcedureParameter.DELETE_OLD_RDN ); }
- | ID_newSuperior { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModDNStoredProcedureParameter.NEW_SUPERIOR ); }
+ : ID_name { triggerStoredProcedureParameters.add( StoredProcedureParameter.Delete_NAME.instance() ); }
+ | ID_deletedEntry { triggerStoredProcedureParameters.add( StoredProcedureParameter.Delete_DELETED_ENTRY.instance() ); }
| genericStoredProcedureParameter
;
-compareStoredProcedureParameter
+modifyDNStoredProcedureParameter
{
- log.debug( "entered compareStoredProcedureParameter()" );
+ log.debug( "entered modifyDNStoredProcedureParameter()" );
}
- : ID_entry { triggerStoredProcedureParameters.add( StoredProcedureParameter.CompareStoredProcedureParameter.ENTRY ); }
- | ID_ava { triggerStoredProcedureParameters.add( StoredProcedureParameter.CompareStoredProcedureParameter.AVA ); }
- | genericStoredProcedureParameter
- ;
-
-abandonStoredProcedureParameter
-{
- log.debug( "entered abandonStoredProcedureParameter()" );
-}
- : ID_messageId { triggerStoredProcedureParameters.add( StoredProcedureParameter.AbandonStoredProcedureParameter.MESSAGE_ID ); }
- | genericStoredProcedureParameter
- ;
-
-extendedStoredProcedureParameter
-{
- log.debug( "entered extendedStoredProcedureParameter()" );
-}
- : ID_requestName { triggerStoredProcedureParameters.add( StoredProcedureParameter.ExtendedStoredProcedureParameter.REQUEST_NAME ); }
- | ID_requestValue { triggerStoredProcedureParameters.add( StoredProcedureParameter.ExtendedStoredProcedureParameter.REQUEST_VALUE ); }
+ : ID_entry { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyDN_ENTRY.instance() ); }
+ | ID_newrdn { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyDN_NEW_RDN.instance() ); }
+ | ID_deleteoldrdn { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyDN_DELETE_OLD_RDN.instance() ); }
+ | ID_newSuperior { triggerStoredProcedureParameters.add( StoredProcedureParameter.ModifyDN_NEW_SUPERIOR.instance() ); }
| genericStoredProcedureParameter
;
@@ -494,11 +312,19 @@
{
log.debug( "entered genericStoredProcedureParameter()" );
}
- : ID_operationTime { triggerStoredProcedureParameters.add( StoredProcedureParameter.OPERATION_TIME ); }
- | ID_operationPrincipal { triggerStoredProcedureParameters.add( StoredProcedureParameter.OPERATION_PRINCIPAL ); }
- | ID_rootDSE { triggerStoredProcedureParameters.add( StoredProcedureParameter.ROOT_DSE ); }
+ : ldapContextStoredProcedureParameter
+ | ID_operationPrincipal { triggerStoredProcedureParameters.add( StoredProcedureParameter.Generic_OPERATION_PRINCIPAL.instance() ); }
;
+ldapContextStoredProcedureParameter
+{
+ log.debug( "entered ldapContextStoredProcedureParameter()" );
+ LdapDN ldapContext = null;
+}
+ : ID_ldapContext ( SP )+ ldapContext=distinguishedName
+ { triggerStoredProcedureParameters.add( StoredProcedureParameter.Generic_LDAP_CONTEXT.instance( ldapContext ) ); }
+ ;
+
// -----------------------------------------------------------------------------
genericStoredProcedureOptionList
@@ -515,17 +341,17 @@
log.debug( "entered genericStoredProcedureOption()" );
StoredProcedureOption spOption = null;
}
- : ( spOption=storedProcedureLanguageOption | spOption=storedProcedureSearchContextOption )
+ : ( spOption=storedProcedureLanguageSchemeOption | spOption=storedProcedureSearchContextOption )
{ triggerStoredProcedureOptions.add( spOption ); }
;
-storedProcedureLanguageOption returns [ StoredProcedureLanguageOption spLanguageOption ]
+storedProcedureLanguageSchemeOption returns [ StoredProcedureLanguageSchemeOption spLanguageSchemeOption ]
{
- log.debug( "entered storedProcedureLanguageOption()" );
- spLanguageOption = null;
+ log.debug( "entered storedProcedureLanguageSchemeOption()" );
+ spLanguageSchemeOption = null;
}
- : ID_language ( SP )+ languageToken:UTF8String
- { spLanguageOption = new StoredProcedureLanguageOption( languageToken.getText() ); }
+ : ID_languageScheme ( SP )+ languageToken:UTF8String
+ { spLanguageSchemeOption = new StoredProcedureLanguageSchemeOption( languageToken.getText() ); }
;
storedProcedureSearchContextOption returns [ StoredProcedureSearchContextOption spSearchContextOption ]
@@ -624,39 +450,16 @@
tokens
{
// action time identifiers
- ID_BEFORE = "before";
ID_AFTER = "after";
- ID_INSTEADOF = "insteadof";
// operation identifiers
- ID_bind = "bind";
- ID_unbind = "unbind";
- ID_search = "search";
ID_modify = "modify";
ID_add = "add";
ID_delete = "delete";
- ID_modDN = "moddn";
- ID_compare = "compare";
- ID_abandon = "abandon";
- ID_extended = "extended";
-
- // bind specific parameters
- ID_version = "$version";
- ID_name = "$name";
- ID_authentication = "$authentication";
-
- // unbind specific parameters
- // there is non currently
-
- // search specific parameters
- ID_baseObject = "$baseobject";
- ID_scope = "$scope";
- ID_derefAliases = "$derefaliases";
- ID_sizeLimit = "$sizelimit";
- ID_timeLimit = "$timelimit";
- ID_typesOnly = "$typesonly";
- ID_filter = "$filter";
- ID_attributes = "$attributes";
+ ID_modifyDN = "modifydn";
+ ID_modifyDNRename = "rename";
+ ID_modifyDNExport = "export";
+ ID_modifyDNImport = "import";
// modify specific parameters
ID_object = "$object";
@@ -666,37 +469,25 @@
// add specific parameters
ID_entry = "$entry";
- // ID_attributes = "$attributes"; // defined before
+ ID_attributes = "$attributes";
// delete specific parameters
- // ID_name = "$name"; // defined before
+ ID_name = "$name";
ID_deletedEntry = "$deletedentry";
- // modDN specific parameters
+ // modifyDN specific parameters
// ID_entry = "$entry"; // defined before
ID_newrdn = "$newrdn";
ID_deleteoldrdn = "$deleteoldrdn";
ID_newSuperior = "$newsuperior";
- // compare specific parameters
- // ID_entry = "$entry"; // defined before
- ID_ava = "$ava";
-
- // abandon specific parameters
- ID_messageId = "$messageid";
-
- // extended specific parameters
- ID_requestName = "$requestname";
- ID_requestValue = "$requestvalue";
-
// generic parameters
- ID_operationTime = "$operationtime";
+ ID_ldapContext = "$ldapcontext";
ID_operationPrincipal = "$operationprincipal";
- ID_rootDSE = "$rootDSE";
ID_CALL = "call";
- ID_language = "language";
+ ID_languageScheme = "languagescheme";
ID_searchContext = "searchcontext";
ID_search_scope = "scope";
ID_scope_base = "base";
@@ -734,6 +525,8 @@
| '\n' { newline(); }
| '\r' ('\n')? { newline(); }
;
+
+DOT : '.' ;
UTF8String : '"'! ( SAFEUTF8CHAR )* '"'! ;
Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/ActionTime.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/ActionTime.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/ActionTime.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/ActionTime.java Tue Sep 5 12:35:34 2006
@@ -30,11 +30,11 @@
*/
public class ActionTime
{
- public static final ActionTime BEFORE = new ActionTime( "BEFORE" );
+ //public static final ActionTime BEFORE = new ActionTime( "BEFORE" );
public static final ActionTime AFTER = new ActionTime( "AFTER" );
- public static final ActionTime INSTEADOF = new ActionTime( "INSTEADOF" );
+ //public static final ActionTime INSTEADOF = new ActionTime( "INSTEADOF" );
private final String name;
Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/LdapOperation.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/LdapOperation.java?view=diff&rev=440458&r1=440457&r2=440458
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/LdapOperation.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/LdapOperation.java Tue Sep 5 12:35:34 2006
@@ -22,32 +22,26 @@
/**
- * An enumeration that represents all standard LDAP operations.
+ * An enumeration that represents change inducing LDAP operations.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev:$, $Date:$
*/
public class LdapOperation
{
- public static final LdapOperation BIND = new LdapOperation( "bind" );
+ public static final LdapOperation MODIFY = new LdapOperation( "Modify" );
- public static final LdapOperation UNBIND = new LdapOperation( "unbind" );
+ public static final LdapOperation ADD = new LdapOperation( "Add" );
- public static final LdapOperation SEARCH = new LdapOperation( "search" );
+ public static final LdapOperation DELETE = new LdapOperation( "Delete" );
- public static final LdapOperation MODIFY = new LdapOperation( "modify" );
-
- public static final LdapOperation ADD = new LdapOperation( "add" );
-
- public static final LdapOperation DELETE = new LdapOperation( "delete" );
-
- public static final LdapOperation MODDN = new LdapOperation( "moddn" );
-
- public static final LdapOperation COMPARE = new LdapOperation( "compare" );
+ public static final LdapOperation MODIFYDN = new LdapOperation( "ModifyDN" );
+
+ public static final LdapOperation MODIFYDN_RENAME = new LdapOperation( "ModifyDN.Rename" );
- public static final LdapOperation ABANDON = new LdapOperation( "abandon" );
+ public static final LdapOperation MODIFYDN_EXPORT = new LdapOperation( "ModifyDN.Export" );
- public static final LdapOperation EXTENDED = new LdapOperation( "extended" );
+ public static final LdapOperation MODIFYDN_IMPORT = new LdapOperation( "ModifyDN.Import" );
private final String name;
Copied: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageSchemeOption.java (from r440188, directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageOption.java)
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageSchemeOption.java?view=diff&rev=440458&p1=directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageOption.java&r1=440188&p2=directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageSchemeOption.java&r2=440458
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageOption.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/trigger/StoredProcedureLanguageSchemeOption.java Tue Sep 5 12:35:34 2006
@@ -26,12 +26,12 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev:$, $Date:$
*/
-public class StoredProcedureLanguageOption implements StoredProcedureOption
+public class StoredProcedureLanguageSchemeOption implements StoredProcedureOption
{
private String language;
- public StoredProcedureLanguageOption( String language )
+ public StoredProcedureLanguageSchemeOption( String language )
{
this.language = language;
}
@@ -72,7 +72,7 @@
return false;
if ( getClass() != obj.getClass() )
return false;
- final StoredProcedureLanguageOption other = ( StoredProcedureLanguageOption ) obj;
+ final StoredProcedureLanguageSchemeOption other = ( StoredProcedureLanguageSchemeOption ) obj;
if ( language == null )
{
if ( other.language != null )