public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { reader.moveDown(); final SortedSet sortedSet; final TreeSet result; if (reader.getNodeName().equals("comparator")) { String comparatorClass = reader.getAttribute("class"); Comparator comparator = (Comparator) context.convertAnother(null, mapper().realClass(comparatorClass)); sortedSet = new PresortedSet(comparator); result = new TreeSet(comparator); } else if (reader.getNodeName().equals("no-comparator")) { sortedSet = new PresortedSet(); result = new TreeSet(); } else { throw new ConversionException("TreeSet does not contain <comparator> element"); } reader.moveUp(); super.populateCollection(reader, context, sortedSet); result.addAll(sortedSet); // internal optimization will not call comparator return result; }
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { reader.moveDown(); final SortedSet sortedSet; final TreeSet result; if (reader.getNodeName().equals("comparator")) { String comparatorClass = reader.getAttribute("class"); Comparator comparator = (Comparator) context.convertAnother(null, mapper().realClass(comparatorClass)); sortedSet = new PresortedSet(comparator); result = new TreeSet(comparator); } else if (reader.getNodeName().equals("no-comparator")) { sortedSet = new PresortedSet(); result = new TreeSet(); } else { throw new ConversionException("TreeSet does not contain <comparator> element"); } reader.moveUp(); super.populateCollection(reader, context, sortedSet); result.addAll(sortedSet); // internal optimization will not call comparator return result; }