Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Examples/MOXy/GettingStarted/TheBasics"

(New page: ==Overview== This example will demonstrate how easy it is to convert objects to XML using EclipseLink MOXy (JAXB). ==Domain Model== For this example our domain model will represent custo...)
 
(Specifying the EclipseLink MOXy Runtime)
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==Overview==
 
==Overview==
This example will demonstrate how easy it is to convert objects to XML using EclipseLink MOXy (JAXB).
+
No metadata is required to convert your existing object model to XML.  This example will demonstrate how easy it is to convert objects to XML using EclipseLink MOXy (JAXB).  In later examples we will supply metadata to customize the XML representation.
  
 
==Domain Model==
 
==Domain Model==
Line 7: Line 7:
  
 
<source lang="java">
 
<source lang="java">
package example.model;
+
package example.gettingstarted;
  
 +
import java.util.ArrayList;
 
import java.util.List;
 
import java.util.List;
  
Line 16: Line 17:
 
     private Address address;
 
     private Address address;
 
     private List<PhoneNumber> phoneNumbers;
 
     private List<PhoneNumber> phoneNumbers;
 +
 +
    public Customer() {
 +
        phoneNumbers = new ArrayList<PhoneNumber>();
 +
    }
  
 
     public String getName() {
 
     public String getName() {
Line 45: Line 50:
  
 
<source lang="java">
 
<source lang="java">
package example.model;
+
package example.gettingstarted;
  
 
public class Address {
 
public class Address {
Line 72: Line 77:
  
 
<source lang="java">
 
<source lang="java">
package example.model;
+
package example.gettingstarted;
  
 
public class PhoneNumber {
 
public class PhoneNumber {
  
 +
    private String type;
 
     private String value;
 
     private String value;
 +
 +
    public String getType() {
 +
        return type;
 +
    }
 +
 +
    public void setType(String type) {
 +
        this.type = type;
 +
    }
  
 
     public String getValue() {
 
     public String getValue() {
Line 87: Line 101:
  
 
}
 
}
 +
</source>
 +
 +
==Specifying the EclipseLink MOXy Runtime==
 +
 +
You will need to have the JAXB APIs (included in Java SE 6) and eclipselink.jar ([http://www.eclipse.org/eclipselink/downloads/ download site]) on your classpath.
 +
 +
To specify that the EclipseLink MOXy (JAXB) runtime should be used you need to add a file called jaxb.properties in the same package as the domain classes with the following entry.
 +
<source lang="text">
 +
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
 +
</source>
 +
 +
==Converting Objects to XML==
 +
 +
The following code is used to convert the objects to XML.
 +
 +
<source lang="java">
 +
package example.gettingstarted;
 +
 +
import javax.xml.bind.JAXBContext;
 +
import javax.xml.bind.JAXBElement;
 +
import javax.xml.bind.JAXBException;
 +
import javax.xml.bind.Marshaller;
 +
import javax.xml.namespace.QName;
 +
 +
public class Demo {
 +
 +
    public static void main(String[] args) throws JAXBException {
 +
 +
        // Step 1 - Create the Domain Model
 +
 +
        Customer customer = new Customer();
 +
        customer.setName("Jane Doe");
 +
 +
        Address address = new Address();
 +
        address.setStreet("123 Any Street");
 +
        address.setCity("My Town");
 +
        customer.setAddress(address);
 +
 +
        PhoneNumber workPhoneNumber = new PhoneNumber();
 +
        workPhoneNumber.setType("work");
 +
        workPhoneNumber.setValue("613-555-1111");
 +
        customer.getPhoneNumbers().add(workPhoneNumber);
 +
 +
        PhoneNumber cellPhoneNumber = new PhoneNumber();
 +
        cellPhoneNumber.setType("cell");
 +
        cellPhoneNumber.setValue("613-555-2222");
 +
        customer.getPhoneNumbers().add(cellPhoneNumber);
 +
 +
        // Step 2 - Convert the Domain Model to XML
 +
 +
        JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
 +
 +
        Marshaller marshaller = jaxbContext.createMarshaller();
 +
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
 +
 +
        JAXBElement<Customer> jaxbElement = new JAXBElement<Customer>(new QName(null, "customer"), Customer.class, customer);
 +
        marshaller.marshal(jaxbElement, System.out);
 +
 +
    }
 +
 +
}
 +
</source>
 +
 +
==XML Output==
 +
 +
The following is the resulting XML.  In the next example ([[EclipseLink/Examples/MOXy/GettingStarted/JAXBCustomizations|JAXB Customizations]]) we will demonstrate how to control the format of the XML document using JAXB annotations.
 +
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<customer>
 +
    <address>
 +
        <city>My Town</city>
 +
        <street>123 Any Street</street>
 +
    </address>
 +
    <name>Jane Doe</name>
 +
    <phoneNumbers>
 +
        <type>work</type>
 +
        <value>613-555-1111</value>
 +
    </phoneNumbers>
 +
    <phoneNumbers>
 +
        <type>cell</type>
 +
        <value>613-555-2222</value>
 +
    </phoneNumbers>
 +
</customer>
 
</source>
 
</source>

Latest revision as of 11:36, 25 June 2010

Overview

No metadata is required to convert your existing object model to XML. This example will demonstrate how easy it is to convert objects to XML using EclipseLink MOXy (JAXB). In later examples we will supply metadata to customize the XML representation.

Domain Model

For this example our domain model will represent customer information.

package example.gettingstarted;
 
import java.util.ArrayList;
import java.util.List;
 
public class Customer {
 
    private String name;
    private Address address;
    private List<PhoneNumber> phoneNumbers;
 
    public Customer() {
        phoneNumbers = new ArrayList<PhoneNumber>();
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Address getAddress() {
        return address;
    }
 
    public void setAddress(Address address) {
        this.address = address;
    }
 
    public List<PhoneNumber> getPhoneNumbers() {
        return phoneNumbers;
    }
 
    public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {
        this.phoneNumbers = phoneNumbers;
    }
 
}
package example.gettingstarted;
 
public class Address {
 
    private String street;
    private String city;
 
    public String getStreet() {
        return street;
    }
 
    public void setStreet(String street) {
        this.street = street;
    }
 
    public String getCity() {
        return city;
    }
 
    public void setCity(String city) {
        this.city = city;
    }
 
}
package example.gettingstarted;
 
public class PhoneNumber {
 
    private String type;
    private String value;
 
    public String getType() {
        return type;
    }
 
    public void setType(String type) {
        this.type = type;
    }
 
    public String getValue() {
        return value;
    }
 
    public void setValue(String value) {
        this.value = value;
    }
 
}

Specifying the EclipseLink MOXy Runtime

You will need to have the JAXB APIs (included in Java SE 6) and eclipselink.jar (download site) on your classpath.

To specify that the EclipseLink MOXy (JAXB) runtime should be used you need to add a file called jaxb.properties in the same package as the domain classes with the following entry.

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

Converting Objects to XML

The following code is used to convert the objects to XML.

package example.gettingstarted;
 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.namespace.QName;
 
public class Demo {
 
    public static void main(String[] args) throws JAXBException {
 
        // Step 1 - Create the Domain Model
 
        Customer customer = new Customer();
        customer.setName("Jane Doe");
 
        Address address = new Address();
        address.setStreet("123 Any Street");
        address.setCity("My Town");
        customer.setAddress(address);
 
        PhoneNumber workPhoneNumber = new PhoneNumber();
        workPhoneNumber.setType("work");
        workPhoneNumber.setValue("613-555-1111");
        customer.getPhoneNumbers().add(workPhoneNumber);
 
        PhoneNumber cellPhoneNumber = new PhoneNumber();
        cellPhoneNumber.setType("cell");
        cellPhoneNumber.setValue("613-555-2222");
        customer.getPhoneNumbers().add(cellPhoneNumber);
 
        // Step 2 - Convert the Domain Model to XML
 
        JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
 
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
 
        JAXBElement<Customer> jaxbElement = new JAXBElement<Customer>(new QName(null, "customer"), Customer.class, customer);
        marshaller.marshal(jaxbElement, System.out);
 
    }
 
}

XML Output

The following is the resulting XML. In the next example (JAXB Customizations) we will demonstrate how to control the format of the XML document using JAXB annotations.

<?xml version="1.0" encoding="UTF-8"?>
<customer>
    <address>
        <city>My Town</city>
        <street>123 Any Street</street>
    </address>
    <name>Jane Doe</name>
    <phoneNumbers>
        <type>work</type>
        <value>613-555-1111</value>
    </phoneNumbers>
    <phoneNumbers>
        <type>cell</type>
        <value>613-555-2222</value>
    </phoneNumbers>
</customer>

Back to the top