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 }