001package org.kuali.common.util.log.log4j.model;
002
003import java.util.ArrayList;
004import java.util.Collections;
005import java.util.List;
006
007import javax.xml.bind.annotation.XmlAttribute;
008import javax.xml.bind.annotation.XmlElement;
009
010import org.kuali.common.util.Assert;
011import org.kuali.common.util.nullify.NullUtils;
012
013public 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}