summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/databinding-jaxb-axiom/src/main/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-30 00:04:47 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-30 00:04:47 +0000
commit8a515e9f25fc7fefa03860d1f14e4bcf47bdeb63 (patch)
treeb58a349a83afd25a8a677e7c3b1058e3996b2bcd /java/sca/modules/databinding-jaxb-axiom/src/main/java
parent4fa2f6af33e964521800a3ad2919c2e14c6c956f (diff)
Refactor JAXBContextCache/JAXBContextHelper to be a utility bound to the extension point registry
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@831163 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/databinding-jaxb-axiom/src/main/java')
-rw-r--r--java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java13
-rw-r--r--java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXBDataSource.java21
-rw-r--r--java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java14
-rw-r--r--java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/ext/JAXBDSContext.java8
4 files changed, 33 insertions, 23 deletions
diff --git a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java
index e0e0c08f6c..862894be09 100644
--- a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java
+++ b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXB2OMElement.java
@@ -25,6 +25,7 @@ import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.databinding.PullTransformer;
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.TransformationException;
@@ -38,12 +39,14 @@ import org.apache.tuscany.sca.databinding.jaxb.JAXBDataBinding;
* @version $Rev$ $Date$
*/
public class JAXB2OMElement extends BaseTransformer<Object, OMElement> implements PullTransformer<Object, OMElement> {
- public JAXB2OMElement() {
+ private OMFactory factory = OMAbstractFactory.getOMFactory();
+ private JAXBContextHelper contextHelper;
+
+ public JAXB2OMElement(ExtensionPointRegistry registry) {
super();
+ contextHelper = JAXBContextHelper.getInstance(registry);
}
- private OMFactory factory = OMAbstractFactory.getOMFactory();
-
@Override
public String getSourceDataBinding() {
return JAXBDataBinding.NAME;
@@ -52,13 +55,13 @@ public class JAXB2OMElement extends BaseTransformer<Object, OMElement> implement
public OMElement transform(Object source, TransformationContext context) throws TransformationException {
JAXBContext jaxbContext;
try {
- jaxbContext = JAXBContextHelper.createJAXBContext(context, true);
+ jaxbContext = contextHelper.createJAXBContext(context, true);
} catch (JAXBException e) {
throw new TransformationException(e);
}
Object element = JAXBContextHelper.createJAXBElement(jaxbContext, context.getTargetDataType(), source);
QName name = jaxbContext.createJAXBIntrospector().getElementName(element);
- JAXBDataSource dataSource = new JAXBDataSource(element, jaxbContext);
+ JAXBDataSource dataSource = new JAXBDataSource(element, jaxbContext, contextHelper);
OMElement omElement = AxiomHelper.createOMElement(factory, name, dataSource);
return omElement;
}
diff --git a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXBDataSource.java b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXBDataSource.java
index cc28d5e710..0dacce996f 100644
--- a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXBDataSource.java
+++ b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/JAXBDataSource.java
@@ -18,9 +18,6 @@
*/
package org.apache.tuscany.sca.databinding.jaxb.axiom;
-import static org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper.getMarshaller;
-import static org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper.releaseJAXBMarshaller;
-
import java.io.OutputStream;
import java.io.StringReader;
import java.io.StringWriter;
@@ -38,6 +35,7 @@ import javax.xml.stream.XMLStreamWriter;
import org.apache.axiom.om.OMDataSource;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.om.util.StAXUtils;
+import org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper;
/**
*
@@ -46,11 +44,12 @@ import org.apache.axiom.om.util.StAXUtils;
public class JAXBDataSource implements OMDataSource {
private JAXBContext context;
private Object element;
- // private Marshaller marshaller;
+ private JAXBContextHelper contextHelper;
- public JAXBDataSource(Object element, JAXBContext context) {
+ public JAXBDataSource(Object element, JAXBContext context, JAXBContextHelper contextHelper) {
this.element = element;
this.context = context;
+ this.contextHelper = contextHelper;
}
public XMLStreamReader getReader() throws XMLStreamException {
@@ -70,10 +69,10 @@ public class JAXBDataSource implements OMDataSource {
public Object run() throws Exception {
Marshaller marshaller = null;
try {
- marshaller = getMarshaller(context);
+ marshaller = contextHelper.getMarshaller(context);
marshaller.marshal(element, xmlWriter);
} finally {
- releaseJAXBMarshaller(context, marshaller);
+ contextHelper.releaseJAXBMarshaller(context, marshaller);
}
return null;
}
@@ -90,10 +89,10 @@ public class JAXBDataSource implements OMDataSource {
public Object run() throws Exception {
Marshaller marshaller = null;
try {
- marshaller = getMarshaller(context);
+ marshaller = contextHelper.getMarshaller(context);
marshaller.marshal(element, output);
} finally {
- releaseJAXBMarshaller(context, marshaller);
+ contextHelper.releaseJAXBMarshaller(context, marshaller);
}
return null;
}
@@ -109,10 +108,10 @@ public class JAXBDataSource implements OMDataSource {
public Object run() throws Exception {
Marshaller marshaller = null;
try {
- marshaller = getMarshaller(context);
+ marshaller = contextHelper.getMarshaller(context);
marshaller.marshal(element, writer);
} finally {
- releaseJAXBMarshaller(context, marshaller);
+ contextHelper.releaseJAXBMarshaller(context, marshaller);
}
return null;
}
diff --git a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
index 8e9b32cfc0..aa5fc5b789 100644
--- a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
+++ b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
@@ -30,6 +30,7 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.util.StreamReaderDelegate;
import org.apache.axiom.om.OMElement;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.databinding.PullTransformer;
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.TransformationException;
@@ -40,7 +41,12 @@ import org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper;
* @version $Rev$ $Date$
*/
public class OMElement2JAXB extends BaseTransformer<OMElement, Object> implements PullTransformer<OMElement, Object> {
-
+ private JAXBContextHelper contextHelper;
+
+ public OMElement2JAXB(ExtensionPointRegistry registry) {
+ super();
+ contextHelper = JAXBContextHelper.getInstance(registry);
+ }
@Override
public String getSourceDataBinding() {
return org.apache.axiom.om.OMElement.class.getName();
@@ -56,9 +62,9 @@ public class OMElement2JAXB extends BaseTransformer<OMElement, Object> implement
// Marshalling directly to the output stream is faster than marshalling through the
// XMLStreamWriter.
// Take advantage of this optimization if there is an output stream.
- JAXBContext jaxbContext = JAXBContextHelper.createJAXBContext(context, false);
+ JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false);
try {
- unmarshaller = JAXBContextHelper.getUnmarshaller(jaxbContext);
+ unmarshaller = contextHelper.getUnmarshaller(jaxbContext);
reader = source.getXMLStreamReaderWithoutCaching();
// https://issues.apache.org/jira/browse/WSCOMMONS-395
reader = new StreamReaderDelegate(reader) {
@@ -73,7 +79,7 @@ public class OMElement2JAXB extends BaseTransformer<OMElement, Object> implement
if (reader != null) {
reader.close();
}
- JAXBContextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller);
+ contextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller);
}
return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result);
}
diff --git a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/ext/JAXBDSContext.java b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/ext/JAXBDSContext.java
index 28997cd244..f6bd33864f 100644
--- a/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/ext/JAXBDSContext.java
+++ b/java/sca/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/ext/JAXBDSContext.java
@@ -51,6 +51,7 @@ public class JAXBDSContext {
private static final boolean DEBUG_ENABLED = log.isLoggable(Level.FINER);
private JAXBContext jaxbContext = null; // JAXBContext
+ private JAXBContextHelper contextHelper;
/**
* "Dispatch" Constructor Use this full constructor when the JAXBContent is provided by the
@@ -58,8 +59,9 @@ public class JAXBDSContext {
*
* @param jaxbContext
*/
- public JAXBDSContext(JAXBContext jaxbContext) {
+ public JAXBDSContext(JAXBContext jaxbContext, JAXBContextHelper contextHelper) {
this.jaxbContext = jaxbContext;
+ this.contextHelper = contextHelper;
}
public JAXBContext getJAXBContext() {
@@ -74,7 +76,7 @@ public class JAXBDSContext {
*/
public Object unmarshal(XMLStreamReader reader) throws JAXBException {
- Unmarshaller u = JAXBContextHelper.getUnmarshaller(getJAXBContext());
+ Unmarshaller u = contextHelper.getUnmarshaller(getJAXBContext());
Object jaxb = null;
@@ -101,7 +103,7 @@ public class JAXBDSContext {
// Very easy, use the Context to get the Marshaller.
// Use the marshaller to write the object.
- Marshaller m = JAXBContextHelper.getMarshaller(getJAXBContext());
+ Marshaller m = contextHelper.getMarshaller(getJAXBContext());
AttachmentMarshaller am = m.getAttachmentMarshaller();
boolean xop = am != null ? am.isXOPPackage() : false;
// Marshal the object