001    package org.kuali.common.util.log.log4j.model;
002    
003    import java.util.ArrayList;
004    import java.util.Collections;
005    import java.util.List;
006    
007    import javax.xml.bind.annotation.XmlAttribute;
008    import javax.xml.bind.annotation.XmlElement;
009    
010    import org.kuali.common.util.Assert;
011    import org.kuali.common.util.nullify.NullUtils;
012    
013    public final class Appender {
014    
015            public static final List<Appender> EMPTY = Collections.<Appender> emptyList();
016            public static final Class<? extends org.apache.log4j.Appender> NO_APPENDER_CLASS = org.apache.log4j.Appender.class;
017            public static final Appender NONE = new Appender();
018    
019            @XmlAttribute
020            private final String name;
021    
022            @XmlAttribute(name = "class")
023            private final Class<? extends org.apache.log4j.Appender> appenderClass;
024    
025            @XmlElement(name = "param")
026            private final List<Param> params;
027    
028            @XmlElement
029            private final Layout layout;
030    
031            private Appender() {
032                    this(NullUtils.NONE, NO_APPENDER_CLASS, Layout.NONE, Param.EMPTY);
033            }
034    
035            public Appender(String name, Class<? extends org.apache.log4j.Appender> appenderClass, Layout layout) {
036                    this(name, appenderClass, layout, Param.EMPTY);
037            }
038    
039            public Appender(String name, Class<? extends org.apache.log4j.Appender> appenderClass, Layout layout, List<Param> params) {
040                    Assert.noNulls(appenderClass, layout, params);
041                    Assert.noBlanks(name);
042                    this.name = name;
043                    this.appenderClass = appenderClass;
044                    this.layout = layout;
045                    this.params = new ArrayList<Param>(params);
046            }
047    
048            public List<Param> getParams() {
049                    return Collections.unmodifiableList(params);
050            }
051    
052            public String getName() {
053                    return name;
054            }
055    
056            public Class<? extends org.apache.log4j.Appender> getAppenderClass() {
057                    return appenderClass;
058            }
059    
060            public Layout getLayout() {
061                    return layout;
062            }
063    
064    }