001package org.kuali.common.util.xml.jaxb.adapter; 002 003import java.util.Collections; 004import java.util.Map; 005 006import javax.xml.bind.annotation.adapters.XmlAdapter; 007 008import org.kuali.common.util.xml.jaxb.wrapper.MapWrapper; 009 010public class ImmutableMapAdapter<K, V> extends XmlAdapter<MapWrapper<K, V>, Map<K, V>> { 011 012 private final Map<K, V> EMPTY_MAP = Collections.emptyMap(); 013 private final MapWrapper<K, V> EMPTY_WRAPPER = new MapWrapper<K, V>(EMPTY_MAP); 014 015 @Override 016 public MapWrapper<K, V> marshal(Map<K, V> map) { 017 if (isEmpty(map)) { 018 return EMPTY_WRAPPER; 019 } else { 020 return new MapWrapper<K, V>(map); 021 } 022 } 023 024 @Override 025 public Map<K, V> unmarshal(MapWrapper<K, V> wrapper) { 026 if (isEmpty(wrapper.getMap())) { 027 return EMPTY_MAP; 028 } else { 029 return Collections.unmodifiableMap(wrapper.getMap()); 030 } 031 } 032 033 protected static boolean isEmpty(Map<?, ?> map) { 034 return map == null || map.size() == 0; 035 } 036 037}