cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcus Christie (JIRA)" <j...@apache.org>
Subject [jira] Created: (CXF-1906) Unmarshalling Set to TreeSet instead of HashSet
Date Tue, 11 Nov 2008 15:38:44 GMT
Unmarshalling Set to TreeSet instead of HashSet
-----------------------------------------------

                 Key: CXF-1906
                 URL: https://issues.apache.org/jira/browse/CXF-1906
             Project: CXF
          Issue Type: Bug
          Components: Aegis Databinding
    Affects Versions: 2.1.3
            Reporter: Marcus Christie
            Priority: Critical


When using the Aegis databinding, if you are deserializing to a class that has a Set in it,
Aegis is currently instantiating the set as a SortedSet.  This fails for cases where the objects
being added to the set do not implement Comparable, and is undesired in any case.

The error occurs in CollectionType.java:
{code:java}
    protected Collection<Object> createCollection() {
        Collection values = null;

        if (getTypeClass().isAssignableFrom(List.class)) {
            values = new ArrayList();
        } else if (getTypeClass().isAssignableFrom(SortedSet.class)) {
            values = new TreeSet();
        } else if (getTypeClass().isAssignableFrom(Set.class)) {
            values = new HashSet();
        } else if (getTypeClass().isAssignableFrom(Vector.class)) {
            values = new Vector();
        } else if (getTypeClass().isInterface()) {
            values = new ArrayList();
        } else {
....
{code}

If the typeClass is Set, then the second "if" clause evaluates to true since Set is a superclass/superinterface
of SortedSet.

I've got a patch I'll submit and I'll explain the fix.

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


Mime
View raw message