uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hai-Son Nguyen (JIRA)" <...@uima.apache.org>
Subject [jira] [Created] (UIMA-6112) JSON serializer produces repeated duplicate types
Date Fri, 09 Aug 2019 17:17:00 GMT
Hai-Son Nguyen created UIMA-6112:
------------------------------------

             Summary: JSON serializer produces repeated duplicate types
                 Key: UIMA-6112
                 URL: https://issues.apache.org/jira/browse/UIMA-6112
             Project: UIMA
          Issue Type: Bug
          Components: UIMA
    Affects Versions: 2.9.0SDK
            Reporter: Hai-Son Nguyen


The JSON produces using the JsonCasSerializer contains errors.

Tracked it back and it looks like a comparator is used to sort an array

uimaj-core : org.apache.uima.cas.impl.CasSerializerSupport.sortedUsedTypes

in method:

getSortedUsedTypes() used Arrays.sort(TypeImpl[], Comparator<TypeImpl>)

Used Comparator:

uimaj-core : org.apache.uima.cas.impl.CasSerializerSupport.COMPARATOR_SHORT_TYPENAME (non-public)

  *final* *static* Comparator<TypeImpl> *_COMPARATOR_SHORT_TYPENAME_* = *new* Comparator<TypeImpl>()
{

    *public* *int* compare(TypeImpl object1, TypeImpl object2) {

      *return* object1.getShortName().compareTo(object2.getShortName());

    }

  };

 

and then the default type comparison is used for a binary search

org.apache.uima.cas.impl.TypeImpl implements Comparable<TypeImp>

  *public* *int* compareTo(TypeImpl t) {

    *if* (*this* == t) {

      *return* 0;

    }

    *return* (*this*.code < t.code) ? -1 : 1;

  }

 

In uima-json : org.apache.uima.json.JsonCasSerializer.collectUsedSubTypes()

the Arrays.binarySearch(TypeImpl[], TypeImpl) is used

 

This can lead to types incorrectly being added as not used into the parentTypesWithNoInstances
IntVector which is used to add those types (duplicating the spec for a used type).



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Mime
View raw message