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.Collections;
19 import java.util.Map;
20
21 import javax.xml.bind.annotation.adapters.XmlAdapter;
22
23 import org.kuali.common.util.xml.jaxb.wrapper.MapWrapper;
24
25 public class ImmutableMapAdapter<K, V> extends XmlAdapter<MapWrapper<K, V>, Map<K, V>> {
26
27 private final Map<K, V> EMPTY_MAP = Collections.emptyMap();
28 private final MapWrapper<K, V> EMPTY_WRAPPER = new MapWrapper<K, V>(EMPTY_MAP);
29
30 @Override
31 public MapWrapper<K, V> marshal(Map<K, V> map) {
32 if (isEmpty(map)) {
33 return EMPTY_WRAPPER;
34 } else {
35 return new MapWrapper<K, V>(map);
36 }
37 }
38
39 @Override
40 public Map<K, V> unmarshal(MapWrapper<K, V> wrapper) {
41 if (isEmpty(wrapper.getMap())) {
42 return EMPTY_MAP;
43 } else {
44 return Collections.unmodifiableMap(wrapper.getMap());
45 }
46 }
47
48 protected static boolean isEmpty(Map<?, ?> map) {
49 return map == null || map.size() == 0;
50 }
51
52 }