blob: 026e4f7fadceaefffe003f1f1245956eb9085bf2 [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:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.oxm.mappings.sequenced;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.oxm.sequenced.Setting;
import org.eclipse.persistence.testing.oxm.mappings.XMLMappingTestCases;
public class MappingsTestCases extends XMLMappingTestCases {
private static final String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/sequenced/Mappings.xml";
private static final String CONTROL_EMPLOYEE_FIRST_NAME = "Jane";
private static final String CONTROL_EMPLOYEE_LAST_NAME = "Doe";
private static final String CONTROL_ADDRESS_ID = "1";
private static final String CONTROL_ADDRESS_STREET = "1 A Street";
private static final String CONTROL_ADDRESS_CITY = "Town A";
private static final String CONTROL_FRAGMENT_NAME = "fragment";
private static final String CONTROL_FRAGMENT_1_TEXT = "Hello";
private static final String CONTROL_FRAGMENT_2_TEXT = "World";
private static final String CONTROL_ANY_ADDRESS_1_STREET = "1 Any Street";
private static final String CONTROL_ANY_ADDRESS_1_CITY = "First Any Town";
private static final String CONTROL_ANY_ADDRESS_2_STREET = "2 Any Street";
private static final String CONTROL_ANY_ADDRESS_2_CITY = "Second Any Town";
private static final String CONTROL_DEPENDENT_FIRST_NAME = "Dependent First";
private static final String CONTROL_DEPENDENT_LAST_NAME = "Dependent Last";
private static final String CONTROL_DEPENDENT_2_FIRST_NAME = "Dependent 2 First";
private static final String CONTROL_DEPENDENT_2_LAST_NAME = "Dependent 2 Last";
private EmployeeProject EMPLOYEE_PROJECT;
public MappingsTestCases(String name) throws Exception {
super(name);
setControlDocument(XML_RESOURCE);
EMPLOYEE_PROJECT = new EmployeeProject();
setProject(EMPLOYEE_PROJECT);
}
@Override
public Object getControlObject() {
Document document;
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
document = db.newDocument();
} catch(ParserConfigurationException e) {
throw new RuntimeException(e);
}
Employee controlEmployee = new Employee();
Setting lnPersonalInfoSetting = new Setting(null, "personal-info");
controlEmployee.getSettings().add(lnPersonalInfoSetting);
Setting lastNameSetting = new Setting(null, "last-name");
lnPersonalInfoSetting.addChild(lastNameSetting);
Setting lastNameTextSetting = new Setting(null, "text()");
lastNameTextSetting.setObject(controlEmployee);
DatabaseMapping lastNameMapping = EMPLOYEE_PROJECT.getDescriptor(Employee.class).getMappingForAttributeName("lastName");
lastNameTextSetting.setMapping(lastNameMapping);
lastNameTextSetting.setValue(CONTROL_EMPLOYEE_LAST_NAME);
lastNameSetting.addChild(lastNameTextSetting);
Address address = new Address();
address.setId(CONTROL_ADDRESS_ID);
address.setStreet(CONTROL_ADDRESS_STREET);
address.setCity(CONTROL_ADDRESS_CITY);
Setting addressSetting = new Setting(null, "address");
addressSetting.setObject(controlEmployee);
DatabaseMapping addressMapping = EMPLOYEE_PROJECT.getDescriptor(Employee.class).getMappingForAttributeName("address");
addressSetting.setMapping(addressMapping);
addressSetting.setValue(address);
controlEmployee.getSettings().add(addressSetting);
Setting fnPersonalInfoSetting = new Setting(null, "personal-info");
controlEmployee.getSettings().add(fnPersonalInfoSetting);
Setting firstNameSetting = new Setting("urn:example", "first-name");
fnPersonalInfoSetting.addChild(firstNameSetting);
Setting firstNameTextSetting = new Setting(null, "text()");
firstNameTextSetting.setObject(controlEmployee);
DatabaseMapping firstNameMapping = EMPLOYEE_PROJECT.getDescriptor(Employee.class).getMappingForAttributeName("firstName");
firstNameTextSetting.setMapping(firstNameMapping);
firstNameTextSetting.setValue(CONTROL_EMPLOYEE_FIRST_NAME);
firstNameSetting.addChild(firstNameTextSetting);
Setting dependentSetting = new Setting(null, "dependent");
controlEmployee.getSettings().add(dependentSetting);
dependentSetting.setObject(controlEmployee);
DatabaseMapping dependentMapping = EMPLOYEE_PROJECT.getDescriptor(Employee.class).getMappingForAttributeName("dependent");
dependentSetting.setMapping(dependentMapping);
dependentSetting.setValue(getControlDependent(address));
/*
controlEmployee.setLastName(CONTROL_EMPLOYEE_LAST_NAME);
Address address1 = new Address();
address1.setId(CONTROL_ADDRESS_1_ID);
address1.setStreet(CONTROL_ADDRESS_1_STREET);
address1.setCity(CONTROL_ADDRESS_1_CITY);
controlEmployee.setAddress(address1);
Address anyAddress1 = new Address();
anyAddress1.setStreet(CONTROL_ANY_ADDRESS_1_STREET);
anyAddress1.setCity(CONTROL_ANY_ADDRESS_1_CITY);
controlEmployee.setAny(anyAddress1);
Dependent dependent1 = new Dependent();
dependent1.setAddress(address1);
dependent1.setLastName(CONTROL_DEPENDENT_1_LAST_NAME);
dependent1.setFirstName(CONTROL_DEPENDENT_1_FIRST_NAME);
controlEmployee.setDependent(dependent1);
Element fragment1 = document.createElement(CONTROL_FRAGMENT_NAME);
Text fragmentText1 = document.createTextNode(CONTROL_FRAGMENT_1_TEXT);
fragment1.appendChild(fragmentText1);
controlEmployee.setNode(fragment1);
controlEmployee.setFirstName(CONTROL_EMPLOYEE_FIRST_NAME);
Address address2 = new Address();
address2.setId(CONTROL_ADDRESS_2_ID);
address2.setStreet(CONTROL_ADDRESS_2_STREET);
address2.setCity(CONTROL_ADDRESS_2_CITY);
controlEmployee.setAddress(address2);
Address anyAddress2 = new Address();
anyAddress2.setStreet(CONTROL_ANY_ADDRESS_2_STREET);
anyAddress2.setCity(CONTROL_ANY_ADDRESS_2_CITY);
controlEmployee.setAny(anyAddress2);
Dependent dependent2 = new Dependent();
dependent2.setFirstName(CONTROL_DEPENDENT_2_FIRST_NAME);
dependent2.setAddress(address2);
dependent2.setLastName(CONTROL_DEPENDENT_2_LAST_NAME);
controlEmployee.setDependent(dependent2);
Element fragment2 = document.createElement(CONTROL_FRAGMENT_NAME);
Text fragmentText2 = document.createTextNode(CONTROL_FRAGMENT_2_TEXT);
fragment2.appendChild(fragmentText2);
controlEmployee.setNode(fragment2);
*/
return controlEmployee;
}
private Dependent getControlDependent(Address address) {
Dependent dependent = new Dependent();
Setting dependentLastNameSetting = new Setting(null, "last-name");
dependent.getSettings().add(dependentLastNameSetting);
Setting dependentLastNameTextSetting = new Setting(null, "text()");
dependentLastNameTextSetting.setObject(dependent);
DatabaseMapping dependentLastNameMapping = EMPLOYEE_PROJECT.getDescriptor(Dependent.class).getMappingForAttributeName("lastName");
dependentLastNameTextSetting.setMapping(dependentLastNameMapping);
dependentLastNameTextSetting.setValue(CONTROL_DEPENDENT_LAST_NAME);
dependentLastNameSetting.addChild(dependentLastNameTextSetting);
Setting addressIdSetting = new Setting(null, "address-id");
dependent.getSettings().add(addressIdSetting);
Setting addressIdTextSetting = new Setting(null, "text()");
addressIdTextSetting.setObject(dependent);
DatabaseMapping addressMapping = EMPLOYEE_PROJECT.getDescriptor(Dependent.class).getMappingForAttributeName("address");
addressIdTextSetting.setMapping(addressMapping);
addressIdTextSetting.setValue(address);
addressIdSetting.addChild(addressIdTextSetting);
Setting dependentFirstNameSetting = new Setting(null, "first-name");
dependent.getSettings().add(dependentFirstNameSetting);
Setting dependentFirstNameTextSetting = new Setting(null, "text()");
dependentFirstNameTextSetting.setObject(dependent);
DatabaseMapping dependentFirstNameMapping = EMPLOYEE_PROJECT.getDescriptor(Dependent.class).getMappingForAttributeName("firstName");
dependentFirstNameTextSetting.setMapping(dependentFirstNameMapping);
dependentFirstNameTextSetting.setValue(CONTROL_DEPENDENT_FIRST_NAME);
dependentFirstNameSetting.addChild(dependentFirstNameTextSetting);
return dependent;
}
@Override
public void xmlToObjectTest(Object testObject) throws Exception {
Employee testEmployee = (Employee) testObject;
// assertEquals(10, testEmployee.getSettings().size());
super.xmlToObjectTest(testObject);
}
}