property.setXmlName(elementType.getTagName());
property.setRequired(false);
property.setNillable(false);
}
} else if (runtimePropertyInfo instanceof RuntimeReferencePropertyInfo) {
RuntimeReferencePropertyInfo referenceProperty = (RuntimeReferencePropertyInfo) runtimePropertyInfo;
property.setXmlStyle(Property.XmlStyle.ELEMENT_REF);
for (RuntimeElement re : referenceProperty.getElements()) {
ElementMapping elementMapping;
if (re instanceof RuntimeElementInfo) {
RuntimeElementInfo runtimeElement = (RuntimeElementInfo) re;
elementMapping = createXmlMapping(property, runtimeElement);
} else {
RuntimeClassInfo runtimeClassInfo = (RuntimeClassInfo) re;
elementMapping = createXmlMapping(property, runtimeClassInfo);
}
property.getElementMappings().add(elementMapping);
}
property.setNillable(referenceProperty.isCollectionNillable());
property.setXmlAny(referenceProperty.getWildcard() != null);
property.setLax(referenceProperty.getWildcard() == WildcardMode.LAX);
property.setMixed(referenceProperty.isMixed());
} else if (runtimePropertyInfo instanceof RuntimeValuePropertyInfo) {
property.setXmlStyle(Property.XmlStyle.VALUE);
if (property.isCollection()) property.setXmlList(true);
} else {
throw new BuildException("Unknown property type " + runtimePropertyInfo.getClass().getName());