diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org')
10 files changed, 91 insertions, 43 deletions
diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/InputStream2JAXB.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/InputStream2JAXB.java index 90ce48d086..b6baf9c0bd 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/InputStream2JAXB.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/InputStream2JAXB.java @@ -47,10 +47,15 @@ public class InputStream2JAXB extends BaseTransformer<InputStream, Object> imple } try { JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); StreamSource streamSource = new StreamSource(source); - Object result = unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType())); - return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + Unmarshaller unmarshaller = contextHelper.getUnmarshaller(jaxbContext); + try { + Object result = + unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType())); + return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + } finally { + contextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller); + } } catch (Exception e) { throw new TransformationException(e); } diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java index 3d25af5b25..44c3a5e04f 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java @@ -23,10 +23,10 @@ import javax.xml.bind.Marshaller; import org.apache.tuscany.sca.common.xml.dom.DOMHelper; 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.apache.tuscany.sca.databinding.xml.DOMDataBinding; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -38,25 +38,32 @@ import org.w3c.dom.Node; public class JAXB2Node extends BaseTransformer<Object, Node> implements PullTransformer<Object, Node> { private DOMHelper helper; private JAXBContextHelper contextHelper; - + public JAXB2Node(ExtensionPointRegistry registry) { super(); helper = DOMHelper.getInstance(registry); contextHelper = JAXBContextHelper.getInstance(registry); } - + public Node transform(Object source, TransformationContext tContext) { -// if (source == null) { -// return null; -// } + // if (source == null) { + // return null; + // } try { JAXBContext context = contextHelper.createJAXBContext(tContext, true); - Marshaller marshaller = context.createMarshaller(); + // FIXME: The default Marshaller doesn't support // marshaller.getNode() Document document = helper.newDocument(); Object jaxbElement = JAXBContextHelper.createJAXBElement(context, tContext.getSourceDataType(), source); - marshaller.marshal(jaxbElement, document); + Marshaller marshaller = contextHelper.getMarshaller(context); + marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE); + + try { + marshaller.marshal(jaxbElement, document); + } finally { + contextHelper.releaseJAXBMarshaller(context, marshaller); + } return DOMDataBinding.adjustElementName(tContext, document.getDocumentElement()); } catch (Exception e) { throw new TransformationException(e); diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2OutputStream.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2OutputStream.java index 2e7ab628c1..0dac091186 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2OutputStream.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2OutputStream.java @@ -58,9 +58,14 @@ public class JAXB2OutputStream extends BaseTransformer<Object, OutputStream> imp public void transform(Object source, OutputStream target, TransformationContext tContext) { try { JAXBContext context = contextHelper.createJAXBContext(tContext, true); - Marshaller marshaller = context.createMarshaller(); Object jaxbElement = JAXBContextHelper.createJAXBElement(context, tContext.getSourceDataType(), source); - marshaller.marshal(jaxbElement, target); + Marshaller marshaller = contextHelper.getMarshaller(context); + marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE); + try { + marshaller.marshal(jaxbElement, target); + } finally { + contextHelper.releaseJAXBMarshaller(context, marshaller); + } } catch (Exception e) { throw new TransformationException(e); } diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2SAX.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2SAX.java index a0b6ff8237..83c7a78034 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2SAX.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2SAX.java @@ -23,10 +23,10 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.databinding.BaseTransformer; import org.apache.tuscany.sca.databinding.PushTransformer; import org.apache.tuscany.sca.databinding.TransformationContext; import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.BaseTransformer; import org.xml.sax.ContentHandler; /** @@ -57,9 +57,15 @@ public class JAXB2SAX extends BaseTransformer<Object, ContentHandler> implements public void transform(Object source, ContentHandler target, TransformationContext tContext) { try { JAXBContext context = contextHelper.createJAXBContext(tContext, true); - Marshaller marshaller = context.createMarshaller(); Object jaxbElement = JAXBContextHelper.createJAXBElement(context, tContext.getSourceDataType(), source); - marshaller.marshal(jaxbElement, target); + Marshaller marshaller = contextHelper.getMarshaller(context); + marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE); + + try { + marshaller.marshal(jaxbElement, target); + } finally { + contextHelper.releaseJAXBMarshaller(context, marshaller); + } } catch (Exception e) { throw new TransformationException(e); } diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2String.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2String.java index 7ecca3a042..6731f5ae1c 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2String.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2String.java @@ -25,10 +25,10 @@ import javax.xml.bind.Marshaller; import javax.xml.transform.stream.StreamResult; 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.apache.tuscany.sca.databinding.xml.XMLStringDataBinding; /** @@ -44,11 +44,15 @@ public class JAXB2String extends BaseTransformer<Object, String> implements Pull public String transform(Object source, TransformationContext tContext) { try { JAXBContext context = contextHelper.createJAXBContext(tContext, true); - Marshaller marshaller = context.createMarshaller(); StringWriter writer = new StringWriter(); StreamResult result = new StreamResult(writer); Object jaxbElement = JAXBContextHelper.createJAXBElement(context, tContext.getSourceDataType(), source); - marshaller.marshal(jaxbElement, result); + Marshaller marshaller = contextHelper.getMarshaller(context); + try { + marshaller.marshal(jaxbElement, result); + } finally { + contextHelper.releaseJAXBMarshaller(context, marshaller); + } return writer.toString(); } catch (Exception e) { throw new TransformationException(e); diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java index a73e2a1c24..77b6b619ad 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java @@ -199,6 +199,7 @@ public class JAXBContextCache { if (marshaller == null) { marshaller = context.createMarshaller(); } + marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); return marshaller; } 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<Node, Object> implements PullTransformer<Node, Object> { 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<Node, Object> 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) { diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java index b063d9524f..59495d4234 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java @@ -25,10 +25,10 @@ import javax.xml.bind.Unmarshaller; import javax.xml.transform.stream.StreamSource; 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; /** * @@ -46,11 +46,16 @@ public class Reader2JAXB extends BaseTransformer<Reader, Object> implements return null; } try { - JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); StreamSource streamSource = new StreamSource(source); - Object result = unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType())); - return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + + JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false); + Unmarshaller unmarshaller = contextHelper.getUnmarshaller(jaxbContext); + try { + Object result = unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType())); + return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + } finally { + contextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller); + } } catch (Exception e) { throw new TransformationException(e); } diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/String2JAXB.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/String2JAXB.java index 9d0accefcc..82259d8618 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/String2JAXB.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/String2JAXB.java @@ -25,10 +25,10 @@ import javax.xml.bind.Unmarshaller; import javax.xml.transform.stream.StreamSource; 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.apache.tuscany.sca.databinding.xml.XMLStringDataBinding; /** @@ -49,10 +49,15 @@ public class String2JAXB extends BaseTransformer<String, Object> implements } try { JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + StreamSource streamSource = new StreamSource(new StringReader(source)); - Object result = unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType())); - return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + Unmarshaller unmarshaller = contextHelper.getUnmarshaller(jaxbContext); + try { + Object result = unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType())); + return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + } finally { + contextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller); + } } catch (Exception e) { throw new TransformationException(e); } diff --git a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java index 9c3760b119..4d400f963d 100644 --- a/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java +++ b/sca-java-2.x/trunk/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java @@ -23,10 +23,10 @@ import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLStreamReader; 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; /** * @@ -36,23 +36,29 @@ public class XMLStreamReader2JAXB extends BaseTransformer<XMLStreamReader, Objec PullTransformer<XMLStreamReader, Object> { private JAXBContextHelper contextHelper; - + public XMLStreamReader2JAXB(ExtensionPointRegistry registry) { contextHelper = JAXBContextHelper.getInstance(registry); } - + public Object transform(XMLStreamReader source, TransformationContext context) { if (source == null) { return null; } try { JAXBContext jaxbContext = contextHelper.createJAXBContext(context, false); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - // FIXME: [rfeng] If the java type is Object.class, the unmarshalled result will be - // a DOM Node - Object result = unmarshaller.unmarshal(source, JAXBContextHelper.getJavaType(context.getTargetDataType())); - source.close(); - return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + Unmarshaller unmarshaller = contextHelper.getUnmarshaller(jaxbContext); + try { + // FIXME: [rfeng] If the java type is Object.class, the unmarshalled result will be + // a DOM Node + Object result = + unmarshaller.unmarshal(source, JAXBContextHelper.getJavaType(context.getTargetDataType())); + source.close(); + return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result); + } finally { + contextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller); + } + } catch (Exception e) { throw new TransformationException(e); } |