You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/08/21 08:00:33 UTC

svn commit: r433161 - in /directory/trunks/apacheds: core-unit/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceITest.java core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java

Author: akarasulu
Date: Sun Aug 20 23:00:32 2006
New Revision: 433161

URL: http://svn.apache.org/viewvc?rev=433161&view=rev
Log:
fix for DIRSERVER-708: The SubentryService does not inject correct values for subentry operational attributes

Modified:
    directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceITest.java
    directory/trunks/apacheds/core/src/main/java/org/apache/directory/server/core/subtree/SubentryService.java

Modified: directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceITest.java
URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceITest.java?rev=433161&r1=433160&r2=433161&view=diff
==============================================================================
--- directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceITest.java (original)
+++ directory/trunks/apacheds/core-unit/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceITest.java Sun Aug 20 23:00:32 2006
@@ -147,7 +147,6 @@
     
     public void testTrackingOfSubentryOperationals() throws NamingException
     {
-        /*
         addAdministrativeRoles();        
         super.sysRoot.createSubcontext( "cn=collectiveAttributeTestSubentry", 
             getCollectiveAttributeTestSubentry( "collectiveAttributeTestSubentry" ) );
@@ -181,7 +180,6 @@
             accessControlSubentries.contains( "2.5.4.3=collectiveattributetestsubentry,2.5.4.11=system" ) );
         
         assertEquals( 1, accessControlSubentries.size() );
-        */
     }
     
 }

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?rev=433161&r1=433160&r2=433161&view=diff
==============================================================================
--- 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 Sun Aug 20 23:00:32 2006
@@ -77,22 +77,27 @@
 
     public static final String AUTONOUMOUS_AREA = "autonomousArea";
     public static final String AUTONOUMOUS_AREA_SUBENTRY = "autonomousAreaSubentry";
+    private static final Object AUTONOUMOUS_AREA_SUBENTRY_OC = "autonomousAreaSubentry";
 
     public static final String AC_AREA = "accessControlSpecificArea";
     public static final String AC_INNERAREA = "accessControlInnerArea";
     public static final String AC_SUBENTRY = "accessControlSubentries";
+    private static final String AC_SUBENTRY_OC = "accessControlSubentry";
 
     public static final String SCHEMA_AREA = "subschemaAdminSpecificArea";
     public static final String SCHEMA_AREA_SUBENTRY = "subschemaSubentry";
+    private static final String SCHEMA_SUBENTRY_OC = "subschema";
 
     public static final String COLLECTIVE_AREA = "collectiveAttributeSpecificArea";
     public static final String COLLECTIVE_INNERAREA = "collectiveAttributeInnerArea";
     public static final String COLLECTIVE_ATTRIBUTE_SUBENTRIES = "collectiveAttributeSubentries";
+    public static final String COLLECTIVE_SUBENTRY_OC = "collectiveAttributeSubentry";
     
     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[] SUBENTRY_OPATTRS =
         { AUTONOUMOUS_AREA_SUBENTRY, AC_SUBENTRY, SCHEMA_AREA_SUBENTRY, COLLECTIVE_ATTRIBUTE_SUBENTRIES, TRIGGER_SUBENTRIES };
 
@@ -186,24 +191,24 @@
                 ResultCodeEnum.OBJECTCLASSVIOLATION );
         }
         
-        if ( oc.contains( AUTONOUMOUS_AREA ) )
+        if ( oc.contains( AUTONOUMOUS_AREA_SUBENTRY_OC ) )
         {
-            types &= Subentry.AUTONOMOUS_AREA_SUBENTRY;
+            types |= Subentry.AUTONOMOUS_AREA_SUBENTRY;
         }
         
-        if ( oc.contains( AC_AREA ) || oc.contains( AC_INNERAREA ) )
+        if ( oc.contains( AC_SUBENTRY_OC ) )
         {
-            types &= Subentry.ACCESS_CONTROL_SUBENTRY;
+            types |= Subentry.ACCESS_CONTROL_SUBENTRY;
         }
         
-        if ( oc.contains( SCHEMA_AREA ) )
+        if ( oc.contains( SCHEMA_SUBENTRY_OC ) )
         {
-            types &= Subentry.SCHEMA_SUBENTRY;
+            types |= Subentry.SCHEMA_SUBENTRY;
         }
         
-        if ( oc.contains( COLLECTIVE_AREA ) )
+        if ( oc.contains( COLLECTIVE_SUBENTRY_OC ) )
         {
-            types &= Subentry.COLLECTIVE_SUBENTRY;
+            types |= Subentry.COLLECTIVE_SUBENTRY;
         }
         
         return types;
@@ -478,7 +483,8 @@
                 LdapDN subentryDn = new LdapDN( subentryDnStr );
                 LdapDN apDn = ( LdapDN ) subentryDn.clone();
                 apDn.remove( apDn.size() - 1 );
-                SubtreeSpecification ss = subentryCache.getSubentry( subentryDn.toNormName() ).getSubtreeSpecification();
+                Subentry subentry = subentryCache.getSubentry( subentryDn.toNormName() );
+                SubtreeSpecification ss = subentry.getSubtreeSpecification();
 
                 if ( evaluator.evaluate( ss, apDn, normName, objectClasses ) )
                 {
@@ -497,6 +503,11 @@
                                 operational = new LockableAttributeImpl( AUTONOUMOUS_AREA_SUBENTRY );
                                 entry.put( operational );
                             }
+                            
+                            if ( subentry.isAutonomousAreaSubentry() )
+                            {
+                                operational.add( subentryDn.toString() );
+                            }
                         }
                         else if ( role.equalsIgnoreCase( AC_AREA ) || role.equalsIgnoreCase( AC_INNERAREA ) )
                         {
@@ -506,6 +517,11 @@
                                 operational = new LockableAttributeImpl( AC_SUBENTRY );
                                 entry.put( operational );
                             }
+                            
+                            if ( subentry.isAccessControlSubentry() )
+                            {
+                                operational.add( subentryDn.toString() );
+                            }
                         }
                         else if ( role.equalsIgnoreCase( SCHEMA_AREA ) )
                         {
@@ -515,6 +531,11 @@
                                 operational = new LockableAttributeImpl( SCHEMA_AREA_SUBENTRY );
                                 entry.put( operational );
                             }
+                            
+                            if ( subentry.isSchemaSubentry() )
+                            {
+                                operational.add( subentryDn.toString() );
+                            }
                         }
                         else if ( role.equalsIgnoreCase( COLLECTIVE_AREA )
                             || role.equalsIgnoreCase( COLLECTIVE_INNERAREA ) )
@@ -525,6 +546,11 @@
                                 operational = new LockableAttributeImpl( COLLECTIVE_ATTRIBUTE_SUBENTRIES );
                                 entry.put( operational );
                             }
+                            
+                            if ( subentry.isCollectiveSubentry() )
+                            {
+                                operational.add( subentryDn.toString() );
+                            }
                         }
                         else if ( role.equalsIgnoreCase( TRIGGER_AREA ) || role.equalsIgnoreCase( TRIGGER_INNERAREA ) )
                         {
@@ -548,7 +574,7 @@
                                     + " triggerArea and triggerInnerArea.", ResultCodeEnum.CONSTRAINTVIOLATION );
                         }
 
-                        operational.add( subentryDn.toString() );
+//                        operational.add( subentryDn.toString() );
                     }
                 }
             }