You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2013/09/29 09:56:08 UTC

svn commit: r1527280 - in /directory/apacheds/trunk: core-api/src/main/java/org/apache/directory/server/core/api/entry/ ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/ xdbm-partition/src/main/java/org/apache/directory/serv...

Author: kayyagari
Date: Sun Sep 29 07:56:08 2013
New Revision: 1527280

URL: http://svn.apache.org/r1527280
Log:
o do not add entryDN attribute to the original entry (DIRSERVER-1902)
o filter entryDN attribute from cloned entry
o fixed a failing test that is trying to compare entryDN attributes

Modified:
    directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/entry/ServerEntryUtils.java
    directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java
    directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java

Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/entry/ServerEntryUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/entry/ServerEntryUtils.java?rev=1527280&r1=1527279&r2=1527280&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/entry/ServerEntryUtils.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/entry/ServerEntryUtils.java Sun Sep 29 07:56:08 2013
@@ -750,8 +750,11 @@ public class ServerEntryUtils
             return;
         }
 
+        // for special handling of entryDN attribute, see DIRSERVER-1902
         Entry originalEntry = ( ( ClonedServerEntry ) entry ).getOriginalEntry();
 
+        AttributeType entryDnType = schemaManager.lookupAttributeTypeRegistry( SchemaConstants.ENTRY_DN_AT_OID );
+        
         // First, remove all the attributes if we have the NoAtribute flag set to true
         if ( operationContext.isNoAttributes() )
         {
@@ -761,6 +764,8 @@ public class ServerEntryUtils
                 entry.remove( entry.get( attributeType ) );
             }
 
+            entry.removeAttributes( entryDnType );
+            
             return;
         }
 
@@ -789,6 +794,8 @@ public class ServerEntryUtils
                 }
             }
 
+            entry.removeAttributes( entryDnType );
+            
             return;
         }
 
@@ -817,6 +824,15 @@ public class ServerEntryUtils
                 }
             }
 
+            if ( !operationContext.contains( schemaManager, entryDnType ) )
+            {
+                entry.removeAttributes( entryDnType );
+            }
+            else if ( typesOnly )
+            {
+                entry.get( entryDnType ).clear();
+            }
+
             return;
         }
 
@@ -852,6 +868,15 @@ public class ServerEntryUtils
                     entry.get( attributeType ).clear();
                 }
             }
+            
+            if ( !operationContext.contains( schemaManager, entryDnType ) )
+            {
+                entry.removeAttributes( entryDnType );
+            }
+            else if ( typesOnly )
+            {
+                entry.get( entryDnType ).clear();
+            }
         }
     }
 }

Modified: directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java?rev=1527280&r1=1527279&r2=1527280&view=diff
==============================================================================
--- directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java (original)
+++ directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java Sun Sep 29 07:56:08 2013
@@ -310,7 +310,13 @@ public class SingleFileLdifPartitionTest
 
         String id = partition.getEntryId( contextEntry.getDn() );
         assertNotNull( id );
-        assertEquals( contextEntry, partition.fetch( id ) );
+        
+        Entry fetched = partition.fetch( id );
+        
+        //remove the entryDn cause it is not present in the above hand made contextEntry
+        fetched.removeAttributes( SchemaConstants.ENTRY_DN_AT );
+        
+        assertEquals( contextEntry, fetched );
 
         RandomAccessFile file = new RandomAccessFile( new File( partition.getPartitionPath() ), "r" );
 
@@ -889,7 +895,13 @@ public class SingleFileLdifPartitionTest
         // search works fine
         String id = partition.getEntryId( contextEntry.getDn() );
         assertNotNull( id );
-        assertEquals( contextEntry, partition.fetch( id ) );
+
+        Entry fetched = partition.fetch( id );
+        
+        //remove the entryDn cause it is not present in the above hand made contextEntry
+        fetched.removeAttributes( SchemaConstants.ENTRY_DN_AT );
+        
+        assertEquals( contextEntry, fetched );
 
         RandomAccessFile file = new RandomAccessFile( new File( partition.getPartitionPath() ), "r" );
 

Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java?rev=1527280&r1=1527279&r2=1527280&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java Sun Sep 29 07:56:08 2013
@@ -1140,10 +1140,13 @@ public abstract class AbstractBTreeParti
 
             if ( entry != null )
             {
+                entry.setDn( dn );
+                
+                entry = new ClonedServerEntry( entry );
+
                 // Replace the entry's DN with the provided one
                 Attribute entryDnAt = entry.get( ENTRY_DN_AT );
                 
-                // see DIRSERVER-1902
                 if ( entryDnAt == null )
                 {
                     entry.add( ENTRY_DN_AT, dn.getName() );
@@ -1153,10 +1156,8 @@ public abstract class AbstractBTreeParti
                     entryDnAt.clear();
                     entryDnAt.add( dn.getName() );
                 }
-                
-                entry.setDn( dn );
 
-                return new ClonedServerEntry( entry );
+                return entry;
             }
 
             try
@@ -1174,14 +1175,17 @@ public abstract class AbstractBTreeParti
                 // We have to store the DN in this entry
                 entry.setDn( dn );
 
+                // always store original entry in the cache
+                addToCache( id, entry );
+                
+                entry = new ClonedServerEntry( entry );
+                
                 if ( !entry.containsAttribute( ENTRY_DN_AT ) )
                 {
                     entry.add( ENTRY_DN_AT, dn.getName() );
                 }
 
-                addToCache( id, entry );
-
-                return new ClonedServerEntry( entry );
+                return entry;
             }
 
             return null;