directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Giamma (JIRA)" <j...@apache.org>
Subject [jira] Created: (DIRSERVER-664) ExceptionService.modify() is not generating the correct exception
Date Thu, 06 Jul 2006 00:40:29 GMT
ExceptionService.modify() is not generating the correct exception
-----------------------------------------------------------------

         Key: DIRSERVER-664
         URL: http://issues.apache.org/jira/browse/DIRSERVER-664
     Project: Directory ApacheDS
        Type: Bug

    Versions: 1.0-RC4    
    Reporter: Giamma
    Priority: Minor



When trying to modify an attribute with an existing value, the following exception should
be generated:
LdapAttributeInUseException( "Trying to add existing value 'XYZ' to attribute ABC");

But instead the code is generating a IndexOutOfBoundsException because there is a bug in the
code that is generating the correct exception.

This is the wrong code:

 public void modify( NextInterceptor nextInterceptor, Name name, ModificationItem[] items
) throws NamingException
    {
        // check if entry to modify exists
        String msg = "Attempt to modify non-existant entry: ";
        assertHasEntry( nextInterceptor, msg, name );

        Attributes entry = nexus.lookup( name );
        for ( int ii = 0; ii < items.length; ii++ )
        {
            if ( items[ii].getModificationOp() == DirContext.ADD_ATTRIBUTE )
            {
                Attribute modAttr = items[ii].getAttribute();
                Attribute entryAttr = entry.get( modAttr.getID() );

                if ( entryAttr != null )
                {
                    for ( int jj = 0; jj < modAttr.size(); jj++ )
                    {
                        if ( entryAttr.contains( modAttr.get( jj ) ) )
                        {
                            throw new LdapAttributeInUseException( "Trying to add existing
value '"
                                    + modAttr.get( ii ) + "' to attribute " + modAttr.getID()
);                                   <----- HERE IS THE PROBLEM, should use modAttr.get(
jj ) 
                        }
                    }
                }
            }
        }
        nextInterceptor.modify( name, items );
    }



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message