From 881494d2d1f8c186ebbe45433a34ef7d859c6adb Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 30 Sep 2011 22:07:56 +0000 Subject: Use the cached marshaller/unmarshaller for JAXB databinding git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1177857 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tuscany/sca/databinding/jaxb/Node2JAXB.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java') diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java index c191f42c1d..8c66195d29 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java @@ -24,10 +24,10 @@ import javax.xml.bind.ValidationEvent; import javax.xml.bind.util.ValidationEventCollector; import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.databinding.BaseTransformer; import org.apache.tuscany.sca.databinding.PullTransformer; import org.apache.tuscany.sca.databinding.TransformationContext; import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.BaseTransformer; import org.w3c.dom.Node; /** @@ -36,19 +36,18 @@ import org.w3c.dom.Node; */ public class Node2JAXB extends BaseTransformer implements PullTransformer { private JAXBContextHelper contextHelper; - private ValidationEventCollector validationEventCollector = new ValidationEventCollector(); public Node2JAXB(ExtensionPointRegistry registry) { contextHelper = JAXBContextHelper.getInstance(registry); } public Object transform(Node source, TransformationContext context) { + ValidationEventCollector validationEventCollector = new ValidationEventCollector(); Object response = null; if (source == null) return null; try { JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Object result; // TUSCANY-3791 synchronized(source){ @@ -56,9 +55,14 @@ public class Node2JAXB extends BaseTransformer implements PullTran System.setProperty("jaxb.debug", "true"); unmarshaller.setListener(new DebugListener()); */ - validationEventCollector.reset(); - unmarshaller.setEventHandler(validationEventCollector); - result = unmarshaller.unmarshal(source, JAXBContextHelper.getJavaType(context.getTargetDataType())); + Unmarshaller unmarshaller = contextHelper.getUnmarshaller(jaxbContext); + try { + validationEventCollector.reset(); + unmarshaller.setEventHandler(validationEventCollector); + result = unmarshaller.unmarshal(source, JAXBContextHelper.getJavaType(context.getTargetDataType())); + } finally { + contextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller); + } } response = JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); } catch (Exception e) { -- cgit v1.2.3