|
EclipseLink 1.1.0_ 1.1.0.r3634 API Reference | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.eclipse.persistence.sdo.helper.SDOHelperContext
org.eclipse.persistence.sdo.helper.jaxb.JAXBHelperContext
public class JAXBHelperContext
The JAXBHelperContext is a bridge between POJOs and SDO DataObjects. The bridge is based on their corresponding XML representations. For the POJOs the XML representation is specified using JAXB annotations or object-to-XML mappings.
The following steps are required to create the JAXBHelperContext. The XML schema used in step #3 is the same one that the POJOs are mapped to. This step has been separated so that SDO annotations could be added to the XML schema.
Step #1 - Create the JAXBContext
JAXBContext jaxbContext = JAXBContext.newInstance("com.example.customer");
Step #2 - Create the JAXBHelperContext
JAXBHelperContext jaxbHelperContext = new JAXBHelperContext(jaxbContext);
Step #3 - Create the SDO Metadata from an XML Schema
jaxbHelperContext.getXSDHelper().define(xmlSchema);
The JAXBHelperContext allows you to convert between POJOs and DataObjects using a wrap operation.
Customer customer = new Customer();
Address address new Address();
address.setStreet("123 Any Street");
customer.set(address);
DataObject customerDO = jaxbHelperContext.wrap(customer);
customerDO.getString("address/street"); // returns "123 Any Street"
The JAXBHelperContext allows you to convert between DataObjects and POJOs using an unwrap operation.
Type customerType = jaxbHelperContext.getType(Customer.class);
DataObject customerDO = jaxbHelperContext.getDataFactory().create(customerType);
customerDO.set("first-name", "Jane");
Customer customer = jaxbHelperContext.unwrap(customerDO);
customer.getFirstName(); // returns "Jane"
Of course the POJOs may be JPA entities. Below is an example of wrapping the results of a JPA query.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("CustomerExample");
EntityManager em = emf.createEntityManager();
List entities = em.createQuery("SELECT e FROM MyEntity e WHERE ...").getResultList();
List dataObjects = hc.wrap(entities);
| Field Summary |
|---|
| Fields inherited from class org.eclipse.persistence.sdo.helper.SDOHelperContext |
|---|
copyHelper, dataFactory, dataHelper, equalityHelper, typeHelper, xmlHelper, xsdHelper |
| Constructor Summary | |
|---|---|
JAXBHelperContext(javax.xml.bind.JAXBContext aJAXBContext)
Create a new instance of JAXBHelperContext |
|
JAXBHelperContext(javax.xml.bind.JAXBContext aJAXBContext,
java.lang.ClassLoader aClassLoader)
Create a new instance of JAXBHelperContext |
|
| Method Summary | |
|---|---|
javax.xml.bind.JAXBContext |
getJAXBContext()
Return the JAXBContext. |
Type |
getType(java.lang.Class entityClass)
Return the SDO type corresponding to the wrapped class. |
protected void |
initialize(java.lang.ClassLoader aClassLoader)
Override the default helpers/factories, replacing them with JAXB aware ones where necessary. |
java.util.List<java.lang.Object> |
unwrap(java.util.Collection<DataObject> dataObjects)
Perform the unwrap operation on each of the DataObjects in the collection, and return the results as a List. |
java.lang.Object |
unwrap(DataObject dataObject)
Return the POJO that is wrapped by the DataObject. |
java.util.List<DataObject> |
wrap(java.util.Collection<java.lang.Object> entities)
Perform the wrap operation on each of the POJOs in the collection, and return the results as a List. |
DataObject |
wrap(java.lang.Object entity)
Return a DataObject that wraps a POJO. |
| Methods inherited from class org.eclipse.persistence.sdo.helper.SDOHelperContext |
|---|
createResolvable, createResolvable, getCopyHelper, getDataFactory, getDataHelper, getEqualityHelper, getHelperContext, getTypeHelper, getXMLHelper, getXSDHelper, makeDefaultContext, putHelperContext, removeHelperContext, reset |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public JAXBHelperContext(javax.xml.bind.JAXBContext aJAXBContext)
aJAXBContext - - The JAXBContext representing the class to XML schema mapping.
public JAXBHelperContext(javax.xml.bind.JAXBContext aJAXBContext,
java.lang.ClassLoader aClassLoader)
aJAXBContext - - The JAXBContext representing the class to XML schema mapping.aClassLoader - - The ClassLoader containing the generated SDO classes/interfaces (if any).| Method Detail |
|---|
protected void initialize(java.lang.ClassLoader aClassLoader)
initialize in class SDOHelperContextpublic javax.xml.bind.JAXBContext getJAXBContext()
public Type getType(java.lang.Class entityClass)
Type customerType = jaxbHelperContext.getType(Customer.class); DataObject customerDO = jaxbHelperContext.getDataFactory().create(customerType);
public DataObject wrap(java.lang.Object entity)
Customer customer = new Customer();
Address address new Address();
address.setStreet("123 Any Street");
customer.set(address);
DataObject customerDO = jaxbHelperContext.wrap(customer);
customerDO.getString("address/street"); // returns "123 Any Street"
Multiple calls to wrap for the same instance POJO return the
same instance of DataObject, in other words the following is
always true:
jaxbHelperContext.wrap(customer123) == jaxbHelperContext.wrap(customer123) jaxbHelperContext.wrap(customer123) != jaxbHelperContext.wrap(customer456)
public java.util.List<DataObject> wrap(java.util.Collection<java.lang.Object> entities)
public java.lang.Object unwrap(DataObject dataObject)
Type customerType = jaxbHelperContext.getType(Customer.class);
DataObject customerDO = jaxbHelperContext.getDataFactory().create(customerType);
DataObject addressDO = customerDO.create("address");
addressDO.set("street", "123 Any Street");
Customer customer = (Customer) jaxbHelperContext.unwrap(customerDO);
customer.getAddress().getStreet(); // returns "123 Any Street"
Multiple calls to unwrap for the same DataObject must return the
same instance of Object, in other words the following is always true:
jaxbHelperContext.unwrap(customerDO123) == jaxbHelperContext.unwrap(customerDO123) jaxbHelperContext.unwrap(customerDO123) != jaxbHelperContext.unwrap(customerDO456) customer123 == jaxbHelperContext.unwrap(jaxbHelperContext.wrap(customer123))
public java.util.List<java.lang.Object> unwrap(java.util.Collection<DataObject> dataObjects)
|
EclipseLink 1.1.0_ 1.1.0.r3634 API Reference | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||