package org.jvnet.jaxb2_commons.lang; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import org.jvnet.jaxb2_commons.locator.ObjectLocator; public class JAXBMergeCollectionsStrategy extends JAXBMergeStrategy { @Override protected Object mergeInternal(ObjectLocator leftLocator, ObjectLocator rightLocator, Collection leftCollection, Collection rightCollection) { if (leftCollection instanceof List && rightCollection instanceof List) { final List<Object> list = new ArrayList<Object>(leftCollection .size() + rightCollection.size()); list.addAll(leftCollection); list.addAll(rightCollection); return list; } else if (leftCollection instanceof Set && rightCollection instanceof Set) { final Set<Object> set = new HashSet<Object>(leftCollection.size() + rightCollection.size()); set.addAll(leftCollection); set.addAll(rightCollection); return set; } else { return super.mergeInternal(leftLocator, rightLocator, leftCollection, rightCollection); } } public static final MergeStrategy INSTANCE = new JAXBMergeCollectionsStrategy(); }