blob: 56b54e4b0871e0615bd60683b3887d9cde8faa88 [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:
// bdoughan - Mar 27/2009 - 2.0 - Initial implementation
package org.eclipse.persistence.testing.sdo.helper.jaxbhelper.changesummary;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.eclipse.persistence.jaxb.JAXBContext;
import org.eclipse.persistence.oxm.XMLContext;
import org.eclipse.persistence.sdo.helper.jaxb.JAXBHelperContext;
import org.eclipse.persistence.testing.sdo.SDOTestCase;
import commonj.sdo.ChangeSummary;
import commonj.sdo.DataObject;
import commonj.sdo.Property;
import commonj.sdo.Type;
import commonj.sdo.helper.XMLDocument;
public class ChangeSummaryTestCases extends SDOTestCase {
private static final String XML_SCHEMA = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/ChangeSummary.xsd";
private static final String XML_DATA_TYPE_PROPERTY_WAS_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/DataTypePropertyWasSet.xml";
private static final String XML_DATA_TYPE_PROPERTY_WAS_NOT_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/DataTypePropertyWasNotSet.xml";
private static final String XML_DATA_TYPE_MANY_PROPERTY_WAS_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/DataTypeManyPropertyWasSet.xml";
private static final String XML_DATA_TYPE_MANY_PROPERTY_WAS_NOT_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/DataTypeManyPropertyWasNotSet.xml";
private static final String XML_NON_DATA_TYPE_PROPERTY_WAS_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/NonDataTypePropertyWasSet.xml";
private static final String XML_NON_DATA_TYPE_PROPERTY_WAS_NOT_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/NonDataTypePropertyWasNotSet.xml";
private static final String XML_NON_DATA_TYPE_MANY_PROPERTY_WAS_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/NonDataTypeManyPropertyWasSet.xml";
private static final String XML_NON_DATA_TYPE_MANY_PROPERTY_WAS_NOT_SET = "org/eclipse/persistence/testing/sdo/helper/jaxbhelper/changesummary/NonDataTypeManyPropertyWasNotSet.xml";
private static final String CONTROL_DATATYPE_PROPERTY = "name";
private static final String CONTROL_DATATYPE_PROPERTY_OLD_VALUE = "OldValue";
private static final String CONTROL_DATATYPE_PROPERTY_NEW_VALUE = "NewValue";
private static final String CONTROL_DATATYPE_MANY_PROPERTY = "simple-list";
private static final String CONTROL_DATATYPE_MANY_PROPERTY_OLD_VALUE = "OldValue";
private static final String CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE = "NewValue";
private static final String CONTROL_NONDATATYPE_CONTAINMENT_PROPERTY = "child1";
private static final String CONTROL_NONDATATYPE_CONTAINMENT_MANY_PROPERTY = "child2";
private JAXBHelperContext jaxbHelperContext;
public ChangeSummaryTestCases(String name) {
super(name);
}
@Override
public void setUp() {
ChangeSummaryProject project = new ChangeSummaryProject();
XMLContext xmlContext = new XMLContext(project);
JAXBContext jaxbContext = new JAXBContext(xmlContext);
jaxbHelperContext = new JAXBHelperContext(jaxbContext);
InputStream xsd = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_SCHEMA);
jaxbHelperContext.getXSDHelper().define(xsd, null);
}
public void testDataTypePropertyWasSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeProperty = rootType.getProperty(CONTROL_DATATYPE_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
rootDO.set(controlDataTypeProperty, CONTROL_DATATYPE_PROPERTY_OLD_VALUE);
rootDO.getChangeSummary().beginLogging();
rootDO.set(controlDataTypeProperty, CONTROL_DATATYPE_PROPERTY_NEW_VALUE);
assertEquals(CONTROL_DATATYPE_PROPERTY_NEW_VALUE, rootDO.get(controlDataTypeProperty));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, rootType.getProperty(CONTROL_DATATYPE_PROPERTY));
String testOldValue = (String) setting.getValue();
assertEquals(CONTROL_DATATYPE_PROPERTY_OLD_VALUE, testOldValue);
assertEquals(true, setting.isSet());
}
public void testDataTypePropertyWasSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeProperty = rootType.getProperty(CONTROL_DATATYPE_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_DATA_TYPE_PROPERTY_WAS_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
assertEquals(CONTROL_DATATYPE_PROPERTY_NEW_VALUE, rootDO.get(controlDataTypeProperty));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeProperty);
String testOldValue = (String) setting.getValue();
assertEquals(CONTROL_DATATYPE_PROPERTY_OLD_VALUE, testOldValue);
assertEquals(true, setting.isSet());
}
public void testDataTypePropertyWasNotSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeProperty = rootType.getProperty(CONTROL_DATATYPE_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
rootDO.getChangeSummary().beginLogging();
rootDO.set(controlDataTypeProperty, CONTROL_DATATYPE_PROPERTY_NEW_VALUE);
assertEquals(CONTROL_DATATYPE_PROPERTY_NEW_VALUE, rootDO.get(controlDataTypeProperty));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeProperty);
String testOldValue = (String) setting.getValue();
assertEquals(null, testOldValue);
assertEquals(false, setting.isSet());
}
public void testDataTypePropertyWasNotSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeProperty = rootType.getProperty(CONTROL_DATATYPE_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_DATA_TYPE_PROPERTY_WAS_NOT_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
assertEquals(CONTROL_DATATYPE_PROPERTY_NEW_VALUE, rootDO.get(controlDataTypeProperty));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeProperty);
String testOldValue = (String) setting.getValue();
assertEquals(null, testOldValue);
assertEquals(false, setting.isSet());
}
public void testDataTypeManyPropertyWasSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeManyProperty = rootType.getProperty(CONTROL_DATATYPE_MANY_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
rootDO.getList(controlDataTypeManyProperty).add(CONTROL_DATATYPE_MANY_PROPERTY_OLD_VALUE);
rootDO.getChangeSummary().beginLogging();
rootDO.getList(controlDataTypeManyProperty).add(CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE);
assertEquals(2, rootDO.getList(controlDataTypeManyProperty).size());
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_OLD_VALUE, rootDO.getList(controlDataTypeManyProperty).get(0));
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE, rootDO.getList(controlDataTypeManyProperty).get(1));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(1, testOldValue.size());
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_OLD_VALUE, testOldValue.get(0));
assertEquals(true, setting.isSet());
}
public void testDataTypeManyPropertyWasSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeManyProperty = rootType.getProperty(CONTROL_DATATYPE_MANY_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_DATA_TYPE_MANY_PROPERTY_WAS_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
assertEquals(2, rootDO.getList(controlDataTypeManyProperty).size());
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_OLD_VALUE, rootDO.getList(controlDataTypeManyProperty).get(0));
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE, rootDO.getList(controlDataTypeManyProperty).get(1));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(1, testOldValue.size());
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_OLD_VALUE, testOldValue.get(0));
assertEquals(true, setting.isSet());
}
public void testDataTypeManyPropertyWasNotSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeManyProperty = rootType.getProperty(CONTROL_DATATYPE_MANY_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
rootDO.getChangeSummary().beginLogging();
rootDO.getList(controlDataTypeManyProperty).add(CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE);
assertEquals(1, rootDO.getList(controlDataTypeManyProperty).size());
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE, rootDO.getList(controlDataTypeManyProperty).get(0));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(0, testOldValue.size());
assertEquals(false, setting.isSet());
}
public void testDataTypeManyPropertyWasNotSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlDataTypeManyProperty = rootType.getProperty(CONTROL_DATATYPE_MANY_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_DATA_TYPE_MANY_PROPERTY_WAS_NOT_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
assertEquals(1, rootDO.getList(controlDataTypeManyProperty).size());
assertEquals(CONTROL_DATATYPE_MANY_PROPERTY_NEW_VALUE, rootDO.getList(controlDataTypeManyProperty).get(0));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlDataTypeManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(0, testOldValue.size());
assertEquals(false, setting.isSet());
}
public void testNonDataTypePropertyWasSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
DataObject oldChild1DO = rootDO.createDataObject(controlNonDataTypeProperty);
oldChild1DO.set("id", 1);
rootDO.getChangeSummary().beginLogging();
DataObject newChild1DO = rootDO.createDataObject(controlNonDataTypeProperty);
newChild1DO.set("id", 2);
assertEquals(newChild1DO, rootDO.getDataObject(controlNonDataTypeProperty));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeProperty);
DataObject testOldValue = (DataObject) setting.getValue();
assertEquals(1, testOldValue.get("id"));
assertEquals(true, setting.isSet());
}
public void testNonDataTypePropertyWasSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_NON_DATA_TYPE_PROPERTY_WAS_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeProperty);
DataObject testOldValue = (DataObject) setting.getValue();
assertEquals(1, testOldValue.get("id"));
assertEquals(true, setting.isSet());
}
public void testNonDataTypePropertyWasNotSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
rootDO.getChangeSummary().beginLogging();
DataObject newChild1DO = rootDO.createDataObject(controlNonDataTypeProperty);
newChild1DO.set("id", 2);
assertEquals(newChild1DO, rootDO.getDataObject(controlNonDataTypeProperty));
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeProperty);
DataObject testOldValue = (DataObject) setting.getValue();
assertEquals(null, testOldValue);
assertEquals(false, setting.isSet());
}
public void testNonDataTypePropertyWasNotSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_NON_DATA_TYPE_PROPERTY_WAS_NOT_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeProperty);
DataObject testOldValue = (DataObject) setting.getValue();
assertEquals(null, testOldValue);
assertEquals(false, setting.isSet());
}
public void testNonDataTypeManyPropertyWasSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeContainmentManyProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_MANY_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
DataObject oldChild2DO = rootDO.createDataObject(controlNonDataTypeContainmentManyProperty);
oldChild2DO.set("id", 1);
rootDO.getChangeSummary().beginLogging();
DataObject newChild2DO = rootDO.createDataObject(controlNonDataTypeContainmentManyProperty);
newChild2DO.set("id", 2);
assertEquals(2, rootDO.getList(controlNonDataTypeContainmentManyProperty).size());
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeContainmentManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(1, testOldValue.size());
assertEquals(true, setting.isSet());
}
public void testNonDataTypeManyPropertyWasSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeContainmentManyProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_MANY_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_NON_DATA_TYPE_MANY_PROPERTY_WAS_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
assertEquals(2, rootDO.getList(controlNonDataTypeContainmentManyProperty).size());
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeContainmentManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(1, testOldValue.size());
assertEquals(true, setting.isSet());
}
public void testNonDataTypeManyPropertyWasNotSet() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeContainmentManyProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_MANY_PROPERTY);
DataObject rootDO = jaxbHelperContext.getDataFactory().create(rootType);
rootDO.getChangeSummary().beginLogging();
DataObject newChild2DO = rootDO.createDataObject(controlNonDataTypeContainmentManyProperty);
newChild2DO.set("id", 2);
List testList = rootDO.getList(controlNonDataTypeContainmentManyProperty);
assertEquals(1, rootDO.getList(controlNonDataTypeContainmentManyProperty).size());
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeContainmentManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(0, testOldValue.size());
assertEquals(false, setting.isSet());
}
public void testNonDataTypeManyPropertyWasNotSetXML() throws IOException {
Type rootType = jaxbHelperContext.getType(Root.class);
Property controlNonDataTypeContainmentManyProperty = rootType.getProperty(CONTROL_NONDATATYPE_CONTAINMENT_MANY_PROPERTY);
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream(XML_NON_DATA_TYPE_MANY_PROPERTY_WAS_NOT_SET);
DataObject rootDO = jaxbHelperContext.getXMLHelper().load(xml).getRootObject();
assertEquals(1, rootDO.getList(controlNonDataTypeContainmentManyProperty).size());
ChangeSummary.Setting setting = rootDO.getChangeSummary().getOldValue(rootDO, controlNonDataTypeContainmentManyProperty);
List testOldValue = (List) setting.getValue();
assertEquals(0, testOldValue.size());
assertEquals(false, setting.isSet());
}
@Override
public void tearDown() {
}
}