public class JAXBHelperContext extends SDOHelperContext
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);
SDOHelperContext.MyNotificationFiltercopyHelper, dataFactory, dataHelper, equalityHelper, typeHelper, xmlHelper, xsdHelper| Constructor and Description |
|---|
JAXBHelperContext(JAXBContext aJAXBContext)
Create a new instance of JAXBHelperContext
|
JAXBHelperContext(JAXBContext aJAXBContext,
java.lang.ClassLoader aClassLoader)
Create a new instance of JAXBHelperContext
|
| Modifier and Type | Method and Description |
|---|---|
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.
|
addAlias, createResolvable, createResolvable, getCopyHelper, getDataFactory, getDataHelper, getEqualityHelper, getHelperContext, getHelperContext, getHelperContext, getIdentifier, getProperty, getTypeHelper, getXMLHelper, getXSDHelper, hasHelperContext, isApplicationResolverSet, makeDefaultContext, putHelperContext, putHelperContext, removeHelperContext, removeHelperContext, reset, setApplicationResolver, setPropertypublic 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).protected void initialize(java.lang.ClassLoader aClassLoader)
initialize in class SDOHelperContextpublic 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)