/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License 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 - August 25/2009 - 1.2 - Initial implementation | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.oxm.xmlcontext.byxpath; | |
import org.eclipse.persistence.oxm.NamespaceResolver; | |
import org.eclipse.persistence.oxm.XMLDescriptor; | |
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; | |
public class CustomerNSProject extends Project { | |
public CustomerNSProject() { | |
this.addDescriptor(getCustomerDescriptor()); | |
this.addDescriptor(getAddressDescriptor()); | |
this.addDescriptor(getPhoneNumberDescriptor()); | |
this.addDescriptor(getEmergencyContactDescriptor()); | |
} | |
private XMLDescriptor getCustomerDescriptor() { | |
XMLDescriptor xmlDescriptor = new XMLDescriptor(); | |
xmlDescriptor.setJavaClass(Customer.class); | |
NamespaceResolver namespaceResolver = new NamespaceResolver(); | |
namespaceResolver.put("ns", "urn:customer"); | |
xmlDescriptor.setNamespaceResolver(namespaceResolver); | |
XMLDirectMapping idMapping = new XMLDirectMapping(); | |
idMapping.setAttributeName("id"); | |
idMapping.setXPath("@ns:id"); | |
xmlDescriptor.addMapping(idMapping); | |
XMLDirectMapping firstNameMapping = new XMLDirectMapping(); | |
firstNameMapping.setAttributeName("firstName"); | |
firstNameMapping.setXPath("ns:personal-info/ns:first-name/text()"); | |
xmlDescriptor.addMapping(firstNameMapping); | |
XMLCompositeObjectMapping emergencyContactMapping = new XMLCompositeObjectMapping(); | |
emergencyContactMapping.setAttributeName("emergencyContact"); | |
emergencyContactMapping.setXPath("."); | |
emergencyContactMapping.setReferenceClass(EmergencyContact.class); | |
xmlDescriptor.addMapping(emergencyContactMapping); | |
XMLCompositeObjectMapping addressMapping = new XMLCompositeObjectMapping(); | |
addressMapping.setAttributeName("address"); | |
addressMapping.setXPath("ns:contact-info/ns:address"); | |
addressMapping.setReferenceClass(Address.class); | |
xmlDescriptor.addMapping(addressMapping); | |
XMLCompositeCollectionMapping phoneNumberMapping = new XMLCompositeCollectionMapping(); | |
phoneNumberMapping.setAttributeName("phoneNumbers"); | |
phoneNumberMapping.setXPath("ns:contact-info/ns:phone-number"); | |
phoneNumberMapping.setReferenceClass(PhoneNumber.class); | |
xmlDescriptor.addMapping(phoneNumberMapping); | |
return xmlDescriptor; | |
} | |
private XMLDescriptor getAddressDescriptor() { | |
XMLDescriptor xmlDescriptor = new XMLDescriptor(); | |
xmlDescriptor.setJavaClass(Address.class); | |
NamespaceResolver namespaceResolver = new NamespaceResolver(); | |
namespaceResolver.put("ns", "urn:customer"); | |
xmlDescriptor.setNamespaceResolver(namespaceResolver); | |
XMLDirectMapping street1Mapping = new XMLDirectMapping(); | |
street1Mapping.setAttributeName("street1"); | |
street1Mapping.setXPath("ns:street[1]/text()"); | |
xmlDescriptor.addMapping(street1Mapping); | |
XMLDirectMapping street2Mapping = new XMLDirectMapping(); | |
street2Mapping.setAttributeName("street2"); | |
street2Mapping.setXPath("ns:street[2]/text()"); | |
xmlDescriptor.addMapping(street2Mapping); | |
XMLDirectMapping cityMapping = new XMLDirectMapping(); | |
cityMapping.setAttributeName("city"); | |
cityMapping.setXPath("ns:city/text()"); | |
xmlDescriptor.addMapping(cityMapping); | |
return xmlDescriptor; | |
} | |
private XMLDescriptor getPhoneNumberDescriptor() { | |
XMLDescriptor xmlDescriptor = new XMLDescriptor(); | |
xmlDescriptor.setJavaClass(PhoneNumber.class); | |
NamespaceResolver namespaceResolver = new NamespaceResolver(); | |
namespaceResolver.put("ns", "urn:customer"); | |
xmlDescriptor.setNamespaceResolver(namespaceResolver); | |
XMLDirectMapping valueMapping = new XMLDirectMapping(); | |
valueMapping.setAttributeName("value"); | |
valueMapping.setXPath("text()"); | |
xmlDescriptor.addMapping(valueMapping); | |
return xmlDescriptor; | |
} | |
private XMLDescriptor getEmergencyContactDescriptor() { | |
XMLDescriptor xmlDescriptor = new XMLDescriptor(); | |
xmlDescriptor.setJavaClass(EmergencyContact.class); | |
NamespaceResolver namespaceResolver = new NamespaceResolver(); | |
namespaceResolver.put("ns", "urn:customer"); | |
xmlDescriptor.setNamespaceResolver(namespaceResolver); | |
XMLDirectMapping nameMapping = new XMLDirectMapping(); | |
nameMapping.setAttributeName("name"); | |
nameMapping.setXPath("ns:emergency-contact/text()"); | |
xmlDescriptor.addMapping(nameMapping); | |
return xmlDescriptor; | |
} | |
} |