[ 
https://issues.apache.org/jira/browse/UIMA-534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marshall Schor updated UIMA-534:
--------------------------------

    Fix Version/s: 2.3

> The equals() method in MetaDataObject_impl doesn't compare elements in a Map 
> properly.
> --------------------------------------------------------------------------------------
>
>                 Key: UIMA-534
>                 URL: https://issues.apache.org/jira/browse/UIMA-534
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>    Affects Versions: 2.1, 2.2
>            Reporter: Danai Wiriyayanyongsuk
>            Assignee: Marshall Schor
>            Priority: Minor
>             Fix For: 2.3
>
>
> In the class org.apache.uima.resource.metadata.impl.MetaDataObject_impl, the 
> equals() method returns immediately with the comparison result of the first 
> Map elements, leaving the rest of the Map's element uncompared. 
> Here is the code snippet: 
>         while (it.hasNext()) {
>           Map.Entry entry = (Map.Entry) it.next();
>           Object subval1 = ((Map) val1).get(entry.getKey());
>           Object subval2 = ((Map) val2).get(entry.getKey());
>           if (subval1 == null) {
>             if (subval2 != null)
>               return false;
>           } else if (subval1 instanceof Object[]) {
>             if (!(subval2 instanceof Object[]))
>               return false;
>             if (!Arrays.equals((Object[]) subval1, (Object[]) subval2))
>               return false;
> line:443  } else
> line:444      return subval1.equals(subval2);
>         }
> The problem with the code is that the statement line 444 will return the 
> result immediately, causing the while loop to be quit without comparing the 
> rest of elements in the Map.
> To fix this, one could replace line 443 and 444 with the following:
>            } else if (!(subval1.equals(subval2)) {
>                   return false;
>            }
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to