001package org.kuali.common.util.xml.jaxb.adapter;
002
003import javax.xml.bind.annotation.adapters.XmlAdapter;
004
005import org.kuali.common.util.Assert;
006
007public abstract class OmitClassAdapter extends XmlAdapter<Class<?>, Class<?>> {
008
009        public OmitClassAdapter(Class<?> omitClass) {
010                Assert.noNulls(omitClass);
011                this.omitClass = omitClass;
012        }
013
014        private final Class<?> omitClass;
015
016        @Override
017        public final Class<?> marshal(Class<?> value) {
018                if (omitClass == value) {
019                        return null;
020                } else {
021                        return value;
022                }
023        }
024
025        @Override
026        public final Class<?> unmarshal(Class<?> value) {
027                if (value == null) {
028                        return omitClass;
029                } else {
030                        return value;
031                }
032        }
033
034        public final Class<?> getOmitClass() {
035                return omitClass;
036        }
037
038}