1 package org.kuali.common.util.xml.jaxb.adapter; 2 3 import java.util.Collection; 4 import java.util.Collections; 5 6 import javax.xml.bind.annotation.adapters.XmlAdapter; 7 8 import org.kuali.common.util.xml.jaxb.wrapper.CollectionWrapper; 9 10 public class ImmutableCollectionAdapter<T> extends XmlAdapter<CollectionWrapper<T>, Collection<T>> { 11 12 private final Collection<T> EMPTY_COLLECTION = Collections.emptyList(); 13 private final CollectionWrapper<T> EMPTY_WRAPPER = new CollectionWrapper<T>(EMPTY_COLLECTION); 14 15 @Override 16 public CollectionWrapper<T> marshal(Collection<T> c) { 17 if (isEmpty(c)) { 18 return EMPTY_WRAPPER; 19 } else { 20 return new CollectionWrapper<T>(c); 21 } 22 } 23 24 @Override 25 public Collection<T> unmarshal(CollectionWrapper<T> wrapper) { 26 if (isEmpty(wrapper.getCollection())) { 27 return EMPTY_COLLECTION; 28 } else { 29 return Collections.unmodifiableCollection(wrapper.getCollection()); 30 } 31 } 32 33 protected static boolean isEmpty(Collection<?> c) { 34 return c == null || c.size() == 0; 35 } 36 37 }