package org.jvnet.jaxb2_commons.xml.bind.model.concrete;
import javax.xml.namespace.QName;
import org.jvnet.jaxb2_commons.lang.Validate;
import org.jvnet.jaxb2_commons.xml.bind.model.MBuiltinLeafInfo;
import org.jvnet.jaxb2_commons.xml.bind.model.MCustomizations;
import org.jvnet.jaxb2_commons.xml.bind.model.MTypeInfoVisitor;
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MBuiltinLeafInfoOrigin;
public class CMBuiltinLeafInfo<T, C> implements MBuiltinLeafInfo<T, C> {
private final MBuiltinLeafInfoOrigin origin;
private final T targetType;
private final QName typeName;
private final MCustomizations customizations = new CMCustomizations();
public CMBuiltinLeafInfo(MBuiltinLeafInfoOrigin origin, T targetType,
QName typeName) {
Validate.notNull(origin);
Validate.notNull(targetType);
Validate.notNull(typeName);
this.origin = origin;
this.targetType = targetType;
this.typeName = typeName;
}
public MCustomizations getCustomizations() {
return customizations;
}
public T getTargetType() {
return targetType;
}
public MBuiltinLeafInfoOrigin getOrigin() {
return origin;
}
public QName getTypeName() {
return typeName;
}
public String toString() {
return "BuiltinLeafInfo [" + getTypeName() + "]";
}
public <V> V acceptTypeInfoVisitor(MTypeInfoVisitor<T, C, V> visitor) {
return visitor.visitBuiltinLeafInfo(this);
}
}