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/01/05 16:18:56 UTC

svn commit: r896090 - in /directory/apacheds/branches/apacheds-schema: core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReplaceIT.java

Author: elecharny
Date: Tue Jan  5 15:18:55 2010
New Revision: 896090

URL: http://svn.apache.org/viewvc?rev=896090&view=rev
Log:
Fixed the ModifyReplace errors.

Modified:
    directory/apacheds/branches/apacheds-schema/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java
    directory/apacheds/branches/apacheds-schema/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReplaceIT.java

Modified: directory/apacheds/branches/apacheds-schema/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java?rev=896090&r1=896089&r2=896090&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java (original)
+++ directory/apacheds/branches/apacheds-schema/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java Tue Jan  5 15:18:55 2010
@@ -40,6 +40,7 @@
 import org.apache.directory.shared.ldap.entry.Modification;
 import org.apache.directory.shared.ldap.entry.ModificationOperation;
 import org.apache.directory.shared.ldap.entry.Value;
+import org.apache.directory.shared.ldap.exception.LdapInvalidAttributeIdentifierException;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
 import org.apache.directory.shared.ldap.schema.SchemaManager;
@@ -458,25 +459,21 @@
                 // DIRSERVER-646 Fix: Replacing an unknown attribute with no values 
                 // (deletion) causes an error
                 // -------------------------------------------------------------------
-                
-                // TODO - after removing JNDI we need to make the server handle 
-                // this in the codec
-                
                 if ( ! schemaManager.getAttributeTypeRegistry().contains( id ) 
                      && modification.getAttribute().size() == 0 
                      && modification.getOperation() == ModificationOperation.REPLACE_ATTRIBUTE )
                 {
-                    continue;
+                    // The attributeType does not exist in the schema.
+                    // It's an error
+                    String message = "The AttributeType '" + id + "' does not exist in the schema";
+                    throw new LdapInvalidAttributeIdentifierException( message );
+                }
+                else
+                {
+                    // TODO : handle options
+                    AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( id );
+                    modificationsList.add( toServerModification( modification, attributeType ) );
                 }
-
-                // -------------------------------------------------------------------
-                // END DIRSERVER-646 Fix
-                // -------------------------------------------------------------------
-                
-                
-                // TODO : handle options
-                AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( id );
-                modificationsList.add( toServerModification( modification, attributeType ) );
             }
         
             return modificationsList;

Modified: directory/apacheds/branches/apacheds-schema/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReplaceIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReplaceIT.java?rev=896090&r1=896089&r2=896090&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReplaceIT.java (original)
+++ directory/apacheds/branches/apacheds-schema/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReplaceIT.java Tue Jan  5 15:18:55 2010
@@ -25,6 +25,7 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import javax.naming.NamingEnumeration;
 import javax.naming.directory.Attribute;
@@ -32,6 +33,7 @@
 import javax.naming.directory.BasicAttribute;
 import javax.naming.directory.BasicAttributes;
 import javax.naming.directory.DirContext;
+import javax.naming.directory.InvalidAttributeIdentifierException;
 import javax.naming.directory.ModificationItem;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
@@ -81,7 +83,6 @@
 public class ModifyReplaceIT extends AbstractLdapTestUnit 
 {
     private static final String BASE = "ou=system";
-
     
     /**
      * Create a person entry and try to remove a not present attribute
@@ -166,7 +167,15 @@
         Attribute attr = new BasicAttribute( "numberOfOctaves" );
         ModificationItem item = new ModificationItem( DirContext.REPLACE_ATTRIBUTE, attr );
 
-        sysRoot.modifyAttributes( rdn, new ModificationItem[] { item } );
+        try
+        {
+            sysRoot.modifyAttributes( rdn, new ModificationItem[] { item } );
+            fail();
+        }
+        catch ( InvalidAttributeIdentifierException iaie )
+        {
+            assertTrue( true );
+        }
 
         SearchControls sctls = new SearchControls();
         sctls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -200,7 +209,15 @@
         Attribute attr2 = new BasicAttribute( "description", "blah blah blah" );
         ModificationItem item2 = new ModificationItem( DirContext.ADD_ATTRIBUTE, attr2 );
 
-        sysRoot.modifyAttributes(rdn, new ModificationItem[] { item, item2 });
+        try
+        {
+            sysRoot.modifyAttributes(rdn, new ModificationItem[] { item, item2 });
+            fail();
+        }
+        catch ( InvalidAttributeIdentifierException iaie )
+        {
+            assertTrue( true );
+        }
 
         SearchControls sctls = new SearchControls();
         sctls.setSearchScope( SearchControls.SUBTREE_SCOPE );