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