From eb399860441bd6089885187d5f73ea278856c3c7 Mon Sep 17 00:00:00 2001 From: scottkurz Date: Mon, 15 Sep 2008 22:44:48 +0000 Subject: Commit changes for TUSCANY-2590. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@695676 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/databinding/jaxb/axiom/OMElement2JAXB.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java') diff --git a/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java b/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java index 00e99aaacd..827a1684bc 100644 --- a/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java +++ b/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.tuscany.sca.databinding.jaxb.axiom; import java.security.AccessController; @@ -51,15 +50,21 @@ public class OMElement2JAXB extends BaseTransformer implement try { return AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws JAXBException, XMLStreamException { + Unmarshaller unmarshaller = null; + XMLStreamReader reader = null; + Object result = null; // 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); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - XMLStreamReader reader = source.getXMLStreamReaderWithoutCaching(); - Object result = - unmarshaller.unmarshal(reader, JAXBContextHelper.getJavaType(context.getTargetDataType())); - reader.close(); + try { + unmarshaller = JAXBContextHelper.getUnmarshaller(jaxbContext); + reader = source.getXMLStreamReaderWithoutCaching(); + result = unmarshaller.unmarshal(reader, JAXBContextHelper.getJavaType(context.getTargetDataType())); + } finally { + reader.close(); + JAXBContextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller); + } return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); } }); -- cgit v1.2.3