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 2012/01/02 13:07:58 UTC

svn commit: r1226398 - /directory/shared/branches/shared-txns/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntry.java

Author: elecharny
Date: Mon Jan  2 12:07:57 2012
New Revision: 1226398

URL: http://svn.apache.org/viewvc?rev=1226398&view=rev
Log:
Fixed the Entry normalization : in some cases, the attributes weren't correctly updated

Modified:
    directory/shared/branches/shared-txns/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntry.java

Modified: directory/shared/branches/shared-txns/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-txns/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntry.java?rev=1226398&r1=1226397&r2=1226398&view=diff
==============================================================================
--- directory/shared/branches/shared-txns/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntry.java (original)
+++ directory/shared/branches/shared-txns/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntry.java Mon Jan  2 12:07:57 2012
@@ -29,6 +29,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+
 import org.apache.directory.shared.i18n.I18n;
 import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
 import org.apache.directory.shared.ldap.model.exception.LdapException;
@@ -93,7 +94,7 @@ public final class DefaultEntry implemen
      */
     public DefaultEntry()
     {
-        this( (SchemaManager)null );
+        this( ( SchemaManager ) null );
     }
 
 
@@ -252,12 +253,12 @@ public final class DefaultEntry implemen
      */
     public DefaultEntry( SchemaManager schemaManager, Dn dn, Object... elements ) throws LdapException
     {
-        DefaultEntry entry = (DefaultEntry)createEntry( schemaManager, elements );
-        
+        DefaultEntry entry = ( DefaultEntry ) createEntry( schemaManager, elements );
+
         this.dn = dn;
         this.attributes = entry.attributes;
         this.schemaManager = schemaManager;
-        
+
         if ( schemaManager != null )
         {
             this.dn.apply( schemaManager );
@@ -331,7 +332,8 @@ public final class DefaultEntry implemen
     //-------------------------------------------------------------------------
     // Helper methods
     //-------------------------------------------------------------------------
-    private Entry createEntry( SchemaManager schemaManager, Object... elements ) throws LdapInvalidAttributeValueException, LdapLdifException
+    private Entry createEntry( SchemaManager schemaManager, Object... elements )
+        throws LdapInvalidAttributeValueException, LdapLdifException
     {
         StringBuilder sb = new StringBuilder();
         int pos = 0;
@@ -389,10 +391,11 @@ public final class DefaultEntry implemen
 
         LdifAttributesReader reader = new LdifAttributesReader();
         Entry entry = reader.parseEntry( schemaManager, sb.toString() );
-        
+
         return entry;
     }
-    
+
+
     /**
      * Get the trimmed and lower cased entry ID
      */
@@ -429,7 +432,7 @@ public final class DefaultEntry implemen
                 LOG.error( message );
                 throw new IllegalArgumentException( message );
             }
-            
+
             return upId;
         }
         else if ( Strings.isEmpty( normUpId ) )
@@ -440,7 +443,7 @@ public final class DefaultEntry implemen
             {
                 id = attributeType.getOid();
             }
-            
+
             return id;
         }
         else
@@ -467,14 +470,15 @@ public final class DefaultEntry implemen
         {
             return;
         }
-        
+
         try
         {
             synchronized ( MUTEX )
             {
                 if ( objectClassAttributeType == null )
                 {
-                        objectClassAttributeType = schemaManager.lookupAttributeTypeRegistry( SchemaConstants.OBJECT_CLASS_AT );
+                    objectClassAttributeType = schemaManager
+                        .lookupAttributeTypeRegistry( SchemaConstants.OBJECT_CLASS_AT );
                 }
             }
         }
@@ -530,15 +534,16 @@ public final class DefaultEntry implemen
         }
         */
     }
-    
-    
+
+
     /**
      * Add a new EntryAttribute, with its upId. If the upId is null,
      * default to the AttributeType name.
      *
      * Updates the AttributeMap.
      */
-    protected void createAttribute( String upId, AttributeType attributeType, byte[]... values ) throws LdapInvalidAttributeValueException
+    protected void createAttribute( String upId, AttributeType attributeType, byte[]... values )
+        throws LdapInvalidAttributeValueException
     {
         Attribute attribute = new DefaultAttribute( attributeType, values );
         attribute.setUpId( upId, attributeType );
@@ -552,7 +557,8 @@ public final class DefaultEntry implemen
      *
      * Updates the AttributeMap.
      */
-    protected void createAttribute( String upId, AttributeType attributeType, String... values ) throws LdapInvalidAttributeValueException
+    protected void createAttribute( String upId, AttributeType attributeType, String... values )
+        throws LdapInvalidAttributeValueException
     {
         Attribute attribute = new DefaultAttribute( attributeType, values );
         attribute.setUpId( upId, attributeType );
@@ -566,7 +572,8 @@ public final class DefaultEntry implemen
      *
      * Updates the AttributeMap.
      */
-    protected void createAttribute( String upId, AttributeType attributeType, Value<?>... values ) throws LdapInvalidAttributeValueException
+    protected void createAttribute( String upId, AttributeType attributeType, Value<?>... values )
+        throws LdapInvalidAttributeValueException
     {
         Attribute attribute = new DefaultAttribute( attributeType, values );
         attribute.setUpId( upId, attributeType );
@@ -579,7 +586,7 @@ public final class DefaultEntry implemen
      */
     protected AttributeType getAttributeType( String upId ) throws LdapException
     {
-        if ( Strings.isEmpty(Strings.trim(upId)) )
+        if ( Strings.isEmpty( Strings.trim( upId ) ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -588,8 +595,8 @@ public final class DefaultEntry implemen
 
         return schemaManager.lookupAttributeTypeRegistry( upId );
     }
-    
-    
+
+
     /**
      * Adds missing Rdn's attributes and values to the entry.
      *
@@ -914,7 +921,7 @@ public final class DefaultEntry implemen
      */
     public void add( String upId, byte[]... values ) throws LdapException
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -956,7 +963,7 @@ public final class DefaultEntry implemen
      */
     public void add( String upId, String... values ) throws LdapException
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -998,7 +1005,7 @@ public final class DefaultEntry implemen
      */
     public void add( String upId, Value<?>... values ) throws LdapException
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -1045,15 +1052,26 @@ public final class DefaultEntry implemen
             dn.apply( schemaManager );
         }
 
+        Map<String, Attribute> updatedAttributes = new HashMap<String, Attribute>();
+
         for ( Attribute attribute : attributes.values() )
         {
             if ( attribute.getAttributeType() == null )
             {
+                String id = attribute.getId();
                 AttributeType attributeType = schemaManager.getAttributeType( attribute.getId() );
                 attribute.apply( attributeType );
+                updatedAttributes.put( id, attribute );
             }
         }
 
+        for ( String id : updatedAttributes.keySet() )
+        {
+            attributes.remove( id );
+            Attribute attribute = updatedAttributes.get( id );
+            attributes.put( attribute.getAttributeType().getOid(), attribute );
+        }
+
         addRdnAttributesToEntry( schemaManager );
         this.schemaManager = schemaManager;
     }
@@ -1286,7 +1304,7 @@ public final class DefaultEntry implemen
      */
     public boolean contains( String upId, byte[]... values )
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             return false;
         }
@@ -1321,7 +1339,7 @@ public final class DefaultEntry implemen
      */
     public boolean contains( String upId, String... values )
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             return false;
         }
@@ -1356,7 +1374,7 @@ public final class DefaultEntry implemen
      */
     public boolean contains( String upId, Value<?>... values )
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             return false;
         }
@@ -1453,7 +1471,7 @@ public final class DefaultEntry implemen
      */
     public Attribute put( String upId, byte[]... values )
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -1492,7 +1510,7 @@ public final class DefaultEntry implemen
      */
     public Attribute put( String upId, String... values )
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -1531,7 +1549,7 @@ public final class DefaultEntry implemen
      */
     public Attribute put( String upId, Value<?>... values )
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.error( message );
@@ -1705,7 +1723,7 @@ public final class DefaultEntry implemen
         }
         else
         {
-            if ( !Strings.isEmpty(upId) )
+            if ( !Strings.isEmpty( upId ) )
             {
                 AttributeType tempAT = getAttributeType( upId );
 
@@ -1755,7 +1773,7 @@ public final class DefaultEntry implemen
         }
         else
         {
-            if ( !Strings.isEmpty(upId) )
+            if ( !Strings.isEmpty( upId ) )
             {
                 AttributeType tempAT = getAttributeType( upId );
 
@@ -1798,7 +1816,7 @@ public final class DefaultEntry implemen
         }
         else
         {
-            if ( !Strings.isEmpty(upId) )
+            if ( !Strings.isEmpty( upId ) )
             {
                 AttributeType tempAT = getAttributeType( upId );
 
@@ -2133,7 +2151,7 @@ public final class DefaultEntry implemen
      */
     public boolean remove( String upId, byte[]... values ) throws LdapException
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.info( message );
@@ -2213,7 +2231,7 @@ public final class DefaultEntry implemen
      */
     public boolean remove( String upId, String... values ) throws LdapException
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.info( message );
@@ -2292,7 +2310,7 @@ public final class DefaultEntry implemen
      */
     public boolean remove( String upId, Value<?>... values ) throws LdapException
     {
-        if ( Strings.isEmpty(upId) )
+        if ( Strings.isEmpty( upId ) )
         {
             String message = I18n.err( I18n.ERR_04457_NULL_ATTRIBUTE_ID );
             LOG.info( message );
@@ -2469,7 +2487,6 @@ public final class DefaultEntry implemen
         // Read the Dn
         dn = new Dn( schemaManager );
         dn.readExternal( in );
-            
 
         // Read the number of attributes
         int nbAttributes = in.readInt();
@@ -2532,7 +2549,7 @@ public final class DefaultEntry implemen
         {
             return false;
         }
-        
+
         for ( String objectClass : objectClasses )
         {
             if ( schemaManager != null )
@@ -2550,7 +2567,7 @@ public final class DefaultEntry implemen
                 }
             }
         }
-        
+
         return true;
     }
 
@@ -2564,23 +2581,23 @@ public final class DefaultEntry implemen
         {
             return false;
         }
-        
-        for ( Attribute objectClass:objectClasses )
+
+        for ( Attribute objectClass : objectClasses )
         {
             // We have to check that we are checking the ObjectClass attributeType
             if ( !objectClass.getAttributeType().equals( objectClassAttributeType ) )
             {
                 return false;
             }
-    
+
             Attribute attribute = attributes.get( objectClassAttributeType.getOid() );
-    
+
             if ( attribute == null )
             {
                 // The entry does not have an ObjectClass attribute
                 return false;
             }
-    
+
             for ( Value<?> value : objectClass )
             {
                 // Loop on all the values, and check if they are present
@@ -2594,7 +2611,7 @@ public final class DefaultEntry implemen
         return true;
     }
 
-    
+
     /**
      * {@inheritDoc}
      */