blob: 3f41faada7964a97ebb91d2337c5b2e446079d4e [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.compositecollection.identifiedbynamespace.withgroupingelement;
import java.io.InputStream;
import javax.xml.namespace.QName;
import org.eclipse.persistence.exceptions.XMLMarshalException;
import org.eclipse.persistence.oxm.XMLConstants;
import org.eclipse.persistence.oxm.XMLDescriptor;
import org.eclipse.persistence.oxm.XMLField;
import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping;
import org.eclipse.persistence.sessions.Project;
import org.eclipse.persistence.testing.oxm.mappings.XMLMappingTestCases;
import org.eclipse.persistence.testing.oxm.mappings.compositecollection.Employee;
import org.eclipse.persistence.testing.oxm.mappings.compositecollection.EmailAddress;
import org.eclipse.persistence.testing.oxm.mappings.compositecollection.MailingAddress;
public class CompositeCollectionWithGroupingByNamespaceNoRefClassTestCases extends XMLMappingTestCases {
private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/compositecollection/identifiedbynamespace/withgroupingelement/CompositeCollectionWithGroupingElementNoRefClass.xml";
private final static String CONTROL_EMAIL_ADDRESS_1_USER_ID = "jane.doe";
private final static String CONTROL_EMAIL_ADDRESS_1_DOMAIN = "example.com";
private final static String CONTROL_EMAIL_ADDRESS_2_USER_ID = "jdoe";
private final static String CONTROL_EMAIL_ADDRESS_2_DOMAIN = "test.com";
private final static String CONTROL_MAILING_ADDRESS_1_STREET = "1 Any Street";
private final static String CONTROL_MAILING_ADDRESS_1_CITY = "Ottawa";
private final static String CONTROL_MAILING_ADDRESS_1_PROVINCE = "Ontario";
private final static String CONTROL_MAILING_ADDRESS_1_POSTAL_CODE = "A1B 2C3";
private final static String CONTROL_MAILING_ADDRESS_2_STREET = "2 Autre Rue.";
private final static String CONTROL_MAILING_ADDRESS_2_CITY = "Gatineau";
private final static String CONTROL_MAILING_ADDRESS_2_PROVINCE = "Quebec";
private final static String CONTROL_MAILING_ADDRESS_2_POSTAL_CODE = "X1Y 2Z3";
public CompositeCollectionWithGroupingByNamespaceNoRefClassTestCases(String name) throws Exception {
super(name);
setControlDocument(XML_RESOURCE);
Project p = new CompositeCollectionWithGroupingElementIdentifiedByNamespaceProject();
((XMLCompositeCollectionMapping)p.getDescriptor(Employee.class).getMappingForAttributeName("emailAddresses")).setReferenceClass(null);
((XMLCompositeCollectionMapping)p.getDescriptor(Employee.class).getMappingForAttributeName("emailAddresses")).setReferenceClassName(null);
((XMLCompositeCollectionMapping)p.getDescriptor(Employee.class).getMappingForAttributeName("mailingAddresses")).setReferenceClass(null);
((XMLCompositeCollectionMapping)p.getDescriptor(Employee.class).getMappingForAttributeName("mailingAddresses")).setReferenceClassName(null);
((XMLDescriptor)p.getDescriptor(EmailAddress.class)).setDefaultRootElement("email:addressType");
QName qname = new QName("www.example.com/some-dir/mailing.xsd", "addressType");
((XMLField) p.getDescriptor(Employee.class).getMappingForAttributeName("mailingAddresses").getField()).setLeafElementType(qname);
((XMLDescriptor)p.getDescriptor(Employee.class)).getNonNullNamespaceResolver().put("xsi", javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI);
setProject(p);
}
@Override
protected Object getControlObject() {
Employee employee = new Employee();
EmailAddress emailAddress1 = new EmailAddress();
emailAddress1.setUserID(CONTROL_EMAIL_ADDRESS_1_USER_ID);
emailAddress1.setDomain(CONTROL_EMAIL_ADDRESS_1_DOMAIN);
employee.getEmailAddresses().add(emailAddress1);
EmailAddress emailAddress2 = new EmailAddress();
emailAddress2.setUserID(CONTROL_EMAIL_ADDRESS_2_USER_ID);
emailAddress2.setDomain(CONTROL_EMAIL_ADDRESS_2_DOMAIN);
employee.getEmailAddresses().add(emailAddress2);
MailingAddress mailingAddress1 = new MailingAddress();
mailingAddress1.setStreet(CONTROL_MAILING_ADDRESS_1_STREET);
mailingAddress1.setCity(CONTROL_MAILING_ADDRESS_1_CITY);
mailingAddress1.setProvince(CONTROL_MAILING_ADDRESS_1_PROVINCE);
mailingAddress1.setPostalCode(CONTROL_MAILING_ADDRESS_1_POSTAL_CODE);
employee.getMailingAddresses().add(mailingAddress1);
MailingAddress mailingAddress2 = new MailingAddress();
mailingAddress2.setStreet(CONTROL_MAILING_ADDRESS_2_STREET);
mailingAddress2.setCity(CONTROL_MAILING_ADDRESS_2_CITY);
mailingAddress2.setProvince(CONTROL_MAILING_ADDRESS_2_PROVINCE);
mailingAddress2.setPostalCode(CONTROL_MAILING_ADDRESS_2_POSTAL_CODE);
employee.getMailingAddresses().add(mailingAddress2);
return employee;
}
public static void main(String[] args) {
junit.textui.TestRunner.main(new String[] { "-c", "org.eclipse.persistence.testing.oxm.mappings.compositecollection.identifiedbynamespace.withgroupingelement.CompositeCollectionWithGroupingByNamespaceNoRefClassTestCases" });
}
public void testNoDescriptorFound() throws Exception {
String errorResource = "org/eclipse/persistence/testing/oxm/mappings/compositecollection/identifiedbynamespace/withgroupingelement/CompositeCollectionWithGroupingElementNoRefClassError.xml";
InputStream instream = ClassLoader.getSystemResourceAsStream(errorResource);
try {
Object testObject = xmlUnmarshaller.unmarshal(instream);
instream.close();
xmlToObjectTest(testObject);
} catch (XMLMarshalException e) {
if (e.getErrorCode() == XMLMarshalException.UNKNOWN_XSI_TYPE) {
return;
} else {
fail("an error should have occurred");
}
}
fail("an error should have occurred");
}
public void testNoDescriptorFound2() throws Exception {
String errorResource = "org/eclipse/persistence/testing/oxm/mappings/compositecollection/identifiedbynamespace/withgroupingelement/CompositeCollectionWithGroupingElementNoRefClassError2.xml";
InputStream instream = ClassLoader.getSystemResourceAsStream(errorResource);
try {
Object testObject = xmlUnmarshaller.unmarshal(instream);
instream.close();
xmlToObjectTest(testObject);
} catch (XMLMarshalException e) {
if (e.getMessage().contains("No descriptor found while unmarshalling element mapped to attribute")) {
return;
} else {
fail("an error should have occurred");
}
}
fail("an error should have occurred");
}
}