[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] [MOXy] additional xpath support
|
cool! Do you have any documentation that describes when users should choose
SAXPlatform vs. DOMPlatform? I was using SAX because I thought the
DOMPlatform would be slower. Is that a concern or do you recommend that
everyone uses DOMPlatform?
Thanks,
Polly
Blaise Doughan wrote:
>
> Hi Polly,
>
> There is actually already unmarshal support for these types of XPaths if
> you use our DOMPlatform. I have attached an example, in this example
> one of the mappings has the following XPath:
>
>
> addressMapping.setXPath("//ns:customer/ns:phone-number/preceding-sibling::*[1]");
>
> Note you will need the fix for bug #298114, this fix will be available
> in the 2.0.1 and 2.1 nightly builds starting tomorrow (Dec 18).
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=298114
>
> -Blaise
>
> polly.c.chang wrote:
>> Hi,
>>
>> I don't believe that MOXy currently supports these two features:
>>
>> 1. Support for preceding-sibling and following-sibling axis. This is
>> necessary so that we can check for a following-sibling of an ID with the
>> name VersionID.
>>
>> 2. Support for position() and false() functions.
>>
>> Would it be possible to add these?
>>
>> Thanks!
>> --Polly
>>
>>
>>
>>
>
> /*******************************************************************************
> * 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 - December 17/2009 - 2.0.1 - Initial implementation
> ******************************************************************************/
> package org.eclipse.persistence.testing.oxm.mappings.advancedxpath;
>
> import org.eclipse.persistence.oxm.NamespaceResolver;
> import org.eclipse.persistence.oxm.XMLDescriptor;
> import org.eclipse.persistence.oxm.XMLLogin;
> import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping;
> import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;
> import org.eclipse.persistence.oxm.platform.DOMPlatform;
> import org.eclipse.persistence.sessions.Project;
>
> public class CustomerProject extends Project {
>
> public CustomerProject() {
> XMLLogin xmlLogin = new XMLLogin();
> xmlLogin.setDatasourcePlatform(new DOMPlatform());
> this.setDatasourceLogin(xmlLogin);
>
> this.addDescriptor(getCustomerDescriptor());
> this.addDescriptor(getAddressDescriptor());
> }
>
> private XMLDescriptor getCustomerDescriptor() {
> XMLDescriptor xmlDescriptor = new XMLDescriptor();
> xmlDescriptor.setJavaClass(Customer.class);
> xmlDescriptor.setDefaultRootElement("ns:customer");
>
> NamespaceResolver nsResolver = new NamespaceResolver();
> nsResolver.put("ns", "urn:example");
> xmlDescriptor.setNamespaceResolver(nsResolver);
>
> XMLCompositeObjectMapping addressMapping = new
> XMLCompositeObjectMapping();
> addressMapping.setAttributeName("address");
>
> addressMapping.setXPath("//ns:customer/ns:phone-number/preceding-sibling::*[1]");
> addressMapping.setReferenceClass(Address.class);
> xmlDescriptor.addMapping(addressMapping);
>
> return xmlDescriptor;
> }
>
> private XMLDescriptor getAddressDescriptor() {
> XMLDescriptor xmlDescriptor = new XMLDescriptor();
> xmlDescriptor.setJavaClass(Address.class);
>
> NamespaceResolver nsResolver = new NamespaceResolver();
> nsResolver.put("ns", "urn:example");
> xmlDescriptor.setNamespaceResolver(nsResolver);
>
> XMLDirectMapping streetMapping = new XMLDirectMapping();
> streetMapping.setAttributeName("street");
> streetMapping.setXPath("text()");
> xmlDescriptor.addMapping(streetMapping);
>
> return xmlDescriptor;
> }
>
> }
> /*******************************************************************************
> * 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 - December 17/2009 - 2.0.1 - Initial implementation
> ******************************************************************************/
> package org.eclipse.persistence.testing.oxm.mappings.advancedxpath;
>
> public class Address {
>
> private String street;
>
> public String getStreet() {
> return street;
> }
>
> public void setStreet(String street) {
> this.street = street;
> }
>
> public boolean equals(Object object) {
> try {
> if(null == object) {
> return false;
> }
> Address testAddress = (Address) object;
> if(null == street) {
> return null == testAddress.getStreet();
> } else {
> return street.equals(testAddress.getStreet());
> }
> } catch(ClassCastException e) {
> return false;
> }
> }
>
> public String toString() {
> String string = "Address(street=";
> if(null == street) {
> string += null;
> } else {
> string += "'" + street + "'";
> }
> return string += ")";
> }
>
> }
> /*******************************************************************************
> * 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 - December 17/2009 - 2.0.1 - Initial implementation
> ******************************************************************************/
> package org.eclipse.persistence.testing.oxm.mappings.advancedxpath;
>
> public class Customer {
>
> private Address address;
>
> public Address getAddress() {
> return address;
> }
>
> public void setAddress(Address address) {
> this.address = address;
> }
>
> public boolean equals(Object object) {
> try {
> if(null == object) {
> return false;
> }
> Customer testCustomer = (Customer) object;
> if(null == address) {
> return null == testCustomer.getAddress();
> } else {
> return address.equals(testCustomer.getAddress());
> }
> } catch(ClassCastException e) {
> return false;
> }
> }
>
> public String toString() {
> String string = "Customer(address=";
> if(null == address) {
> string += null;
> } else {
> string += address.toString();
> }
> return string += ")";
> }
>
> }
> <ns:customer xmlns:ns="urn:example">
> <ns:address>Wrong Street</ns:address>
> <ns:address>Right Street</ns:address>
> <ns:phone-number/>
> <ns:address>Wrong Street</ns:address>
> </ns:customer>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>
--
View this message in context: http://old.nabble.com/-MOXy--additional-xpath-support-tp26822783p26835902.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.