|
EclipseLink 2.0.0, build 'v20091127-r5931' 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(); Listentities = 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(JAXBContext aJAXBContext)
Create a new instance of JAXBHelperContext |
|
JAXBHelperContext(JAXBContext aJAXBContext,
java.lang.ClassLoader aClassLoader)
Create a new instance of JAXBHelperContext |
Method Summary | |
---|---|
java.lang.Class |
getClass(Type type)
Return the wrapped class corresponding to the SDO type. |
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(JAXBContext aJAXBContext)
aJAXBContext
- - The JAXBContext representing the class to XML schema mapping.public JAXBHelperContext(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 SDOHelperContext
public JAXBContext getJAXBContext()
public Type getType(java.lang.Class entityClass)
Type customerType = jaxbHelperContext.getType(Customer.class); DataObject customerDO = jaxbHelperContext.getDataFactory().create(customerType);
public java.lang.Class getClass(Type type)
Type customerType = jaxbHelperContext.getTypeHelper().getType("urn:customer", "customer"); Class customerClass = jaxbHelperContext.getClass(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 2.0.0, build 'v20091127-r5931' API Reference | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |