directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (DIRSERVER-664) ExceptionService.modify() is not generating the correct exception
Date Thu, 27 Jul 2006 23:37:15 GMT
     [ http://issues.apache.org/jira/browse/DIRSERVER-664?page=all ]

Emmanuel Lecharny resolved DIRSERVER-664.
-----------------------------------------

    Resolution: Fixed
      Assignee: Emmanuel Lecharny

Thanks a lot Giamma !

The fix was perfect ! 

I added a junit test case just in case, and fixed the code the way you proposed to do.

> ExceptionService.modify() is not generating the correct exception
> -----------------------------------------------------------------
>
>                 Key: DIRSERVER-664
>                 URL: http://issues.apache.org/jira/browse/DIRSERVER-664
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 1.0-RC4
>            Reporter: Giamma
>         Assigned To: Emmanuel Lecharny
>            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