|
|||||||||
| 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);
| Constructor Summary | |
|---|---|
JAXBHelperContext(JAXBContext aJAXBContext)
Create a new instance of JAXBHelperContext |
|
JAXBHelperContext(JAXBContext aJAXBContext,
ClassLoader aClassLoader)
Create a new instance of JAXBHelperContext |
|
| Method Summary | |
|---|---|
Class |
getClass(commonj.sdo.Type type)
Return the wrapped class corresponding to the SDO type. |
JAXBContext |
getJAXBContext()
Return the JAXBContext. |
commonj.sdo.Type |
getType(Class entityClass)
Return the SDO type corresponding to the wrapped class. |
List<Object> |
unwrap(Collection<commonj.sdo.DataObject> dataObjects)
Perform the unwrap operation on each of the DataObjects in the collection, and return the results as a List. |
Object |
unwrap(commonj.sdo.DataObject dataObject)
Return the POJO that is wrapped by the DataObject. |
List<commonj.sdo.DataObject> |
wrap(Collection<Object> entities)
Perform the wrap operation on each of the POJOs in the collection, and return the results as a List. |
commonj.sdo.DataObject |
wrap(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, getHelperContext, getHelperContext, getIdentifier, getTypeHelper, getXMLHelper, getXSDHelper, makeDefaultContext, putHelperContext, putHelperContext, removeHelperContext, removeHelperContext, reset |
| Methods inherited from class java.lang.Object |
|---|
equals, 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,
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 |
|---|
public JAXBContext getJAXBContext()
public commonj.sdo.Type getType(Class entityClass)
Type customerType = jaxbHelperContext.getType(Customer.class); DataObject customerDO = jaxbHelperContext.getDataFactory().create(customerType);
public Class getClass(commonj.sdo.Type type)
Type customerType = jaxbHelperContext.getTypeHelper().getType("urn:customer", "customer");
Class customerClass = jaxbHelperContext.getClass(customerType);
public commonj.sdo.DataObject wrap(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 List<commonj.sdo.DataObject> wrap(Collection<Object> entities)
public Object unwrap(commonj.sdo.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 List<Object> unwrap(Collection<commonj.sdo.DataObject> dataObjects)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||