Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/instance.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/instance.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/instance.xml (revision 0) @@ -0,0 +1,34 @@ + + + + Joe Smith +
+
+
+
+ +
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+ \ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/instance.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/instance.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/instance.xml (revision 0) @@ -0,0 +1,34 @@ + + + + Joe Smith +
+
+
+
+ +
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+ \ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml (revision 0) @@ -0,0 +1,46 @@ + + + + Joe Smith + + Anyothertown + X0X0X0 + + + Anytown + X0X0X0 + + + Anytown + Y0Y0Y0 + + + Sometown + X0X0X0 + + + + Some Other St. + Anyothertown + Canada + X0X0X0 + + + Some St. + Anytown + Canada + X0X0X0 + + + Another St. + Anytown + Canada + Y0Y0Y0 + + + Some St. + Sometown + Canada + X0X0X0 + + \ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml (revision 0) @@ -0,0 +1,46 @@ + + + + Joe Smith +
+ Anyothertown + X0X0X0 +
+
+ Anytown + X0X0X0 +
+
+ Anytown + Y0Y0Y0 +
+
+ Sometown + X0X0X0 +
+
+
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+
\ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml (revision 0) @@ -0,0 +1,48 @@ + + + + Joe Smith + + + Anyothertown + X0X0X0 + + + Anytown + X0X0X0 + + + Anytown + Y0Y0Y0 + + + Sometown + X0X0X0 + + + + + Some Other St. + Anyothertown + Canada + X0X0X0 + + + Some St. + Anytown + Canada + X0X0X0 + + + Another St. + Anytown + Canada + Y0Y0Y0 + + + Some St. + Sometown + Canada + X0X0X0 + + \ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml (revision 0) @@ -0,0 +1,48 @@ + + + + Joe Smith + +
+ Anyothertown + X0X0X0 +
+
+ Anytown + X0X0X0 +
+
+ Anytown + Y0Y0Y0 +
+
+ Sometown + X0X0X0 +
+
+
+
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+
\ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml (revision 0) @@ -0,0 +1,48 @@ + + + + Joe Smith + + + Anyothertown + X0X0X0 + + + Anytown + X0X0X0 + + + Anytown + Y0Y0Y0 + + + Sometown + X0X0X0 + + + + + Some Other St. + Anyothertown + Canada + X0X0X0 + + + Some St. + Anytown + Canada + X0X0X0 + + + Another St. + Anytown + Canada + Y0Y0Y0 + + + Some St. + Sometown + Canada + X0X0X0 + + \ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml (revision 0) @@ -0,0 +1,48 @@ + + + + Joe Smith + +
+ Anyothertown + X0X0X0 +
+
+ Anytown + X0X0X0 +
+
+ Anytown + Y0Y0Y0 +
+
+ Sometown + X0X0X0 +
+
+
+
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+
\ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml (revision 0) @@ -0,0 +1,46 @@ + + + + Joe Smith + + Anyothertown + X0X0X0 + + + Anytown + X0X0X0 + + + Anytown + Y0Y0Y0 + + + Sometown + X0X0X0 + + + + Some Other St. + Anyothertown + Canada + X0X0X0 + + + Some St. + Anytown + Canada + X0X0X0 + + + Another St. + Anytown + Canada + Y0Y0Y0 + + + Some St. + Sometown + Canada + X0X0X0 + + \ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml (revision 0) @@ -0,0 +1,46 @@ + + + + Joe Smith +
+ Anyothertown + X0X0X0 +
+
+ Anytown + X0X0X0 +
+
+ Anytown + Y0Y0Y0 +
+
+ Sometown + X0X0X0 +
+
+
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+
\ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/instance.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/instance.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/instance.xml (revision 0) @@ -0,0 +1,36 @@ + + + + Joe Smith + + + + + + + +
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+
\ No newline at end of file Index: resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/instance.xml =================================================================== --- resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/instance.xml (revision 0) +++ resource/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/instance.xml (revision 0) @@ -0,0 +1,36 @@ + + + + Joe Smith + + + + + + + +
+ Some Other St. + Anyothertown + Canada + X0X0X0 +
+
+ Some St. + Anytown + Canada + X0X0X0 +
+
+ Another St. + Anytown + Canada + Y0Y0Y0 +
+
+ Some St. + Sometown + Canada + X0X0X0 +
+
\ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/CompositeAttributeKeysProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/CompositeAttributeKeysProject.java (revision 5626) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/CompositeAttributeKeysProject.java (working copy) @@ -70,9 +70,8 @@ addressMapping.useCollectionClass(ArrayList.class); addressMapping.setAttributeName("addresses"); addressMapping.setReferenceClass(Address.class); - addressMapping.addSourceToTargetKeyFieldAssociation("@address-city", "city/text()"); - addressMapping.addSourceToTargetKeyFieldAssociation("@address-zip", "zip/text()"); - addressMapping.setUsesSingleNode(true); + addressMapping.addSourceToTargetKeyFieldAssociation("address/@id-city", "city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address/@id-zip", "zip/text()"); descriptor.addMapping(addressMapping); return descriptor; } Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/CompositeAttributeKeysTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/CompositeAttributeKeysTestCases.java (revision 5626) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/attributekey/CompositeAttributeKeysTestCases.java (working copy) @@ -29,7 +29,7 @@ } protected Object getControlObject() { - ArrayList addresses = new ArrayList(); + ArrayList addresses = new ArrayList(4); Address address = new Address(); address.id = CONTROL_ADD_ID_1; @@ -55,63 +55,23 @@ address.zip = CONTROL_ADD_ZIP_3; addresses.add(address); - Employee employee = new Employee(); + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); employee.id = CONTROL_ID; employee.name = CONTROL_NAME; employee.addresses = addresses; Root root = new Root(); root.employee = employee; + root.addresses = addresses; return root; } - public Object getWriteControlObject() { - ArrayList rootAddresses = new ArrayList(); - ArrayList empAddresses = new ArrayList(); - - Address address = new Address(); - address.id = CONTROL_ADD_ID_1; - address.street = CONTROL_ADD_STREET_1; - address.city = CONTROL_ADD_CITY_1; - address.country = CONTROL_ADD_COUNTRY_1; - address.zip = CONTROL_ADD_ZIP_1; - empAddresses.add(address); - rootAddresses.add(address); - - address = new Address(); - address.id = CONTROL_ADD_ID_2; - address.street = CONTROL_ADD_STREET_2; - address.city = CONTROL_ADD_CITY_2; - address.country = CONTROL_ADD_COUNTRY_2; - address.zip = CONTROL_ADD_ZIP_2; - empAddresses.add(address); - rootAddresses.add(address); - - address = new Address(); - address.id = CONTROL_ADD_ID_3; - address.street = CONTROL_ADD_STREET_3; - address.city = CONTROL_ADD_CITY_3; - address.country = CONTROL_ADD_COUNTRY_3; - address.zip = CONTROL_ADD_ZIP_3; - empAddresses.add(address); - rootAddresses.add(address); - - address = new Address(); - address.id = CONTROL_ADD_ID_4; - address.street = CONTROL_ADD_STREET_4; - address.city = CONTROL_ADD_CITY_4; - address.country = CONTROL_ADD_COUNTRY_4; - address.zip = CONTROL_ADD_ZIP_4; - rootAddresses.add(address); - - Employee employee = new Employee(); - employee.id = CONTROL_ID; - employee.name = CONTROL_NAME; - employee.addresses = empAddresses; - - Root root = new Root(); - root.employee = employee; - root.addresses = rootAddresses; - return root; - } -} +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/CompositeKeyTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/CompositeKeyTestCases.java (revision 5626) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/CompositeKeyTestCases.java (working copy) @@ -16,12 +16,22 @@ import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.attributekey.CompositeAttributeKeysTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey.CompositeElementKeyNSTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey.CompositeElementKeyTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey.CompositeElementKeyWithGroupingNSTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey.CompositeElementKeyWithGroupingTestCases; import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.nestedattributekey.NestedAttributeKeyTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.singlekey.elementkey.SingleElementKeyTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.singlekey.elementkey.SingleElementKeyWithGroupingTestCases; public class CompositeKeyTestCases extends TestCase { public static Test suite() { TestSuite suite = new TestSuite("Multiple targets with composite key test suite"); suite.addTestSuite(CompositeAttributeKeysTestCases.class); + suite.addTestSuite(CompositeElementKeyTestCases.class); + suite.addTestSuite(CompositeElementKeyWithGroupingTestCases.class); + suite.addTestSuite(CompositeElementKeyNSTestCases.class); + suite.addTestSuite(CompositeElementKeyWithGroupingNSTestCases.class); suite.addTestSuite(NestedAttributeKeyTestCases.class); return suite; } Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingProject.java (revision 0) @@ -0,0 +1,114 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingProject extends Project { + + public CompositeElementKeyWithGroupingProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("root"); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("employee"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setXPath("grouping-element"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-city/text()", "city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-zip/text()", "zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("city/text()"); + descriptor.addPrimaryKeyFieldName("zip/text()"); + descriptor.setDefaultRootElement("address"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml"; + + public CompositeElementKeyTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSProject.java (revision 0) @@ -0,0 +1,127 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.NamespaceResolver; +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingNSProject extends Project { + + public CompositeElementKeyWithGroupingNSProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("ns:root"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("ns:employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("ns:address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("employee"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("ns:name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setXPath("ns:grouping-element"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-city/text()", "ns:city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-zip/text()", "ns:zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("ns:city/text()"); + descriptor.addPrimaryKeyFieldName("ns:zip/text()"); + descriptor.setDefaultRootElement("address"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("ns:street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("ns:city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("ns:country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("ns:zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyNSTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml"; + + public CompositeElementKeyNSTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyNSProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml"; + + public CompositeElementKeyWithGroupingTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyWithGroupingProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyProject.java (revision 0) @@ -0,0 +1,113 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyProject extends Project { + + public CompositeElementKeyProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("root"); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("employee"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-city/text()", "city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-zip/text()", "zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("city/text()"); + descriptor.addPrimaryKeyFieldName("zip/text()"); + descriptor.setDefaultRootElement("address"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingNSTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml"; + + public CompositeElementKeyWithGroupingNSTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyWithGroupingNSProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSProject.java (revision 0) @@ -0,0 +1,126 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.NamespaceResolver; +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyNSProject extends Project { + + public CompositeElementKeyNSProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("ns:root"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("ns:employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("ns:address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("ns:employee"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("ns:name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-city/text()", "ns:city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-zip/text()", "ns:zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("ns:city/text()"); + descriptor.addPrimaryKeyFieldName("ns:zip/text()"); + descriptor.setDefaultRootElement("ns:address"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("ns:street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("ns:city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("ns:country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("ns:zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSProject.java (revision 0) @@ -0,0 +1,126 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.NamespaceResolver; +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyNSProject extends Project { + + public CompositeElementKeyNSProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("ns:root"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("ns:employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("ns:address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("ns:employee"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("ns:name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-city/text()", "ns:city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-zip/text()", "ns:zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("ns:city/text()"); + descriptor.addPrimaryKeyFieldName("ns:zip/text()"); + descriptor.setDefaultRootElement("ns:address"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("ns:street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("ns:city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("ns:country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("ns:zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyNSTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyNSTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-ns.xml"; + + public CompositeElementKeyNSTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyNSProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyProject.java (revision 0) @@ -0,0 +1,113 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyProject extends Project { + + public CompositeElementKeyProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("root"); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("employee"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-city/text()", "city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-zip/text()", "zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("city/text()"); + descriptor.addPrimaryKeyFieldName("zip/text()"); + descriptor.setDefaultRootElement("address"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance.xml"; + + public CompositeElementKeyTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSProject.java (revision 0) @@ -0,0 +1,127 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.NamespaceResolver; +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingNSProject extends Project { + + public CompositeElementKeyWithGroupingNSProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("ns:root"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("ns:employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("ns:address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("employee"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("ns:name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setXPath("ns:grouping-element"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-city/text()", "ns:city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-zip/text()", "ns:zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("ns:city/text()"); + descriptor.addPrimaryKeyFieldName("ns:zip/text()"); + descriptor.setDefaultRootElement("address"); + // create namespace resolver + NamespaceResolver nsResolver = new NamespaceResolver(); + nsResolver.put("ns", "urn:example"); + descriptor.setNamespaceResolver(nsResolver); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("ns:street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("ns:city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("ns:country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("ns:zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingNSTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingNSTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping-ns.xml"; + + public CompositeElementKeyWithGroupingNSTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyWithGroupingNSProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingProject.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingProject.java (revision 0) @@ -0,0 +1,114 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.oxm.XMLDescriptor; +import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; +import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; +import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; +import org.eclipse.persistence.sessions.Project; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingProject extends Project { + + public CompositeElementKeyWithGroupingProject() { + addDescriptor(getRootDescriptor()); + addDescriptor(getEmployeeDescriptor()); + addDescriptor(getAddressDescriptor()); + } + + private XMLDescriptor getRootDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Root.class); + descriptor.setDefaultRootElement("root"); + // create employee mapping + XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); + empMapping.setAttributeName("employee"); + empMapping.setXPath("employee"); + empMapping.setReferenceClass(Employee.class); + descriptor.addMapping(empMapping); + // create address mapping + XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); + addMapping.setAttributeName("addresses"); + addMapping.setXPath("address"); + addMapping.setReferenceClass(Address.class); + descriptor.addMapping(addMapping); + return descriptor; + } + + private XMLDescriptor getEmployeeDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Employee.class); + descriptor.setDefaultRootElement("employee"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@id"); + descriptor.addMapping(idMapping); + // create name mapping + XMLDirectMapping nameMapping = new XMLDirectMapping(); + nameMapping.setAttributeName("name"); + nameMapping.setXPath("name/text()"); + descriptor.addMapping(nameMapping); + // create address mapping + XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); + addressMapping.useCollectionClass(ArrayList.class); + addressMapping.setAttributeName("addresses"); + addressMapping.setXPath("grouping-element"); + addressMapping.setReferenceClass(Address.class); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-city/text()", "city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address/id-zip/text()", "zip/text()"); + descriptor.addMapping(addressMapping); + return descriptor; + } + + private XMLDescriptor getAddressDescriptor() { + XMLDescriptor descriptor = new XMLDescriptor(); + descriptor.setJavaClass(Address.class); + descriptor.addPrimaryKeyFieldName("city/text()"); + descriptor.addPrimaryKeyFieldName("zip/text()"); + descriptor.setDefaultRootElement("address"); + // create id mapping + XMLDirectMapping idMapping = new XMLDirectMapping(); + idMapping.setAttributeName("id"); + idMapping.setXPath("@aid"); + descriptor.addMapping(idMapping); + // create street mapping + XMLDirectMapping streetMapping = new XMLDirectMapping(); + streetMapping.setAttributeName("street"); + streetMapping.setXPath("street/text()"); + descriptor.addMapping(streetMapping); + // create city mapping + XMLDirectMapping cityMapping = new XMLDirectMapping(); + cityMapping.setAttributeName("city"); + cityMapping.setXPath("city/text()"); + descriptor.addMapping(cityMapping); + // create country mapping + XMLDirectMapping countryMapping = new XMLDirectMapping(); + countryMapping.setAttributeName("country"); + countryMapping.setXPath("country/text()"); + descriptor.addMapping(countryMapping); + // create zip mapping + XMLDirectMapping zipMapping = new XMLDirectMapping(); + zipMapping.setAttributeName("zip"); + zipMapping.setXPath("zip/text()"); + descriptor.addMapping(zipMapping); + return descriptor; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingTestCases.java (revision 0) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/CompositeElementKeyWithGroupingTestCases.java (revision 0) @@ -0,0 +1,77 @@ +/******************************************************************************* +* Copyright (c) 1998, 2009 Oracle. All rights reserved. +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 +* which accompanies this distribution. +* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +* and the Eclipse Distribution License is available at +* http://www.eclipse.org/org/documents/edl-v10.php. +* +* Contributors: +* bdoughan - Oct 21/2009 - 2.0 - Initial implementation +******************************************************************************/ +package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; + +import java.util.ArrayList; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; +import org.eclipse.persistence.testing.oxm.mappings.keybased.KeyBasedMappingTestCases; +import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; + +public class CompositeElementKeyWithGroupingTestCases extends KeyBasedMappingTestCases { + private final static String XML_RESOURCE = "org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/elementkey/instance-grouping.xml"; + + public CompositeElementKeyWithGroupingTestCases(String name) throws Exception { + super(name); + setControlDocument(XML_RESOURCE); + setProject(new CompositeElementKeyWithGroupingProject()); + } + + protected Object getControlObject() { + ArrayList addresses = new ArrayList(4); + + Address address = new Address(); + address.id = CONTROL_ADD_ID_1; + address.street = CONTROL_ADD_STREET_1; + address.city = CONTROL_ADD_CITY_1; + address.country = CONTROL_ADD_COUNTRY_1; + address.zip = CONTROL_ADD_ZIP_1; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_2; + address.street = CONTROL_ADD_STREET_2; + address.city = CONTROL_ADD_CITY_2; + address.country = CONTROL_ADD_COUNTRY_2; + address.zip = CONTROL_ADD_ZIP_2; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_3; + address.street = CONTROL_ADD_STREET_3; + address.city = CONTROL_ADD_CITY_3; + address.country = CONTROL_ADD_COUNTRY_3; + address.zip = CONTROL_ADD_ZIP_3; + addresses.add(address); + + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); + + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); + root.employee = employee; + root.addresses = addresses; + return root; + } + +} \ No newline at end of file Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/NestedAttributeKeyProject.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/NestedAttributeKeyProject.java (revision 5626) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/NestedAttributeKeyProject.java (working copy) @@ -69,9 +69,10 @@ XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); addressMapping.useCollectionClass(ArrayList.class); addressMapping.setAttributeName("addresses"); + addressMapping.setXPath("addresses"); addressMapping.setReferenceClass(Address.class); - addressMapping.addSourceToTargetKeyFieldAssociation("addresses/address-ref/@address-city", "city/text()"); - addressMapping.addSourceToTargetKeyFieldAssociation("addresses/address-ref/@address-zip", "zip/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address-ref/@address-city", "city/text()"); + addressMapping.addSourceToTargetKeyFieldAssociation("address-ref/@address-zip", "zip/text()"); addressMapping.setUsesSingleNode(false); descriptor.addMapping(addressMapping); return descriptor; Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/NestedAttributeKeyTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/NestedAttributeKeyTestCases.java (revision 5626) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/compositekey/nestedattributekey/NestedAttributeKeyTestCases.java (working copy) @@ -55,16 +55,25 @@ address.zip = CONTROL_ADD_ZIP_3; addresses.add(address); - Employee employee = new Employee(); - employee.id = CONTROL_ID; - employee.name = CONTROL_NAME; - employee.addresses = addresses; + address = new Address(); + address.id = CONTROL_ADD_ID_4; + address.street = CONTROL_ADD_STREET_4; + address.city = CONTROL_ADD_CITY_4; + address.country = CONTROL_ADD_COUNTRY_4; + address.zip = CONTROL_ADD_ZIP_4; + addresses.add(address); - Root root = new Root(); + Employee employee = new Employee(); + employee.id = CONTROL_ID; + employee.name = CONTROL_NAME; + employee.addresses = addresses; + + Root root = new Root(); root.employee = employee; root.addresses = addresses; return root; } + /* public Object getWriteControlObject() { ArrayList rootAddresses = new ArrayList(); ArrayList empAddresses = new ArrayList(); @@ -107,4 +116,5 @@ root.addresses = rootAddresses; return root; } + */ } Index: src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/MultipleTargetTestCases.java =================================================================== --- src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/MultipleTargetTestCases.java (revision 5626) +++ src/org/eclipse/persistence/testing/oxm/mappings/keybased/multipletargets/MultipleTargetTestCases.java (working copy) @@ -15,6 +15,8 @@ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; + +import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.CompositeKeyTestCases; import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.singlekey.SingleKeyTestCases; //import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.CompositeKeyTestCases; @@ -22,8 +24,9 @@ public static Test suite() { TestSuite suite = new TestSuite("Multiple target test suite"); suite.addTest(SingleKeyTestCases.suite()); - // Keep the composite key test suite commented out until bug# 5683210 is addressed - //suite.addTest(CompositeKeyTestCases.suite()); + + // Testing fix for bug# 5683210 + suite.addTest(CompositeKeyTestCases.suite()); return suite; }