You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2010/11/05 14:39:37 UTC

svn commit: r1031561 - in /directory/apacheds/trunk: core-integ/src/test/java/org/apache/directory/server/core/operational/ xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/xdbm/

Author: seelmann
Date: Fri Nov  5 13:39:37 2010
New Revision: 1031561

URL: http://svn.apache.org/viewvc?rev=1031561&view=rev
Log:
DIRSERVER-1579: Save operational attributes (modifiersName, modifyTimestamp) for moveAndRename() operation, added test to check operational attributes are set for rename, move, and moveAndRename.

Modified:
    directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceIT.java
    directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/xdbm/AbstractXdbmPartition.java

Modified: directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceIT.java?rev=1031561&r1=1031560&r2=1031561&view=diff
==============================================================================
--- directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceIT.java (original)
+++ directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceIT.java Fri Nov  5 13:39:37 2010
@@ -29,7 +29,6 @@ import static org.junit.Assert.assertTru
 import javax.naming.NamingException;
 
 import org.apache.directory.ldap.client.api.LdapConnection;
-import org.apache.directory.server.core.annotations.ApplyLdifs;
 import org.apache.directory.server.core.annotations.CreateDS;
 import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
 import org.apache.directory.server.core.integ.FrameworkRunner;
@@ -43,6 +42,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.entry.ModificationOperation;
 import org.apache.directory.shared.ldap.filter.SearchScope;
 import org.apache.directory.shared.ldap.ldif.LdifUtils;
+import org.apache.directory.shared.ldap.message.ModifyDnResponse;
 import org.apache.directory.shared.ldap.message.ModifyResponse;
 import org.apache.directory.shared.ldap.message.Response;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
@@ -63,8 +63,6 @@ import org.junit.runner.RunWith;
  */
 @RunWith(FrameworkRunner.class)
 @CreateDS(name = "OperationalDS")
-@ApplyLdifs(
-    { "dn: cn=Kate Bush,ou=system", "objectClass: top", "objectClass: person", "cn: Bush", "sn: Kate Bush" })
 public class OperationalAttributeServiceIT extends AbstractLdapTestUnit
 {
     private static final String DN_KATE_BUSH = "cn=Kate Bush,ou=system";
@@ -76,12 +74,22 @@ public class OperationalAttributeService
     public void setup() throws Exception
     {
         connection = IntegrationUtils.getAdminConnection( service );
+
+        // add this entry before each test because we want 
+        // to check that operational attributes are added
+        Entry entry = LdifUtils
+            .createEntry( DN_KATE_BUSH, "objectClass: top", "objectClass: person", "cn: Kate Bush", "sn: Bush" );
+        connection.add( entry );
     }
 
 
     @After
     public void shutdown() throws Exception
     {
+        // delete this entry after each test because we want 
+        // to check that operational attributes are added
+        connection.delete( DN_KATE_BUSH );
+
         connection.close();
     }
 
@@ -236,7 +244,7 @@ public class OperationalAttributeService
 
         assertNull( entry.get( "modifiersName" ) );
         assertNull( entry.get( "modifyTimestamp" ) );
-        
+
         Modification modifyOp = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE,
             new DefaultEntryAttribute( "description", "Singer Songwriter" ) );
 
@@ -339,4 +347,78 @@ public class OperationalAttributeService
 
         assertEquals( ResultCodeEnum.INSUFFICIENT_ACCESS_RIGHTS, response.getLdapResult().getResultCode() );
     }
+
+
+    /**
+     * Rename an entry and check whether attribute modifyTimestamp changes.
+     */
+    @Test
+    public void testRenameShouldChangeModifyTimestamp() throws Exception, InterruptedException
+    {
+        Entry entry = connection.lookup( DN_KATE_BUSH, "*", "+" );
+
+        assertNotNull( entry.get( "creatorsName" ) );
+        assertNotNull( entry.get( "createTimestamp" ) );
+        assertNull( entry.get( "modifiersName" ) );
+        assertNull( entry.get( "modifyTimestamp" ) );
+
+        ModifyDnResponse rename = connection.rename( DN_KATE_BUSH, "cn=KB" );
+        System.out.println( rename );
+
+        entry = connection.lookup( "cn=KB,ou=system", "*", "+" );
+
+        assertNotNull( entry.get( "creatorsName" ) );
+        assertNotNull( entry.get( "createTimestamp" ) );
+        assertNotNull( entry.get( "modifiersName" ) );
+        assertNotNull( entry.get( "modifyTimestamp" ) );
+    }
+
+
+    /**
+     * Move an entry and check whether attribute modifyTimestamp changes.
+     */
+    @Test
+    public void testMoveShouldChangeModifyTimestamp() throws Exception, InterruptedException
+    {
+        Entry entry = connection.lookup( DN_KATE_BUSH, "*", "+" );
+
+        assertNotNull( entry.get( "creatorsName" ) );
+        assertNotNull( entry.get( "createTimestamp" ) );
+        assertNull( entry.get( "modifiersName" ) );
+        assertNull( entry.get( "modifyTimestamp" ) );
+
+        connection.move( DN_KATE_BUSH, "ou=users,ou=system" );
+
+        entry = connection.lookup( "cn=Kate Bush,ou=users,ou=system", "*", "+" );
+
+        assertNotNull( entry.get( "creatorsName" ) );
+        assertNotNull( entry.get( "createTimestamp" ) );
+        assertNotNull( entry.get( "modifiersName" ) );
+        assertNotNull( entry.get( "modifyTimestamp" ) );
+    }
+
+
+    /**
+     * MoveAndRename an entry and check whether attribute modifyTimestamp changes.
+     */
+    @Test
+    public void testMoveAndRenameShouldChangeModifyTimestamp() throws Exception, InterruptedException
+    {
+        Entry entry = connection.lookup( DN_KATE_BUSH, "*", "+" );
+
+        assertNotNull( entry.get( "creatorsName" ) );
+        assertNotNull( entry.get( "createTimestamp" ) );
+        assertNull( entry.get( "modifiersName" ) );
+        assertNull( entry.get( "modifyTimestamp" ) );
+
+        connection.moveAndRename( DN_KATE_BUSH, "cn=KB,ou=users,ou=system" );
+
+        entry = connection.lookup( "cn=KB,ou=users,ou=system", "*", "+" );
+
+        assertNotNull( entry.get( "creatorsName" ) );
+        assertNotNull( entry.get( "createTimestamp" ) );
+        assertNotNull( entry.get( "modifiersName" ) );
+        assertNotNull( entry.get( "modifyTimestamp" ) );
+    }
+
 }

Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/xdbm/AbstractXdbmPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/xdbm/AbstractXdbmPartition.java?rev=1031561&r1=1031560&r2=1031561&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/xdbm/AbstractXdbmPartition.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/xdbm/AbstractXdbmPartition.java Fri Nov  5 13:39:37 2010
@@ -414,8 +414,9 @@ public abstract class AbstractXdbmPartit
         	DN newSuperiorDn = moveAndRenameContext.getNewSuperiorDn();
         	RDN newRdn = moveAndRenameContext.getNewRdn();
         	boolean deleteOldRdn = moveAndRenameContext.getDeleteOldRdn();
+        	Entry modifiedEntry = moveAndRenameContext.getModifiedEntry();
         	
-            store.moveAndRename( oldDn, newSuperiorDn, newRdn, null, deleteOldRdn );
+            store.moveAndRename( oldDn, newSuperiorDn, newRdn, modifiedEntry, deleteOldRdn );
         }
         catch ( LdapException le )
         {