001    package org.kuali.common.util.xml.jaxb.adapter;
002    
003    import javax.xml.bind.annotation.adapters.XmlAdapter;
004    
005    import org.kuali.common.util.Assert;
006    
007    public 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    }