Line 0
Link Here
|
|
|
1 |
/******************************************************************************* |
2 |
* Copyright (c) 1998, 2009 Oracle. All rights reserved. |
3 |
* This program and the accompanying materials are made available under the |
4 |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
5 |
* which accompanies this distribution. |
6 |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
7 |
* and the Eclipse Distribution License is available at |
8 |
* http://www.eclipse.org/org/documents/edl-v10.php. |
9 |
* |
10 |
* Contributors: |
11 |
* bdoughan - Oct 21/2009 - 2.0 - Initial implementation |
12 |
******************************************************************************/ |
13 |
package org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.compositekey.elementkey; |
14 |
|
15 |
import java.util.ArrayList; |
16 |
|
17 |
import org.eclipse.persistence.oxm.NamespaceResolver; |
18 |
import org.eclipse.persistence.oxm.XMLDescriptor; |
19 |
import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping; |
20 |
import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; |
21 |
import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping; |
22 |
import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; |
23 |
import org.eclipse.persistence.sessions.Project; |
24 |
import org.eclipse.persistence.testing.oxm.mappings.keybased.Address; |
25 |
import org.eclipse.persistence.testing.oxm.mappings.keybased.Root; |
26 |
import org.eclipse.persistence.testing.oxm.mappings.keybased.multipletargets.Employee; |
27 |
|
28 |
public class CompositeElementKeyWithGroupingNSProject extends Project { |
29 |
|
30 |
public CompositeElementKeyWithGroupingNSProject() { |
31 |
addDescriptor(getRootDescriptor()); |
32 |
addDescriptor(getEmployeeDescriptor()); |
33 |
addDescriptor(getAddressDescriptor()); |
34 |
} |
35 |
|
36 |
private XMLDescriptor getRootDescriptor() { |
37 |
XMLDescriptor descriptor = new XMLDescriptor(); |
38 |
descriptor.setJavaClass(Root.class); |
39 |
descriptor.setDefaultRootElement("ns:root"); |
40 |
// create namespace resolver |
41 |
NamespaceResolver nsResolver = new NamespaceResolver(); |
42 |
nsResolver.put("ns", "urn:example"); |
43 |
descriptor.setNamespaceResolver(nsResolver); |
44 |
// create employee mapping |
45 |
XMLCompositeObjectMapping empMapping = new XMLCompositeObjectMapping(); |
46 |
empMapping.setAttributeName("employee"); |
47 |
empMapping.setXPath("ns:employee"); |
48 |
empMapping.setReferenceClass(Employee.class); |
49 |
descriptor.addMapping(empMapping); |
50 |
// create address mapping |
51 |
XMLCompositeCollectionMapping addMapping = new XMLCompositeCollectionMapping(); |
52 |
addMapping.setAttributeName("addresses"); |
53 |
addMapping.setXPath("ns:address"); |
54 |
addMapping.setReferenceClass(Address.class); |
55 |
descriptor.addMapping(addMapping); |
56 |
return descriptor; |
57 |
} |
58 |
|
59 |
private XMLDescriptor getEmployeeDescriptor() { |
60 |
XMLDescriptor descriptor = new XMLDescriptor(); |
61 |
descriptor.setJavaClass(Employee.class); |
62 |
descriptor.setDefaultRootElement("employee"); |
63 |
// create namespace resolver |
64 |
NamespaceResolver nsResolver = new NamespaceResolver(); |
65 |
nsResolver.put("ns", "urn:example"); |
66 |
descriptor.setNamespaceResolver(nsResolver); |
67 |
// create id mapping |
68 |
XMLDirectMapping idMapping = new XMLDirectMapping(); |
69 |
idMapping.setAttributeName("id"); |
70 |
idMapping.setXPath("@id"); |
71 |
descriptor.addMapping(idMapping); |
72 |
// create name mapping |
73 |
XMLDirectMapping nameMapping = new XMLDirectMapping(); |
74 |
nameMapping.setAttributeName("name"); |
75 |
nameMapping.setXPath("ns:name/text()"); |
76 |
descriptor.addMapping(nameMapping); |
77 |
// create address mapping |
78 |
XMLCollectionReferenceMapping addressMapping = new XMLCollectionReferenceMapping(); |
79 |
addressMapping.useCollectionClass(ArrayList.class); |
80 |
addressMapping.setAttributeName("addresses"); |
81 |
addressMapping.setXPath("ns:grouping-element"); |
82 |
addressMapping.setReferenceClass(Address.class); |
83 |
addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-city/text()", "ns:city/text()"); |
84 |
addressMapping.addSourceToTargetKeyFieldAssociation("ns:address/ns:id-zip/text()", "ns:zip/text()"); |
85 |
descriptor.addMapping(addressMapping); |
86 |
return descriptor; |
87 |
} |
88 |
|
89 |
private XMLDescriptor getAddressDescriptor() { |
90 |
XMLDescriptor descriptor = new XMLDescriptor(); |
91 |
descriptor.setJavaClass(Address.class); |
92 |
descriptor.addPrimaryKeyFieldName("ns:city/text()"); |
93 |
descriptor.addPrimaryKeyFieldName("ns:zip/text()"); |
94 |
descriptor.setDefaultRootElement("address"); |
95 |
// create namespace resolver |
96 |
NamespaceResolver nsResolver = new NamespaceResolver(); |
97 |
nsResolver.put("ns", "urn:example"); |
98 |
descriptor.setNamespaceResolver(nsResolver); |
99 |
// create id mapping |
100 |
XMLDirectMapping idMapping = new XMLDirectMapping(); |
101 |
idMapping.setAttributeName("id"); |
102 |
idMapping.setXPath("@aid"); |
103 |
descriptor.addMapping(idMapping); |
104 |
// create street mapping |
105 |
XMLDirectMapping streetMapping = new XMLDirectMapping(); |
106 |
streetMapping.setAttributeName("street"); |
107 |
streetMapping.setXPath("ns:street/text()"); |
108 |
descriptor.addMapping(streetMapping); |
109 |
// create city mapping |
110 |
XMLDirectMapping cityMapping = new XMLDirectMapping(); |
111 |
cityMapping.setAttributeName("city"); |
112 |
cityMapping.setXPath("ns:city/text()"); |
113 |
descriptor.addMapping(cityMapping); |
114 |
// create country mapping |
115 |
XMLDirectMapping countryMapping = new XMLDirectMapping(); |
116 |
countryMapping.setAttributeName("country"); |
117 |
countryMapping.setXPath("ns:country/text()"); |
118 |
descriptor.addMapping(countryMapping); |
119 |
// create zip mapping |
120 |
XMLDirectMapping zipMapping = new XMLDirectMapping(); |
121 |
zipMapping.setAttributeName("zip"); |
122 |
zipMapping.setXPath("ns:zip/text()"); |
123 |
descriptor.addMapping(zipMapping); |
124 |
return descriptor; |
125 |
} |
126 |
|
127 |
} |