use of org.eclipse.persistence.jaxb.compiler.Property in project eclipselink by eclipse-ee4j.
the class PropertyTypeTestCases method testPropertyTypes.
public void testPropertyTypes() throws Exception {
JaxbClassLoader classLoader = new JaxbClassLoader(Thread.currentThread().getContextClassLoader());
Generator generator = new Generator(new JavaModelInputImpl(new Class<?>[] { TestObject.class }, new JavaModelImpl(this.classLoader)));
CoreProject proj = generator.generateProject();
TypeInfo info = generator.getAnnotationsProcessor().getTypeInfos().get("org.eclipse.persistence.testing.jaxb.annotations.TestObject");
Property booleanProp = info.getProperties().get("booleanTest");
JavaClass type = booleanProp.getType();
assertEquals("java.lang.Boolean", type.getRawName());
Property booleanListProp = info.getProperties().get("booleanListTest");
type = booleanListProp.getType();
assertEquals("java.util.List", type.getRawName());
Property byteArrayProp = info.getProperties().get("byteArrayTest");
type = byteArrayProp.getType();
assertEquals("java.lang.String", type.getRawName());
Property byteArrayListProp = info.getProperties().get("byteArrayListTest");
type = byteArrayListProp.getType();
assertEquals("java.util.List", type.getRawName());
assertEquals("java.lang.String", byteArrayListProp.getGenericType().getRawName());
}
use of org.eclipse.persistence.jaxb.compiler.Property in project eclipselink by eclipse-ee4j.
the class TransformerPropertyBuilder method buildPropertyFromTransformer.
private Property buildPropertyFromTransformer(String pname, TypeInfo typeInfo, XmlWriteTransformer writeTransformer) {
Property prop = new Property(helper);
prop.setPropertyName(pname);
prop.setXmlPath(writeTransformer.getXmlPath());
prop.setSchemaName(new QName(pname));
// figure out the type based on transformer method return type
prop.setType(getReturnTypeFromTransformer(typeInfo, writeTransformer));
return prop;
}
use of org.eclipse.persistence.jaxb.compiler.Property in project eclipselink by eclipse-ee4j.
the class SchemaGeneratorTestCase method addTransformerToSchema.
@Test
public void addTransformerToSchema() {
InputStream inputStream = ClassLoader.getSystemResourceAsStream(BINDINGS_DOC);
HashMap<String, Source> metadataSourceMap = new HashMap<>();
metadataSourceMap.put("org.eclipse.persistence.testing.jaxb.externalizedmetadata.mappings.xmltransformation", new StreamSource(inputStream));
Map<String, Object> properties = new HashMap<>();
properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, metadataSourceMap);
Map<String, XmlBindings> bindings = JAXBContextFactory.getXmlBindingsFromProperties(properties, Thread.currentThread().getContextClassLoader());
JavaModelInputImpl jModelInput = new JavaModelInputImpl(DOMAIN_CLASSES, new JavaModelImpl(new JaxbClassLoader(Thread.currentThread().getContextClassLoader(), DOMAIN_CLASSES)));
Helper helper = new Helper(jModelInput.getJavaModel());
Generator generator = new Generator(jModelInput, bindings, Thread.currentThread().getContextClassLoader(), "", false);
TypeInfo typeInfo = generator.getAnnotationsProcessor().getTypeInfos().get(EMPLOYEE_CLASS_NAME);
Property normalHoursProperty = typeInfo.getProperties().get(XML_TRANSFORMATION_PROPERTY_NAME);
ChildSchemaGenerator childSchemaGenerator = new ChildSchemaGenerator(helper);
TransformerPropertyBuilder transformerPropertyBuilder = childSchemaGenerator.getTransformerPropertyBuilder(normalHoursProperty, typeInfo);
java.util.List<Property> props = transformerPropertyBuilder.buildProperties();
// Indirect call of org.eclipse.persistence.jaxb.compiler.SchemaGenerator.addTransformerToSchema(.....) method.
List<Schema> schemas = (List) generator.generateSchema();
XMLContext context = new XMLContext(new SchemaModelProject());
XMLMarshaller marshaller = context.createMarshaller();
final StringWriter stringWriter = new StringWriter();
marshaller.marshal(schemas.get(0), stringWriter);
String outputSchema = stringWriter.toString();
// Verify that XML-Transformation property is added to XML schema
for (Property property : props) {
assertTrue(outputSchema.contains(property.getPropertyName()));
}
}
use of org.eclipse.persistence.jaxb.compiler.Property in project eclipselink by eclipse-ee4j.
the class SchemaGeneratorTestCase method getTransformerPropertyBuilder.
@Test
public void getTransformerPropertyBuilder() {
JavaModelInputImpl jModelInput = new JavaModelInputImpl(DOMAIN_CLASSES, new JavaModelImpl(new JaxbClassLoader(Thread.currentThread().getContextClassLoader(), DOMAIN_CLASSES)));
Helper helper = new Helper(jModelInput.getJavaModel());
Generator generator = new Generator(jModelInput);
TypeInfo typeInfo = generator.getAnnotationsProcessor().getTypeInfos().get(EMPLOYEE_CLASS_NAME);
Property normalHoursProperty = typeInfo.getProperties().get(XML_TRANSFORMATION_PROPERTY_NAME);
ChildSchemaGenerator childSchemaGenerator = new ChildSchemaGenerator(helper);
TransformerPropertyBuilder transformerPropertyBuilder = childSchemaGenerator.getTransformerPropertyBuilder(normalHoursProperty, typeInfo);
assertNotNull(transformerPropertyBuilder);
}
use of org.eclipse.persistence.jaxb.compiler.Property in project eclipselink by eclipse-ee4j.
the class TransformerPropertyBuilderTestCase method testTransformerPropertyBuilder.
@Test
public void testTransformerPropertyBuilder() {
InputStream inputStream = ClassLoader.getSystemResourceAsStream(BINDINGS_DOC);
HashMap<String, Source> metadataSourceMap = new HashMap<>();
metadataSourceMap.put("org.eclipse.persistence.testing.jaxb.externalizedmetadata.mappings.xmltransformation", new StreamSource(inputStream));
Map<String, Object> properties = new HashMap<>();
properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, metadataSourceMap);
Map<String, XmlBindings> bindings = JAXBContextFactory.getXmlBindingsFromProperties(properties, Thread.currentThread().getContextClassLoader());
JavaModelInputImpl jModelInput = new JavaModelInputImpl(DOMAIN_CLASSES, new JavaModelImpl(new JaxbClassLoader(Thread.currentThread().getContextClassLoader(), DOMAIN_CLASSES)));
Helper helper = new Helper(jModelInput.getJavaModel());
Generator generator = new Generator(jModelInput, bindings, Thread.currentThread().getContextClassLoader(), "", false);
TypeInfo typeInfo = generator.getAnnotationsProcessor().getTypeInfos().get(EMPLOYEE_CLASS_NAME);
Property normalHoursProperty = typeInfo.getProperties().get(XML_TRANSFORMATION_PROPERTY_NAME);
ChildSchemaGenerator childSchemaGenerator = new ChildSchemaGenerator(helper);
TransformerPropertyBuilder transformerPropertyBuilder = childSchemaGenerator.getTransformerPropertyBuilder(normalHoursProperty, typeInfo);
// Indirect call of org.eclipse.persistence.jaxb.compiler.builder.TransformerPropertyBuilder.getPropertyName(...) and org.eclipse.persistence.jaxb.compiler.builder.TransformerPropertyBuilder.buildPropertyFromTransformer(...)
// Indirect call of org.eclipse.persistence.jaxb.compiler.builder.TransformerPropertyBuilder.getTransformerJavaClass(...) with booth options writeTransformer.isSetTransformerClass() true,false
List<Property> props = transformerPropertyBuilder.buildProperties();
assertEquals(2, props.size());
// Verification of result of org.eclipse.persistence.jaxb.compiler.builder.TransformerPropertyBuilder.getPropertyName(...)
// Verify property names
assertEquals("start-time", props.get(0).getPropertyName());
assertEquals("end-time", props.get(1).getPropertyName());
// Verification of result of org.eclipse.persistence.jaxb.compiler.builder.TransformerPropertyBuilder.getReturnTypeFromTransformer(...)
// Verify property types
assertEquals(String.class.getName(), props.get(0).getType().getName());
assertEquals(String.class.getName(), props.get(1).getType().getName());
assertEquals(NormalHoursAttributeTransformer.class.getName(), normalHoursProperty.getXmlTransformation().getXmlReadTransformer().getTransformerClass());
assertEquals(StartTimeTransformer.class.getName(), normalHoursProperty.getXmlTransformation().getXmlWriteTransformer().get(0).getTransformerClass());
assertEquals(String.class.getName(), normalHoursProperty.getGenericType().getName());
// Indirect call of org.eclipse.persistence.jaxb.compiler.builder.TransformerPropertyBuilder.getTransformerJavaClass(...) with invalid TransformerClass name
try {
normalHoursProperty.getXmlTransformation().getXmlWriteTransformer().get(0).setTransformerClass("xxx.xxx.WrongClassName");
transformerPropertyBuilder.buildProperties();
fail("Expected JAXBException.");
} catch (JAXBException expected) {
assertEquals(50054, expected.getErrorCode());
}
}
Aggregations