package org.jvnet.jaxb2_commons.xml.bind.model.concrete; import java.text.MessageFormat; import javax.xml.namespace.QName; import org.jvnet.jaxb2_commons.lang.Validate; import org.jvnet.jaxb2_commons.xml.bind.model.MContainer; import org.jvnet.jaxb2_commons.xml.bind.model.MElementInfo; import org.jvnet.jaxb2_commons.xml.bind.model.MPackageInfo; import org.jvnet.jaxb2_commons.xml.bind.model.MTypeInfo; import org.jvnet.jaxb2_commons.xml.bind.model.origin.MElementInfoOrigin; public class CMElementInfo<T, C> implements MElementInfo<T, C> { private final MElementInfoOrigin origin; private final MPackageInfo _package; private final MContainer container; private final String localName; private final QName elementName; private final MTypeInfo<T, C> scope; private final MTypeInfo<T, C> typeInfo; private final QName substitutionHead; public CMElementInfo(MElementInfoOrigin origin, MPackageInfo _package, MContainer container, String localName, QName elementName, MTypeInfo<T, C> scope, MTypeInfo<T, C> typeInfo, QName substitutionHead) { super(); Validate.notNull(origin); Validate.notNull(elementName); Validate.notNull(_package); this.origin = origin; this._package = _package; this.container = container; this.localName = localName; this.elementName = elementName; this.scope = scope; this.typeInfo = typeInfo; this.substitutionHead = substitutionHead; } public MElementInfoOrigin getOrigin() { return origin; } public MPackageInfo getPackageInfo() { return _package; } public MContainer getContainer() { return container; } public String getLocalName() { return localName; } 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 QName getElementName() { return elementName; } public MTypeInfo<T, C> getScope() { return scope; } public MTypeInfo<T, C> getTypeInfo() { return typeInfo; } public QName getSubstitutionHead() { return substitutionHead; } public String toString() { return MessageFormat.format("ElementInfo [{0}: {1}]", getElementName(), getTypeInfo()); } }