package org.jvnet.jaxb2_commons.xjc.outline.concrete; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.Validate; import org.jvnet.jaxb2_commons.xjc.outline.MEnumConstantOutline; import org.jvnet.jaxb2_commons.xjc.outline.MEnumOutline; import org.jvnet.jaxb2_commons.xjc.outline.MModelOutline; import org.jvnet.jaxb2_commons.xjc.outline.MPackageOutline; import org.jvnet.jaxb2_commons.xml.bind.model.MEnumLeafInfo; import com.sun.codemodel.JDefinedClass; import com.sun.tools.xjc.model.nav.NClass; import com.sun.tools.xjc.model.nav.NType; public class CMEnumOutline implements MEnumOutline { private final MModelOutline parent; private final MPackageOutline packageOutline; private final MEnumLeafInfo<NType, NClass> target; private final JDefinedClass code; private final List<MEnumConstantOutline> enumConstantOutlines = new ArrayList<MEnumConstantOutline>(); private final List<MEnumConstantOutline> _enumConstantOutlines = Collections .unmodifiableList(enumConstantOutlines); public CMEnumOutline(MModelOutline parent, MPackageOutline packageOutline, MEnumLeafInfo<NType, NClass> target, JDefinedClass code) { Validate.notNull(parent); Validate.notNull(packageOutline); Validate.notNull(target); Validate.notNull(code); this.parent = parent; this.packageOutline = packageOutline; this.target = target; this.code = code; } public MModelOutline getParent() { return parent; } public MPackageOutline getPackageOutline() { return packageOutline; } public MEnumLeafInfo<NType, NClass> getTarget() { return target; } public JDefinedClass getCode() { return code; } public List<MEnumConstantOutline> getEnumConstantOutlines() { return _enumConstantOutlines; } public void addEnumConstantOutline(MEnumConstantOutline enumConstantOutline) { Validate.notNull(enumConstantOutline); Validate.isTrue(enumConstantOutline.getEnumOutline() == this); this.enumConstantOutlines.add(enumConstantOutline); } }