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 }