package org.jvnet.jaxb2_commons.xml.bind.model.concrete; import org.jvnet.jaxb2_commons.lang.Validate; import org.jvnet.jaxb2_commons.xml.bind.model.MClassRef; import org.jvnet.jaxb2_commons.xml.bind.model.MClassTypeInfoVisitor; import org.jvnet.jaxb2_commons.xml.bind.model.MContainer; import org.jvnet.jaxb2_commons.xml.bind.model.MCustomizations; import org.jvnet.jaxb2_commons.xml.bind.model.MPackageInfo; import org.jvnet.jaxb2_commons.xml.bind.model.MTypeInfoVisitor; public class CMClassRef<T, C extends T> implements MClassRef<T, C> { private CMCustomizations customizations = new CMCustomizations(); private final C targetClass; private final MPackageInfo _package; private final String name; private final String localName; private final MContainer container; public CMClassRef(/* MClassInfoOrigin origin, */C targetClass, MPackageInfo _package, MContainer container, String localName) { super(); // Validate.notNull(origin); Validate.notNull(targetClass); Validate.notNull(_package); Validate.notNull(localName); // this.origin = origin; this.targetClass = targetClass; this.name = _package.getPackagedName(localName); this.localName = localName; this._package = _package; this.container = container; } public String getName() { return name; } public String getLocalName() { return localName; } public T getTargetType() { return targetClass; } public <V> V acceptTypeInfoVisitor(MTypeInfoVisitor<T, C, V> visitor) { return visitor.visitClassRef(this); } public MCustomizations getCustomizations() { return customizations; } public MPackageInfo getPackageInfo() { return _package; } public MContainer getContainer() { return container; } public String getContainerLocalName(String delimiter) { final String localName = getLocalName(); if (localName == null) { return null; } else { final MContainer container = getContainer(); if (container == null) { return localName; } else { final String containerLocalName = container .getContainerLocalName(delimiter); return containerLocalName == null ? localName : containerLocalName + delimiter + localName; } } } public C getTargetClass() { return targetClass; } @Override public <V> V acceptClassTypeInfoVisitor( MClassTypeInfoVisitor<T, C, V> visitor) { return visitor.visitClassRef(this); } }