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/05/09 07:52:55 UTC
svn commit: r405313 -
/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/
Author: ersiner
Date: Mon May 8 22:52:54 2006
New Revision: 405313
URL: http://svn.apache.org/viewcvs?rev=405313&view=rev
Log:
Got rid of System.out.println()s (This is the main purpose of this commit.)
Added some SP parameter injection stuff. (This may change later.)
Added:
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/AddDeleteStoredProcedureParameterInjector.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/StoredProcedureParameterInjector.java
Modified:
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
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java?rev=405313&view=auto
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AbstractStoredProcedureParameterInjector.java Mon May 8 22:52:54 2006
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.directory.server.core.trigger;
+
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.Name;
+import javax.naming.NameParser;
+import javax.naming.NamingException;
+
+import org.apache.directory.server.core.invocation.Invocation;
+import org.apache.directory.server.core.jndi.ServerContext;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
+
+public abstract class AbstractStoredProcedureParameterInjector implements StoredProcedureParameterInjector
+{
+ private Invocation invocation;
+ private NameParser nameParser;
+ private Map injectors;
+
+ public AbstractStoredProcedureParameterInjector()
+ {
+ injectors = new HashMap();
+ injectors.put( StoredProcedureParameter.OPERATION_PRINCIPAL, $operationPrincipalInjector );
+ injectors.put( StoredProcedureParameter.OPERATION_TIME, $operationTimeInjector );
+ }
+
+ protected Name getOperationPrincipal() throws NamingException
+ {
+ Principal principal = ( ( ServerContext ) invocation.getCaller() ).getPrincipal();
+ Name userName = nameParser.parse( principal.getName() );
+ return userName;
+ }
+
+ protected Date getOperationTime()
+ {
+ return new Date();
+ }
+
+ protected Map getInjectors()
+ {
+ return injectors;
+ }
+
+ public Invocation getInvocation()
+ {
+ return invocation;
+ }
+
+ public NameParser getNameParser()
+ {
+ return nameParser;
+ }
+
+ public void setInvocation( Invocation invocation )
+ {
+ this.invocation = invocation;
+ }
+
+ public void setNameParser( NameParser nameParser )
+ {
+ this.nameParser = nameParser;
+ }
+
+
+ public final List getArgumentsToInject( List parameterList )
+ {
+ List arguments = new ArrayList();
+
+ Iterator it = parameterList.iterator();
+ while ( it.hasNext() )
+ {
+ StoredProcedureParameter spParameter = ( StoredProcedureParameter ) it.next();
+ arguments.add( injectors.get( spParameter ) );
+ }
+
+ return arguments;
+ }
+
+ MicroInjector $operationPrincipalInjector = new MicroInjector()
+ {
+ public Object inject() throws NamingException
+ {
+ return getOperationPrincipal();
+ };
+ };
+
+ MicroInjector $operationTimeInjector = new MicroInjector()
+ {
+ public Object inject() throws NamingException
+ {
+ return getOperationTime();
+ };
+ };
+
+
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddDeleteStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddDeleteStoredProcedureParameterInjector.java?rev=405313&view=auto
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddDeleteStoredProcedureParameterInjector.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/AddDeleteStoredProcedureParameterInjector.java Mon May 8 22:52:54 2006
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.directory.server.core.trigger;
+
+import java.util.Map;
+
+import javax.naming.Name;
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter.AddStoredProcedureParameter;
+
+public class AddDeleteStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
+{
+ private Name addedEntryName;
+ private Attributes addedEntry;
+
+ private Map injectors;
+
+ public AddDeleteStoredProcedureParameterInjector()
+ {
+ injectors = super.getInjectors();
+ injectors.put( AddStoredProcedureParameter.ENTRY, $entryInjector );
+ injectors.put( AddStoredProcedureParameter.ATTRIBUTES, $attributesInjector );
+ }
+
+ public void setAddedEntryName( Name addedEntryName )
+ {
+ this.addedEntryName = addedEntryName;
+ }
+
+ public Name getAddedEntryName()
+ {
+ return addedEntryName;
+ }
+
+ public Attributes getAddedEntry()
+ {
+ return addedEntry;
+ }
+
+ public void setAddedEntry( Attributes addedEntry )
+ {
+ this.addedEntry = addedEntry;
+ }
+
+ MicroInjector $entryInjector = new MicroInjector()
+ {
+ public Object inject() throws NamingException
+ {
+ return addedEntryName;
+ };
+ };
+
+ MicroInjector $attributesInjector = new MicroInjector()
+ {
+ public Object inject() throws NamingException
+ {
+ return addedEntry;
+ };
+ };
+
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java?rev=405313&view=auto
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/DeleteStoredProcedureParameterInjector.java Mon May 8 22:52:54 2006
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.directory.server.core.trigger;
+
+import java.util.Map;
+
+import javax.naming.Name;
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
+import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter.DeleteStoredProcedureParameter;
+
+public class DeleteStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
+{
+ private Name deletedEntryName;
+
+ private Map injectors;
+
+ public DeleteStoredProcedureParameterInjector()
+ {
+ injectors = super.getInjectors();
+ injectors.put( DeleteStoredProcedureParameter.NAME, $nameInjector );
+ injectors.put( DeleteStoredProcedureParameter.DELETED_ENTRY, $deletedEntryInjector );
+ }
+
+ public void setDeletedEntryName( Name deletedEntryName )
+ {
+ this.deletedEntryName = deletedEntryName;
+ }
+
+ MicroInjector $nameInjector = new MicroInjector()
+ {
+ public Object inject() throws NamingException
+ {
+ return deletedEntryName;
+ };
+ };
+
+ MicroInjector $deletedEntryInjector = new MicroInjector()
+ {
+ public Object inject() throws NamingException
+ {
+ DirectoryPartitionNexusProxy proxy = getInvocation().getProxy();
+ Attributes deletedEntry = proxy.lookup( deletedEntryName, DirectoryPartitionNexusProxy.LOOKUP_BYPASS );
+ return deletedEntry;
+ };
+ };
+
+}
Added: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java?rev=405313&view=auto
==============================================================================
--- directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java (added)
+++ directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java Mon May 8 22:52:54 2006
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.directory.server.core.trigger;
+
+import java.util.List;
+
+import javax.naming.NamingException;
+
+public interface StoredProcedureParameterInjector
+{
+ List getArgumentsToInject( List parameterList );
+
+ public interface MicroInjector
+ {
+ Object inject() throws NamingException;
+ }
+}
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerService.java?rev=405313&r1=405312&r2=405313&view=diff
==============================================================================
--- 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 Mon May 8 22:52:54 2006
@@ -14,6 +14,7 @@
* limitations under the License.
*
*/
+
package org.apache.directory.server.core.trigger;
@@ -21,14 +22,12 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Set;
+import java.util.Map.Entry;
import javax.naming.Name;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
@@ -42,11 +41,9 @@
import org.apache.directory.server.core.invocation.Invocation;
import org.apache.directory.server.core.invocation.InvocationStack;
import org.apache.directory.server.core.jndi.ServerContext;
-import org.apache.directory.server.core.partition.DirectoryPartitionNexus;
import org.apache.directory.server.core.partition.DirectoryPartitionNexusProxy;
import org.apache.directory.server.core.schema.AttributeTypeRegistry;
import org.apache.directory.server.core.schema.ConcreteNameComponentNormalizer;
-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.DnParser;
@@ -105,9 +102,10 @@
* @param entry the target entry that is considered as the trigger source
* @throws NamingException if there are problems accessing attribute values
*/
- private void addPrescriptiveTriggerSpecs( DirectoryPartitionNexusProxy proxy, Collection triggerSpecs,
+ private void addPrescriptiveTriggerSpecs( List triggerSpecs, DirectoryPartitionNexusProxy proxy,
Name dn, Attributes entry ) throws NamingException
{
+
/*
* If the protected entry is a subentry, then the entry being evaluated
* for perscriptiveTriggerss is in fact the administrative entry. By
@@ -173,6 +171,62 @@
}
}
+ public Map getActionTimeMappedTriggerSpecsForOperation( List triggerSpecs, LdapOperation ldapOperation )
+ {
+ List beforeTriggerSpecs = new ArrayList();
+ List insteadofTriggerSpecs = new ArrayList();
+ List afterTriggerSpecs = new ArrayList();
+ Map triggerSpecMap = new HashMap();
+
+ Iterator it = triggerSpecs.iterator();
+ while ( it.hasNext() )
+ {
+ 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 ) )
+ {
+ afterTriggerSpecs.add( triggerSpec );
+ }
+ else
+ {
+ // TODO
+ }
+ }
+ }
+
+ triggerSpecMap.put( ActionTime.BEFORE, beforeTriggerSpecs );
+ triggerSpecMap.put( ActionTime.INSTEADOF, insteadofTriggerSpecs );
+ triggerSpecMap.put( ActionTime.AFTER, afterTriggerSpecs );
+
+ return triggerSpecMap;
+ }
+
+ /*private Map getActionTimeMappedStoredProcedures( Map triggerMap )
+ {
+ Map spMap = new HashMap();
+
+ Iterator it = triggerMap.entrySet().iterator();
+ while ( it.hasNext() )
+ {
+ Map.Entry entry = ( Entry ) it.next();
+ List triggerSpecs = ( List ) entry.getValue();
+ Iterator it = triggerSpecs.iterator();
+ while ( it.hasNext() )
+ {
+
+ }
+ }
+ }*/
+
/**
* Initializes this interceptor based service by getting a handle on the nexus.
@@ -215,45 +269,6 @@
triggerSpecCache.subentryAdded( normName, entry );
}
-
- public Map getActionTimeMappedTriggerSpecs( List triggerSpecs, LdapOperation ldapOperation )
- {
- List beforeTriggerSpecs = new ArrayList();
- List insteadofTriggerSpecs = new ArrayList();
- List afterTriggerSpecs = new ArrayList();
- Map triggerSpecMap = new HashMap();
-
- Iterator it = triggerSpecs.iterator();
- while ( it.hasNext() )
- {
- 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 ) )
- {
- afterTriggerSpecs.add( triggerSpec );
- }
- else
- {
- // TODO
- }
- }
- }
-
- triggerSpecMap.put( ActionTime.BEFORE, beforeTriggerSpecs );
- triggerSpecMap.put( ActionTime.INSTEADOF, insteadofTriggerSpecs );
- triggerSpecMap.put( ActionTime.AFTER, afterTriggerSpecs );
-
- return triggerSpecMap;
- }
public void delete( NextInterceptor next, Name name ) throws NamingException
@@ -273,17 +288,19 @@
}
List triggerSpecs = new ArrayList();
- addPrescriptiveTriggerSpecs( proxy, triggerSpecs, name, entry );
+ addPrescriptiveTriggerSpecs( triggerSpecs, proxy, name, entry );
addEntryTriggerSpecs( triggerSpecs, entry );
- Map triggerMap = getActionTimeMappedTriggerSpecs( triggerSpecs, LdapOperation.DELETE );
+ Map triggerMap = getActionTimeMappedTriggerSpecsForOperation( triggerSpecs, LdapOperation.DELETE );
+ // Map spMap = getActionTimeMappedStoredProcedures( triggerMap );
+
List beforeTriggerSpecs = (List) triggerMap.get( ActionTime.BEFORE );
- System.out.println( "There are " + beforeTriggerSpecs.size() + " \"BEFORE delete\" triggers associated with this entry [" + name + "] being deleted:" );
- System.out.println( ">>> " + beforeTriggerSpecs );
+ log.debug( "There are " + beforeTriggerSpecs.size() + " \"BEFORE delete\" triggers associated with this entry [" + name + "] being deleted:" );
+ log.debug( ">>> " + beforeTriggerSpecs );
List insteadofTriggerSpecs = (List) triggerMap.get( ActionTime.INSTEADOF );
- System.out.println( "There are " + insteadofTriggerSpecs.size() + " \"INSTEADOF delete\" triggers associated with this entry [" + name + "] being deleted:" );
- System.out.println( ">>> " + insteadofTriggerSpecs );
+ log.debug( "There are " + insteadofTriggerSpecs.size() + " \"INSTEADOF delete\" triggers associated with this entry [" + name + "] being deleted:" );
+ log.debug( ">>> " + insteadofTriggerSpecs );
if ( insteadofTriggerSpecs.size() == 0 )
{
@@ -293,13 +310,12 @@
}
else
{
- System.out.println ("Delete operation has not been performed due to the INSTEADOF trigger(s).");
+ log.debug("Delete operation has not been performed due to the INSTEADOF trigger(s).");
}
List afterTriggerSpecs = (List) triggerMap.get( ActionTime.AFTER );
- System.out.println( "There are " + afterTriggerSpecs.size() + " \"AFTER delete\" triggers associated with this entry [" + name + "] being deleted:" );
- System.out.println( ">>> " + afterTriggerSpecs );
- System.out.println();
+ log.debug( "There are " + afterTriggerSpecs.size() + " \"AFTER delete\" triggers associated with this entry [" + name + "] being deleted:" );
+ log.debug( ">>> " + afterTriggerSpecs );
}
}
Modified: directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java
URL: http://svn.apache.org/viewcvs/directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java?rev=405313&r1=405312&r2=405313&view=diff
==============================================================================
--- 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 Mon May 8 22:52:54 2006
@@ -14,6 +14,7 @@
* limitations under the License.
*
*/
+
package org.apache.directory.server.core.trigger;