blob: 7e1dbed451b2199981f097e75c66ad2f642b1134 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Denise Smith - October 2011
package org.eclipse.persistence.testing.jaxb.xmlbindings;
import java.io.StringReader;
import java.io.StringWriter;
import jakarta.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import org.eclipse.persistence.jaxb.MarshallerProperties;
import org.eclipse.persistence.jaxb.xmlmodel.JavaType;
import org.eclipse.persistence.jaxb.xmlmodel.JavaType.JavaAttributes;
import org.eclipse.persistence.jaxb.xmlmodel.XmlBindings;
import org.eclipse.persistence.jaxb.xmlmodel.XmlBindings.JavaTypes;
import org.eclipse.persistence.jaxb.xmlmodel.XmlElement;
import org.eclipse.persistence.testing.jaxb.JAXBWithJSONTestCases;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
public class XMLBindingsTestCases extends JAXBWithJSONTestCases{
private final static String XML_RESOURCE = "org/eclipse/persistence/testing/jaxb/xmlbindings/bindings.xml";
private final static String JSON_RESOURCE = "org/eclipse/persistence/testing/jaxb/xmlbindings/bindings.json";
public XMLBindingsTestCases(String name) throws Exception {
super(name);
setClasses(new Class[]{XmlBindings.class});
setControlDocument(XML_RESOURCE);
setControlJSON(JSON_RESOURCE);
}
@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;
}
@Override
public void xmlToObjectTest(Object testObject) throws Exception {
log("\n**xmlToObjectTest**");
log("Expected:");
Object controlObject = getReadControlObject();
if(null == controlObject) {
log((String) null);
} else {
log(controlObject.toString());
}
log("Actual:");
if(null == testObject) {
log((String) null);
} else {
log(testObject.toString());
}
XmlBindings expectedBindings = (XmlBindings)getReadControlObject();
XmlBindings actualBindings = (XmlBindings)testObject;
assertEquals(expectedBindings.getPackageName(), actualBindings.getPackageName());
assertEquals(1, actualBindings.getJavaTypes().getJavaType().size());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getClass(), actualBindings.getJavaTypes().getJavaType().get(0).getClass());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getName(), actualBindings.getJavaTypes().getJavaType().get(0).getName());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().size(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().size());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getName(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getName());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getDeclaredType(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getDeclaredType());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getValue().getJavaAttribute(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getValue().getJavaAttribute());
}
@Override
public void jsonToObjectTest(Object testObject) throws Exception {
log("\n**xmlToObjectTest**");
log("Expected:");
log(getReadControlObject().toString());
log("Actual:");
log(testObject.toString());
XmlBindings expectedBindings = (XmlBindings)getJSONReadControlObject();
XmlBindings actualBindings = (XmlBindings)testObject;
assertEquals(expectedBindings.getPackageName(), actualBindings.getPackageName());
assertEquals(1, actualBindings.getJavaTypes().getJavaType().size());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getClass(), actualBindings.getJavaTypes().getJavaType().get(0).getClass());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getName(), actualBindings.getJavaTypes().getJavaType().get(0).getName());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().size(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().size());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getName(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getName());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getDeclaredType(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getDeclaredType());
assertEquals(expectedBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getValue().getJavaAttribute(), actualBindings.getJavaTypes().getJavaType().get(0).getJavaAttributes().getJavaAttribute().get(0).getValue().getJavaAttribute());
}
public void testMarshalTwiceForComparison() throws Exception{
StringWriter writer = new StringWriter();
//marshal control object to XML
jaxbMarshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/xml");
jaxbMarshaller.marshal(getWriteControlObject(), writer);
StringReader reader = new StringReader(writer.toString());
InputSource inputSource = new InputSource(reader);
//unmarshal written XML to newobject
Object newObject = jaxbUnmarshaller.unmarshal(inputSource);
StringWriter writer2 = new StringWriter();
//marhsal newobject to XML again
jaxbMarshaller.marshal(newObject, writer2);
//compare newly marshalled to original.
StringReader reader2 = new StringReader(writer2.toString());
InputSource inputSource2 = new InputSource(reader2);
Document testDocument = parser.parse(inputSource2);
objectToXMLDocumentTest(testDocument);
}
}