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.