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.CollectionUtils;
012import org.kuali.common.util.nullify.Null;
013
014public final class Layout {
015
016        public static final Layout NONE = new Layout();
017
018        @XmlAttribute(name = "class")
019        private final Class<?> layoutClass;
020
021        @XmlElement(name = "param")
022        private final List<Param> params;
023
024        private Layout() {
025                this(Null.class, Param.EMPTY);
026        }
027
028        public Layout(Class<?> layoutClass, Param param) {
029                this(layoutClass, CollectionUtils.singletonList(param));
030        }
031
032        public Layout(Class<?> layoutClass, List<Param> params) {
033                Assert.noNulls(layoutClass, params);
034                this.layoutClass = layoutClass;
035                this.params = new ArrayList<Param>(params);
036        }
037
038        public List<Param> getParams() {
039                return Collections.unmodifiableList(params);
040        }
041
042        public Class<?> getLayoutClass() {
043                return layoutClass;
044        }
045
046}