use of org.eclipse.persistence.jaxb.xmlmodel.JavaType.JavaAttributes in project eclipselink by eclipse-ee4j.
the class DynamicXMLMetadataSource method createJAXBType.
/**
* Create a javaType to be used by JAXB to map a particular class.
* For static classes, JAXB annotations, xml and defaults will be used to map the class.
* For Dynamic classes we create properties for each JPA mapping on the class
* thing we create is a
*/
private JavaType createJAXBType(ClassDescriptor classDescriptor, ObjectFactory objectFactory) {
JavaType javaType = new JavaType();
String alias = classDescriptor.getAlias();
if (alias == null || alias.isEmpty()) {
alias = classDescriptor.getJavaClass().getSimpleName();
}
javaType.setName(alias);
javaType.setJavaAttributes(new JavaAttributes());
boolean isDynamic = DynamicEntity.class.isAssignableFrom(classDescriptor.getJavaClass());
for (DatabaseMapping ormMapping : classDescriptor.getMappings()) {
JAXBElement<XmlElement> element = createJAXBProperty(ormMapping, objectFactory, javaType, isDynamic);
if (element != null) {
javaType.getJavaAttributes().getJavaAttribute().add(element);
}
}
// Embeddables don't need Rest adapters, return if the classDescriptor is an aggregate descriptor.
if (classDescriptor.isAggregateDescriptor()) {
return javaType;
}
// Set an adapter that is a subclass of ReferenceAdapter that can adapt the class to create a link for
// the persistence_href field that has been weaved in.
String name = RestAdapterClassWriter.constructClassNameForReferenceAdapter(classDescriptor.getJavaClassName());
XmlJavaTypeAdapter adapter = new XmlJavaTypeAdapter();
adapter.setValue(name);
adapter.setValueType(classDescriptor.getJavaClassName());
adapter.setType(classDescriptor.getJavaClassName());
javaType.setXmlJavaTypeAdapter(adapter);
return javaType;
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType.JavaAttributes in project eclipselink by eclipse-ee4j.
the class DynamicXmlV2MetadataSource method createJAXBType.
/**
* Create a javaType to be used by JAXB to map a particular class.
*/
private JavaType createJAXBType(ClassDescriptor classDescriptor, ObjectFactory objectFactory) {
JavaType javaType = new JavaType();
String alias = classDescriptor.getAlias();
if (alias == null || alias.isEmpty()) {
alias = classDescriptor.getJavaClass().getSimpleName();
}
javaType.setName(alias);
final JavaAttributes javaAttributes = new JavaAttributes();
for (DatabaseMapping ormMapping : classDescriptor.getMappings()) {
JAXBElement<XmlElement> element = null;
if (ormMapping instanceof DirectCollectionMapping) {
// Direct mapping -> no adapter
continue;
} else if (ormMapping.isCollectionMapping()) {
// This is a collection mapping -> create collection adapter
element = createCollectionProperty(ormMapping, objectFactory);
} else if (ForeignReferenceMapping.class.isAssignableFrom(ormMapping.getClass())) {
// FK mapping -> create reference adapter
element = createProperty((ForeignReferenceMapping) ormMapping, objectFactory);
}
if (element != null) {
javaAttributes.getJavaAttribute().add(element);
}
}
if (!javaAttributes.getJavaAttribute().isEmpty()) {
javaType.setJavaAttributes(javaAttributes);
}
return javaType;
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType.JavaAttributes in project eclipselink by eclipse-ee4j.
the class XMLProcessor method mergeJavaType.
private static void mergeJavaType(JavaType existingType, JavaType next) {
if (next.isSetXmlAccessorOrder()) {
existingType.setXmlAccessorOrder(next.getXmlAccessorOrder());
}
if (next.isSetXmlAccessorType()) {
existingType.setXmlAccessorType(next.getXmlAccessorType());
}
if (next.isSetXmlInlineBinaryData()) {
existingType.setXmlInlineBinaryData(next.isXmlInlineBinaryData());
}
if (next.isSetXmlTransient()) {
existingType.setXmlTransient(next.isXmlInlineBinaryData());
}
if (next.getXmlRootElement() != null) {
existingType.setXmlRootElement(next.getXmlRootElement());
}
if (existingType.getXmlProperties() == null) {
existingType.setXmlProperties(next.getXmlProperties());
} else if (next.getXmlProperties() != null) {
existingType.getXmlProperties().getXmlProperty().addAll(next.getXmlProperties().getXmlProperty());
}
if (next.getXmlType() != null) {
existingType.setXmlType(next.getXmlType());
}
existingType.getXmlSeeAlso().addAll(next.getXmlSeeAlso());
JavaAttributes attributes = existingType.getJavaAttributes();
JavaAttributes overrideAttributes = next.getJavaAttributes();
if (attributes == null) {
existingType.setJavaAttributes(overrideAttributes);
} else if (overrideAttributes != null) {
mergeJavaAttributes(attributes, overrideAttributes, existingType);
}
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType.JavaAttributes in project eclipselink by eclipse-ee4j.
the class OXMJavaClassImpl method getDeclaredFields.
/**
* Return all of the declared <code>JavaFields</code> for this <code>JavaClass</code>.
*
* @return A <code>Collection</code> containing this <code>JavaClass'</code> <code>JavaFields</code>.
*/
@Override
public Collection<JavaField> getDeclaredFields() {
List<JavaField> fieldsToReturn = new ArrayList<JavaField>();
if (this.enumValues != null) {
for (Iterator<String> iterator = this.enumValues.iterator(); iterator.hasNext(); ) {
fieldsToReturn.add(new OXMJavaFieldImpl(iterator.next(), JAVA_LANG_OBJECT, this));
}
} else {
JavaAttributes javaAttributes = this.javaType.getJavaAttributes();
if (null != javaAttributes) {
List<JAXBElement<? extends JavaAttribute>> fields = javaAttributes.getJavaAttribute();
for (Iterator<JAXBElement<? extends JavaAttribute>> iterator = fields.iterator(); iterator.hasNext(); ) {
JAXBElement<? extends JavaAttribute> jaxbElement = iterator.next();
JavaAttribute att = jaxbElement.getValue();
if (att instanceof XmlElement) {
XmlElement xme = (XmlElement) att;
String fieldName = xme.getJavaAttribute();
String fieldType = xme.getType();
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlElements) {
XmlElements xmes = (XmlElements) att;
String fieldName = xmes.getJavaAttribute();
String fieldType = JAVA_LANG_OBJECT;
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlElementRef) {
XmlElementRef xmer = (XmlElementRef) att;
String fieldName = xmer.getJavaAttribute();
String fieldType = xmer.getType();
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlAttribute) {
XmlAttribute xma = (XmlAttribute) att;
String fieldName = xma.getJavaAttribute();
String fieldType = xma.getType();
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlValue) {
XmlValue xmv = (XmlValue) att;
String fieldName = xmv.getJavaAttribute();
String fieldType = xmv.getType();
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlAnyElement) {
XmlAnyElement xmae = (XmlAnyElement) att;
String fieldName = xmae.getJavaAttribute();
String fieldType = JAVA_LANG_OBJECT;
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlAnyAttribute) {
XmlAnyAttribute xmaa = (XmlAnyAttribute) att;
String fieldName = xmaa.getJavaAttribute();
String fieldType = JAVA_UTIL_MAP;
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlJoinNodes) {
XmlJoinNodes xmjn = (XmlJoinNodes) att;
String fieldName = xmjn.getJavaAttribute();
String fieldType = xmjn.getType();
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
} else if (att instanceof XmlInverseReference) {
XmlInverseReference xmir = (XmlInverseReference) att;
String fieldName = xmir.getJavaAttribute();
String fieldType = xmir.getType();
fieldsToReturn.add(new OXMJavaFieldImpl(fieldName, fieldType, this));
}
}
}
}
return fieldsToReturn;
}
use of org.eclipse.persistence.jaxb.xmlmodel.JavaType.JavaAttributes 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;
}
Aggregations