use of org.eclipse.persistence.jaxb.xmlmodel.JavaType in project eclipselink by eclipse-ee4j.
the class OXMMetadata method createClassModelFromOXM.
private JavaClass[] createClassModelFromOXM(DynamicClassLoader dynamicClassLoader) throws JAXBException {
List<JavaClass> oxmJavaClasses = new ArrayList<JavaClass>();
Iterator<String> keys = bindings.keySet().iterator();
while (keys.hasNext()) {
String pkgName = keys.next();
XmlBindings b = bindings.get(pkgName);
if (b.getJavaTypes() != null) {
List<JavaType> javaTypes = b.getJavaTypes().getJavaType();
for (Iterator<JavaType> iterator = javaTypes.iterator(); iterator.hasNext(); ) {
JavaType type = iterator.next();
// Check to see if it's a static class or if should be treated as dynamic
try {
Class<?> staticClass = dynamicClassLoader.getParent().loadClass(Helper.getQualifiedJavaTypeName(type.getName(), pkgName));
oxmJavaClasses.add(new JavaClassImpl(staticClass, null));
} catch (Exception ex) {
type.setName(Helper.getQualifiedJavaTypeName(type.getName(), pkgName));
oxmJavaClasses.add(new OXMJavaClassImpl(type));
}
}
}
if (b.getXmlRegistries() != null) {
List<XmlRegistry> registries = b.getXmlRegistries().getXmlRegistry();
for (Iterator<XmlRegistry> iterator = registries.iterator(); iterator.hasNext(); ) {
XmlRegistry reg = iterator.next();
oxmJavaClasses.add(new OXMObjectFactoryImpl(reg));
}
}
if (b.getXmlEnums() != null) {
List<XmlEnum> enums = b.getXmlEnums().getXmlEnum();
for (Iterator<XmlEnum> iterator = enums.iterator(); iterator.hasNext(); ) {
XmlEnum xmlEnum = iterator.next();
List<XmlEnumValue> enumValues = xmlEnum.getXmlEnumValue();
List<String> enumValueStrings = new ArrayList<String>();
for (Iterator<XmlEnumValue> iterator2 = enumValues.iterator(); iterator2.hasNext(); ) {
XmlEnumValue xmlEnumValue = iterator2.next();
enumValueStrings.add(xmlEnumValue.getJavaEnumValue());
}
oxmJavaClasses.add(new OXMJavaClassImpl(xmlEnum.getJavaEnum(), enumValueStrings));
// Trigger a dynamic class generation, because we won't
// be creating a descriptor for this
dynamicClassLoader.addEnum(xmlEnum.getJavaEnum(), enumValueStrings.toArray());
}
}
}
JavaClass[] javaClasses = new JavaClass[oxmJavaClasses.size()];
for (int i = 0; i < javaClasses.length; i++) {
javaClasses[i] = oxmJavaClasses.get(i);
}
return javaClasses;
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType in project eclipselink by eclipse-ee4j.
the class XMLBindingsPopulatedTestCases method getControlObject.
@Override
protected Object getControlObject() {
XmlBindings xmlBindings = new XmlBindings();
xmlBindings.setPackageName("test.model");
xmlBindings.setXmlAccessorType(XmlAccessType.PUBLIC_MEMBER);
xmlBindings.setXmlAccessorOrder(org.eclipse.persistence.jaxb.xmlmodel.XmlAccessOrder.ALPHABETICAL);
XmlEnums enums = new XmlEnums();
XmlEnum e1 = new XmlEnum();
e1.setJavaEnum("A");
e1.setValue("A_Value");
XmlEnum e2 = new XmlEnum();
e2.setJavaEnum("B");
e2.setValue("B_Value");
enums.getXmlEnum().add(e1);
enums.getXmlEnum().add(e2);
xmlBindings.setXmlEnums(enums);
xmlBindings.setXmlNameTransformer("test.someNameTransformer");
XmlSchema xmlSchema = new XmlSchema();
xmlSchema.setAttributeFormDefault(XmlNsForm.UNQUALIFIED);
xmlSchema.setElementFormDefault(XmlNsForm.UNQUALIFIED);
xmlSchema.setLocation("someLocation");
xmlSchema.setNamespace("testnamespace");
xmlBindings.setXmlSchema(xmlSchema);
XmlSchemaTypes xmlSchemaTypes = new XmlSchemaTypes();
XmlSchemaType xmlSchemaType = new XmlSchemaType();
xmlSchemaType.setName("someSchemaType");
xmlSchemaType.setNamespace("someSchemaTypeNamespace");
xmlSchemaType.setType("someSchemaType");
XmlSchemaType xmlSchemaType2 = new XmlSchemaType();
xmlSchemaType2.setName("someSchemaType2");
xmlSchemaType2.setNamespace("someSchemaTypeNamespace2");
xmlSchemaType2.setType("someSchemaType2");
xmlSchemaTypes.getXmlSchemaType().add(xmlSchemaType);
xmlSchemaTypes.getXmlSchemaType().add(xmlSchemaType2);
xmlBindings.setXmlSchemaTypes(xmlSchemaTypes);
xmlBindings.setXmlMappingMetadataComplete(Boolean.FALSE);
XmlRegistries xmlRegistries = new XmlRegistries();
XmlRegistry r1 = new XmlRegistry();
r1.setName("someRegistry");
xmlRegistries.getXmlRegistry().add(r1);
xmlBindings.setXmlRegistries(xmlRegistries);
XmlJavaTypeAdapters xmlJavaTypeAdapters = new XmlJavaTypeAdapters();
XmlJavaTypeAdapter a1 = new XmlJavaTypeAdapter();
a1.setType("someAdapterType");
a1.setValue("someAdapterValue");
a1.setValueType("somValueType");
a1.setJavaAttribute("someJavaAttribute");
xmlJavaTypeAdapters.getXmlJavaTypeAdapter().add(a1);
xmlBindings.setXmlJavaTypeAdapters(xmlJavaTypeAdapters);
JavaTypes types = new JavaTypes();
JavaType javaType = new JavaType();
javaType.setName("myType");
javaType.setXmlTransient(Boolean.FALSE);
javaType.setXmlAccessorOrder(org.eclipse.persistence.jaxb.xmlmodel.XmlAccessOrder.ALPHABETICAL);
XmlProperties xmlProperties = new XmlProperties();
XmlProperty p1 = new XmlProperty();
p1.setName("prop1");
p1.setValue("propValue");
p1.setValueType("propValueType");
xmlProperties.getXmlProperty().add(p1);
javaType.setXmlProperties(xmlProperties);
javaType.setXmlDiscriminatorNode("descriminator node");
javaType.setXmlDiscriminatorValue("discriminator value");
XmlClassExtractor extractor = new XmlClassExtractor();
extractor.setClazz("a.b.c.someClass");
javaType.setXmlClassExtractor(extractor);
javaType.setXmlInlineBinaryData(Boolean.FALSE);
XmlRootElement root = new XmlRootElement();
root.setName("someRoot");
root.setNamespace("someNamespace");
javaType.setXmlRootElement(root);
XmlType xmlType = new XmlType();
xmlType.setFactoryClass("somepackage.someFactoryclass");
xmlType.setName("someName");
xmlType.setFactoryMethod("someMethod");
xmlType.getPropOrder().add("p2");
xmlType.getPropOrder().add("p1");
javaType.setXmlType(xmlType);
JavaAttributes javaAttributes = new JavaAttributes();
XmlElement javaAttribute = new XmlElement();
javaAttribute.setName("elementName");
javaAttribute.setJavaAttribute("theJavaAttributeValue");
JAXBElement<XmlElement> jbe = new JAXBElement<XmlElement>(new QName("http://www.eclipse.org/eclipselink/xsds/persistence/oxm", "xml-element"), XmlElement.class, javaAttribute);
XmlElement javaAttribute2 = new XmlElement();
javaAttribute2.setName("elementName2");
javaAttribute2.setJavaAttribute("theJavaAttributeValue2");
JAXBElement<XmlElement> jbe2 = new JAXBElement<XmlElement>(new QName("http://www.eclipse.org/eclipselink/xsds/persistence/oxm", "xml-element"), XmlElement.class, javaAttribute2);
XmlAttribute javaAttribute3 = new XmlAttribute();
javaAttribute3.setContainerType("someContainerType");
javaAttribute3.setJavaAttribute("javaAttribute");
javaAttribute3.setNamespace("somenamespace");
javaAttribute3.setName("attributename1");
javaAttribute3.setReadOnly(Boolean.TRUE);
javaAttribute3.setRequired(Boolean.TRUE);
JAXBElement<XmlAttribute> jbe3 = new JAXBElement<XmlAttribute>(new QName("http://www.eclipse.org/eclipselink/xsds/persistence/oxm", "xml-attribute"), XmlAttribute.class, javaAttribute3);
javaAttributes.getJavaAttribute().add(jbe);
javaAttributes.getJavaAttribute().add(jbe3);
javaAttributes.getJavaAttribute().add(jbe2);
javaType.setJavaAttributes(javaAttributes);
types.getJavaType().add(javaType);
xmlBindings.setJavaTypes(types);
return xmlBindings;
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType in project eclipselink by eclipse-ee4j.
the class XMLBindingsTestCases method getControlObject.
@Override
protected Object getControlObject() {
XmlBindings xmlBindings = new XmlBindings();
xmlBindings.setPackageName("myPackage");
JavaTypes types = new JavaTypes();
JavaType javaType = new JavaType();
javaType.setName("myType");
JavaAttributes javaAttributes = new JavaAttributes();
XmlElement javaAttribute = new XmlElement();
javaAttribute.setName("elementName");
javaAttribute.setJavaAttribute("theJavaAttributeValue");
JAXBElement<XmlElement> jbe = new JAXBElement<XmlElement>(new QName("http://www.eclipse.org/eclipselink/xsds/persistence/oxm", "xml-element"), XmlElement.class, javaAttribute);
javaAttributes.getJavaAttribute().add(jbe);
javaType.setJavaAttributes(javaAttributes);
types.getJavaType().add(javaType);
xmlBindings.setJavaTypes(types);
return xmlBindings;
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType in project eclipselink by eclipse-ee4j.
the class XmlBindingsGenerator method generateJavaType.
/**
* Process a given XMLDescriptor and return a JavaType instance.
*/
protected static JavaType generateJavaType(XMLDescriptor xdesc) {
String defaultNamespace = null;
if (xdesc.getNamespaceResolver() != null) {
defaultNamespace = xdesc.getNamespaceResolver().getDefaultNamespaceURI();
}
String schemaContext = null;
if (xdesc.getSchemaReference() != null) {
schemaContext = xdesc.getSchemaReference().getSchemaContext();
}
JavaType jType = new JavaType();
jType.setName(getClassName(xdesc.getJavaClassName()));
jType.setXmlAccessorType(XmlAccessType.FIELD);
// handle XmlType
if (schemaContext != null) {
XmlType xType = new XmlType();
xType.setName(schemaContext.substring(1, schemaContext.length()));
if (defaultNamespace != null) {
xType.setNamespace(defaultNamespace);
}
jType.setXmlType(xType);
}
// handle XmlRootElement
XmlRootElement xmlRootElt = new XmlRootElement();
xmlRootElt.setName(xdesc.getDefaultRootElement());
if (defaultNamespace != null) {
xmlRootElt.setNamespace(defaultNamespace);
}
jType.setXmlRootElement(xmlRootElt);
jType.setJavaAttributes(new JavaAttributes());
// generate an XmlAttribute or XmlElement for each mapping
for (Iterator<DatabaseMapping> xmapIt = xdesc.getMappings().iterator(); xmapIt.hasNext(); ) {
XMLMapping xMap = (XMLMapping) xmapIt.next();
if (((XMLField) xMap.getField()).getXPathFragment().isAttribute()) {
JAXBElement<XmlAttribute> jAtt = generateXmlAttribute(xMap);
if (jAtt != null) {
jType.getJavaAttributes().getJavaAttribute().add(jAtt);
}
} else {
JAXBElement<XmlElement> jElt = generateXmlElement(xMap);
if (jElt != null) {
jType.getJavaAttributes().getJavaAttribute().add(jElt);
}
}
}
return jType;
}
Aggregations