You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/09/29 00:59:51 UTC

svn commit: r1002397 [1/2] - in /directory/apacheds/trunk: core-api/src/main/java/org/apache/directory/server/core/ core-api/src/main/java/org/apache/directory/server/core/administrative/ core/src/main/java/org/apache/directory/server/core/ core/src/ma...

Author: elecharny
Date: Tue Sep 28 22:59:49 2010
New Revision: 1002397

URL: http://svn.apache.org/viewvc?rev=1002397&view=rev
Log:
o Fixed the add and delete opertion for the AdminInterceptor
o Created 4 caches, one for each type of AP
o Added some mutex to protect the access to AP caches
o Redesigned the AP class hierarchy, creating the missing objects


Added:
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlIAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlSAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeIAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeSAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaSAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionIAP.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionSAP.java
    directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/admin/AdministrativePointModifyDelIT.java
      - copied, changed from r1000236, directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/admin/AdministrativePointDelIT.java
Removed:
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/InnerAdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SpecificAdministrativePoint.java
Modified:
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/LdapCoreSessionConnection.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AbstractAdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AdministrativePoint.java
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AutonomousAdministrativePoint.java
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
    directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/admin/AdministrativePointInterceptor.java
    directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/admin/AdministrativePointPersistentIT.java

Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java?rev=1002397&r1=1002396&r2=1002397&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java Tue Sep 28 22:59:49 2010
@@ -24,7 +24,10 @@ import java.io.File;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.directory.server.core.administrative.AdministrativePoint;
+import org.apache.directory.server.core.administrative.AccessControlAdministrativePoint;
+import org.apache.directory.server.core.administrative.CollectiveAttributeAdministrativePoint;
+import org.apache.directory.server.core.administrative.SubschemaAdministrativePoint;
+import org.apache.directory.server.core.administrative.TriggerExecutionAdministrativePoint;
 import org.apache.directory.server.core.changelog.ChangeLog;
 import org.apache.directory.server.core.entry.ServerEntryFactory;
 import org.apache.directory.server.core.event.EventService;
@@ -529,7 +532,25 @@ public interface DirectoryService extend
     
 
     /**
-     * @return The AdministrativePoint cache
+     * @return The AccessControl AdministrativePoint cache
      */
-    DnNode<List<AdministrativePoint>> getAdministrativePoints();
+    DnNode<AccessControlAdministrativePoint> getAccessControlAPCache();
+
+
+    /**
+     * @return The CollectiveAttribute AdministrativePoint cache
+     */
+    DnNode<CollectiveAttributeAdministrativePoint> getCollectiveAttributeAPCache();
+
+
+    /**
+     * @return The Subschema AdministrativePoint cache
+     */
+    DnNode<SubschemaAdministrativePoint> getSubschemaAPCache();
+
+
+    /**
+     * @return The TriggerExecution AdministrativePoint cache
+     */
+    DnNode<TriggerExecutionAdministrativePoint> getTriggerExecutionAPCache();
 }

Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/LdapCoreSessionConnection.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/LdapCoreSessionConnection.java?rev=1002397&r1=1002396&r2=1002397&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/LdapCoreSessionConnection.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/LdapCoreSessionConnection.java Tue Sep 28 22:59:49 2010
@@ -710,6 +710,7 @@ public class LdapCoreSessionConnection i
         try
         {
             DN newRdn = null;
+
             if ( modDnRequest.getNewRdn() != null )
             {
                 newRdn = new DN( modDnRequest.getNewRdn().getName(), schemaManager );

Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AbstractAdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AbstractAdministrativePoint.java?rev=1002397&r1=1002396&r2=1002397&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AbstractAdministrativePoint.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AbstractAdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -50,6 +50,9 @@ public abstract class AbstractAdministra
     protected Map<String, AdministrativePoint> children;
 
 
+    /**
+     * Creates a new instance of AbstractAdministrativePoint.
+     */
     protected AbstractAdministrativePoint( DN dn, String uuid, AdministrativeRole role )
     {
         this.dn = dn;
@@ -91,6 +94,7 @@ public abstract class AbstractAdministra
      */
     public boolean isAutonomous()
     {
+        // Default to false
         return false;
     }
 
@@ -98,19 +102,13 @@ public abstract class AbstractAdministra
     /**
      * {@inheritDoc}
      */
-    public boolean isInner()
-    {
-        return false;
-    }
+    public abstract boolean isInner();
 
 
     /**
      * {@inheritDoc}
      */
-    public boolean isSpecific()
-    {
-        return false;
-    }
+    public abstract boolean isSpecific();
 
 
     /**

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,91 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * An class used to create an AccessControl AAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class AccessControlAAP extends AccessControlAdministrativePoint
+{
+    /**
+     * Create an instance of AccessControl AdministrativePoint
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public AccessControlAAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.AccessControlSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public AdministrativePoint getParent()
+    {
+        return parent;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAutonomous()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "AccessControl AAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAdministrativePoint.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAdministrativePoint.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlAdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,46 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * An abstract class used for AccessControl APs
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public abstract class AccessControlAdministrativePoint extends AbstractAdministrativePoint
+{
+
+    /**
+     * Create an instance of AccessControlAdministrativePoint
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     * @param role The AdministrativePoint role
+     */
+    protected AccessControlAdministrativePoint( DN dn, String uuid, AdministrativeRole role )
+    {
+        super( dn, uuid, role );
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlIAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlIAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlIAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlIAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,73 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create an AccessControl IAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class AccessControlIAP extends AccessControlAdministrativePoint
+{
+    /**
+     * Create an instance of AccessControl IAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public AccessControlIAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.AccessControlInnerArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "AccessControl IAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlSAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlSAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlSAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AccessControlSAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,83 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * An class used to create AccessControl SAPs
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class AccessControlSAP extends AccessControlAdministrativePoint
+{
+
+    /**
+     * Create an instance of AccessControl AdministrativePoint
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public AccessControlSAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.AccessControlSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public AdministrativePoint getParent()
+    {
+        return parent;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "AccessControl SAP : " + super.toString();
+    }
+}

Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AdministrativePoint.java?rev=1002397&r1=1002396&r2=1002397&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AdministrativePoint.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -49,18 +49,24 @@ public interface AdministrativePoint
 
 
     /**
+     * Tells if the AdministrativePoint defines an autonomous area
+     * 
      * @return true if the AdministrativePoint is an AutonomousArea
      */
     boolean isAutonomous();
 
 
     /**
+     * Tells if the AdministrativePoint defines a inner area
+     * 
      * @return true if the AdministrativePoint is an InnerArea
      */
     boolean isInner();
 
 
     /**
+     * Tells if the AdministrativePoint defines a specific area
+     * 
      * @return true if the AdministrativePoint is a SpecificArea
      */
     boolean isSpecific();

Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AutonomousAdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AutonomousAdministrativePoint.java?rev=1002397&r1=1002396&r2=1002397&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AutonomousAdministrativePoint.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/AutonomousAdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -30,17 +30,17 @@ import org.apache.directory.shared.ldap.
  */
 public class AutonomousAdministrativePoint extends AbstractAdministrativePoint
 {
-    /** A pointer to the AccessControl SAP, if there is some */
-    private AdministrativePoint accessControlSapParent;
+    /** A pointer to the AccessControl SAP */
+    private AccessControlAdministrativePoint accessControlSap;
 
-    /** A pointer to the CollectiveAttribute SAP, if there is some */
-    private AdministrativePoint collectiveAttributeSapParent;
+    /** A pointer to the CollectiveAttribute SAP */
+    private CollectiveAttributeAdministrativePoint collectiveAttributeSap;
 
-    /** A pointer to the TriggerExecution SAP, if there is some */
-    private AdministrativePoint triggerExecutionSapParent;
+    /** A pointer to the TriggerExecution SAP */
+    private TriggerExecutionAdministrativePoint triggerExecutionSap;
 
-    /** A pointer to the Subschema SAP, if there is some */
-    private AdministrativePoint subschemaSapParent;
+    /** A pointer to the Subschema SAP */
+    private SubschemaAdministrativePoint subschemaSap;
 
     /**
      * Create an instance of AutonomousAdministrativePoint
@@ -64,82 +64,100 @@ public class AutonomousAdministrativePoi
 
 
     /**
+     * {@inheritDoc}
+     */
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
      * @return The parent AccessControl SAP if there is some, or the parent AAP
      */
-    public AdministrativePoint getAccessControlParent()
+    public AdministrativePoint getAccessControlSap()
     {
-        return accessControlSapParent;
+        return accessControlSap;
     }
 
 
     /**
-     * Set the AccessControl SAP parent (can be an AAP)
+     * Set the AccessControl SAP (can be an AAP)
      *
-     * @param accessControlSapParent The AccessControl SAP parent
+     * @param accessControlSap The AccessControl SAP
      */
-    public void setAccessControlParent( AdministrativePoint accessControlSapParent )
+    public void setAccessControlSap( AccessControlAdministrativePoint accessControlSap )
     {
-        this.accessControlSapParent = accessControlSapParent;
+        this.accessControlSap = accessControlSap;
     }
 
 
     /**
-     * @return The parent CollectiveAttribute SAP if there is some, or the parent AAP
+     * @return The CollectiveAttribute SAP
      */
-    public AdministrativePoint getCollectiveAttributeParent()
+    public AdministrativePoint getCollectiveAttribute()
     {
-        return collectiveAttributeSapParent;
+        return collectiveAttributeSap;
     }
 
 
     /**
-     * Set the CollectiveAttribute SAP parent (can be an AAP)
+     * Set the CollectiveAttribute SAP
      *
-     * @param collectiveAttributeSapParent The CollectiveAttribute SAP parent
+     * @param collectiveAttributeSap The CollectiveAttribute SAP
      */
-    public void setCollectiveAttributeParent( AdministrativePoint collectiveAttributeSapParent )
+    public void setCollectiveAttribute( CollectiveAttributeAdministrativePoint collectiveAttributeSap )
     {
-        this.collectiveAttributeSapParent = collectiveAttributeSapParent;
+        this.collectiveAttributeSap = collectiveAttributeSap;
     }
 
 
     /**
-     * @return The parent TriggerExecution SAP if there is some, or the parent AAP
+     * @return The TriggerExecution SAP
      */
-    public AdministrativePoint getTriggerExecutionParent()
+    public AdministrativePoint getTriggerExecution()
     {
-        return triggerExecutionSapParent;
+        return triggerExecutionSap;
     }
 
 
     /**
-     * Set the TriggerExecution SAP parent (can be an AAP)
+     * Set the TriggerExecution SAP
      *
-     * @param triggerExecutionSapParent The TriggerExecution SAP parent
+     * @param triggerExecutionSap The TriggerExecution SAP
      */
-    public void setTriggerExecutionParent( AdministrativePoint triggerExecutionSapParent )
+    public void setTriggerExecutionParent( TriggerExecutionAdministrativePoint triggerExecutionSap )
     {
-        this.triggerExecutionSapParent = triggerExecutionSapParent;
+        this.triggerExecutionSap = triggerExecutionSap;
     }
 
 
     /**
-     * @return The parent Subschema SAP if there is some, or the parent AAP
+     * @return The Subschema SAP
      */
-    public AdministrativePoint getSubschemaParent()
+    public AdministrativePoint getSubschema()
     {
-        return subschemaSapParent;
+        return subschemaSap;
     }
 
 
     /**
-     * Set the Subschema SAP parent (can be an AAP)
+     * Set the Subschema SAP
      *
-     * @param subschemaSapParent The Subschema SAP parent
+     * @param subschemaSap The Subschema SAP
      */
-    public void setSubschemaParent( AdministrativePoint subschemaSapParent )
+    public void setSubschema( SubschemaAdministrativePoint subschemaSap )
     {
-        this.subschemaSapParent = subschemaSapParent;
+        this.subschemaSap = subschemaSap;
     }
 
 

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,82 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a CollectiveAttribute AAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CollectiveAttributeAAP extends CollectiveAttributeAdministrativePoint
+{
+    /**
+     * Create an instance of CollectiveAttribute AAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public CollectiveAttributeAAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.CollectiveAttributeSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAutonomous()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "CollectiveAttribute AAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAdministrativePoint.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAdministrativePoint.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeAdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,46 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * An abstract class used for CollectiveAttribute APs
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public abstract class CollectiveAttributeAdministrativePoint extends AbstractAdministrativePoint
+{
+
+    /**
+     * Create an instance of CollectiveAttributeAdministrativePoint
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     * @param role The AdministrativePoint role
+     */
+    protected CollectiveAttributeAdministrativePoint( DN dn, String uuid, AdministrativeRole role )
+    {
+        super( dn, uuid, role );
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeIAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeIAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeIAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeIAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,73 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a CollectiveAttribute IAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CollectiveAttributeIAP extends CollectiveAttributeAdministrativePoint
+{
+    /**
+     * Create an instance of CollectiveAttribute IAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public CollectiveAttributeIAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.CollectiveAttributeInnerArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "CollectiveAttribute IAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeSAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeSAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeSAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/CollectiveAttributeSAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,73 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a CollectiveAttribute SAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CollectiveAttributeSAP extends CollectiveAttributeAdministrativePoint
+{
+    /**
+     * Create an instance of CollectiveAttribute SAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public CollectiveAttributeSAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.CollectiveAttributeSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "CollectiveAttribute SAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,82 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a Subschema AAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SubschemaAAP extends SubschemaAdministrativePoint
+{
+    /**
+     * Create an instance of Subschema AAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public SubschemaAAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.SubSchemaSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAutonomous()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "Subschema AAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAdministrativePoint.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAdministrativePoint.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaAdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,46 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * An abstract class used for Subschema APs
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public abstract class SubschemaAdministrativePoint extends AbstractAdministrativePoint
+{
+
+    /**
+     * Create an instance of Subschema AdministrativePoint
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     * @param role The AdministrativePoint role
+     */
+    protected SubschemaAdministrativePoint( DN dn, String uuid, AdministrativeRole role )
+    {
+        super( dn, uuid, role );
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaSAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaSAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaSAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/SubschemaSAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,73 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a Subschema SAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SubschemaSAP extends SubschemaAdministrativePoint
+{
+    /**
+     * Create an instance of Subschema SAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public SubschemaSAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.SubSchemaSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "Subschema SAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,82 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a TriggerExecution AAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TriggerExecutionAAP extends TriggerExecutionAdministrativePoint
+{
+    /**
+     * Create an instance of TriggerExecution AAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public TriggerExecutionAAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.TriggerExecutionSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAutonomous()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "TriggerExecution AAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAdministrativePoint.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAdministrativePoint.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAdministrativePoint.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionAdministrativePoint.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,46 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * An abstract class used for TriggerExecution APs
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public abstract class TriggerExecutionAdministrativePoint extends AbstractAdministrativePoint
+{
+
+    /**
+     * Create an instance of TriggerExecutionAdministrativePoint
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     * @param role The AdministrativePoint role
+     */
+    protected TriggerExecutionAdministrativePoint( DN dn, String uuid, AdministrativeRole role )
+    {
+        super( dn, uuid, role );
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionIAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionIAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionIAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionIAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,73 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a TriggerExecution IAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TriggerExecutionIAP extends TriggerExecutionAdministrativePoint
+{
+    /**
+     * Create an instance of TriggerExecution IAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public TriggerExecutionIAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.TriggerExecutionInnerArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "TriggerExecution IAP : " + super.toString();
+    }
+}

Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionSAP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionSAP.java?rev=1002397&view=auto
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionSAP.java (added)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/administrative/TriggerExecutionSAP.java Tue Sep 28 22:59:49 2010
@@ -0,0 +1,73 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+package org.apache.directory.server.core.administrative;
+
+
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.subtree.AdministrativeRole;
+
+
+/**
+ * A class used to create a TriggerExecution SAP
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TriggerExecutionSAP extends TriggerExecutionAdministrativePoint
+{
+    /**
+     * Create an instance of TriggerExecution SAP
+     *
+     * @param dn The AdministrativePoint DN
+     * @param uuid The AdministrativePoint UUID
+     */
+    public TriggerExecutionSAP( DN dn, String uuid )
+    {
+        super( dn, uuid, AdministrativeRole.TriggerExecutionSpecificArea );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSpecific()
+    {
+        return true;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isInner()
+    {
+        return false;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return "TriggerExecution SAP : " + super.toString();
+    }
+}

Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=1002397&r1=1002396&r2=1002397&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Tue Sep 28 22:59:49 2010
@@ -39,7 +39,10 @@ import javax.naming.directory.Attributes
 
 import org.apache.directory.server.constants.ServerDNConstants;
 import org.apache.directory.server.core.admin.AdministrativePointInterceptor;
-import org.apache.directory.server.core.administrative.AdministrativePoint;
+import org.apache.directory.server.core.administrative.AccessControlAdministrativePoint;
+import org.apache.directory.server.core.administrative.CollectiveAttributeAdministrativePoint;
+import org.apache.directory.server.core.administrative.SubschemaAdministrativePoint;
+import org.apache.directory.server.core.administrative.TriggerExecutionAdministrativePoint;
 import org.apache.directory.server.core.authn.AuthenticationInterceptor;
 import org.apache.directory.server.core.authz.AciAuthorizationInterceptor;
 import org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor;
@@ -245,8 +248,17 @@ public class DefaultDirectoryService imp
     /** the ehcache based cache service */
     private CacheService cacheService;
 
-    /** The AdministrativePoint cache */
-    private DnNode<List<AdministrativePoint>> adminPointCache;
+    /** The AccessControl AdministrativePoint cache */
+    private DnNode<AccessControlAdministrativePoint> accessControlAPCache;
+
+    /** The CollectiveAttribute AdministrativePoint cache */
+    private DnNode<CollectiveAttributeAdministrativePoint> collectiveAttributeAPCache;
+
+    /** The Subschema AdministrativePoint cache */
+    private DnNode<SubschemaAdministrativePoint> subschemaAPCache;
+
+    /** The TriggerExecution AdministrativePoint cache */
+    private DnNode<TriggerExecutionAdministrativePoint> triggerExecutionAPCache;
 
     /**
      * The synchronizer thread. It flush data on disk periodically.
@@ -1428,8 +1440,11 @@ public class DefaultDirectoryService imp
         cacheService = new CacheService();
         cacheService.initialize( this );
 
-        // Initialize the AP cache
-        adminPointCache = new DnNode<List<AdministrativePoint>>();
+        // Initialize the AP caches
+        accessControlAPCache = new DnNode<AccessControlAdministrativePoint>();
+        collectiveAttributeAPCache = new DnNode<CollectiveAttributeAdministrativePoint>();
+        subschemaAPCache = new DnNode<SubschemaAdministrativePoint>();
+        triggerExecutionAPCache = new DnNode<TriggerExecutionAdministrativePoint>();
 
         DNFactory.initialize( this );
 
@@ -1793,10 +1808,37 @@ public class DefaultDirectoryService imp
 
 
     /**
-     * @return The AdministrativePoint cache
+     * {@inheritDoc}
+     */
+    public DnNode<AccessControlAdministrativePoint> getAccessControlAPCache()
+    {
+        return accessControlAPCache;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public DnNode<CollectiveAttributeAdministrativePoint> getCollectiveAttributeAPCache()
+    {
+        return collectiveAttributeAPCache;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public DnNode<SubschemaAdministrativePoint> getSubschemaAPCache()
+    {
+        return subschemaAPCache;
+    }
+
+
+    /**
+     * {@inheritDoc}
      */
-    public DnNode<List<AdministrativePoint>> getAdministrativePoints()
+    public DnNode<TriggerExecutionAdministrativePoint> getTriggerExecutionAPCache()
     {
-        return adminPointCache;
+        return triggerExecutionAPCache;
     }
 }
\ No newline at end of file