diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-10-30 00:04:47 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-10-30 00:04:47 +0000 |
commit | 8a515e9f25fc7fefa03860d1f14e4bcf47bdeb63 (patch) | |
tree | b58a349a83afd25a8a677e7c3b1058e3996b2bcd /java/sca/modules/databinding-jaxb-axiom/src/main/java | |
parent | 4fa2f6af33e964521800a3ad2919c2e14c6c956f (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')
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 |