You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2012/04/11 22:56:33 UTC

svn commit: r1325003 - in /camel/branches/camel-2.8.x/components/camel-jaxb/src: main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java

Author: cmueller
Date: Wed Apr 11 20:56:32 2012
New Revision: 1325003

URL: http://svn.apache.org/viewvc?rev=1325003&view=rev
Log:
CAMEL-3776: Add pooling support for JAXB data format

Modified:
    camel/branches/camel-2.8.x/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
    camel/branches/camel-2.8.x/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java

Modified: camel/branches/camel-2.8.x/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java?rev=1325003&r1=1325002&r2=1325003&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java (original)
+++ camel/branches/camel-2.8.x/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java Wed Apr 11 20:56:32 2012
@@ -31,6 +31,7 @@ import javax.xml.namespace.QName;
 import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamSource;
@@ -38,10 +39,10 @@ import javax.xml.transform.stream.Stream
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
+import org.apache.camel.TypeConverter;
 import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.ServiceSupport;
 import org.apache.camel.spi.DataFormat;
-import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -68,6 +69,7 @@ public class JaxbDataFormat extends Serv
     private String partClass;
     private Class partialClass;
 
+    private TypeConverter typeConverter;
     private Unmarshaller unmarshaller;
     private ReentrantLock lock = new ReentrantLock();
 
@@ -142,19 +144,21 @@ public class JaxbDataFormat extends Serv
             try {
                 if (partialClass != null) {
                     // partial unmarshalling
-                    Source source;
                     if (needFiltering(exchange)) {
-                        source = new StreamSource(createNonXmlFilterReader(exchange, stream));
+                        Source source = new StreamSource(createNonXmlFilterReader(exchange, stream));
+                        answer = getUnmarshaller().unmarshal(source, partialClass);
                     } else {
-                        source = new StreamSource(stream);
+                        XMLStreamReader xmlReader = typeConverter.convertTo(XMLStreamReader.class, stream);
+                        answer = getUnmarshaller().unmarshal(xmlReader, partialClass);
                     }
-                    answer = getUnmarshaller().unmarshal(source, partialClass);
+
                 } else {
                     if (needFiltering(exchange)) {
                         NonXmlFilterReader reader = createNonXmlFilterReader(exchange, stream);
                         answer = getUnmarshaller().unmarshal(reader);
                     } else  {
-                        answer = getUnmarshaller().unmarshal(stream);
+                        XMLStreamReader xmlReader = typeConverter.convertTo(XMLStreamReader.class, stream);
+                        answer = getUnmarshaller().unmarshal(xmlReader);
                     }
                 }
             }  finally {
@@ -277,6 +281,7 @@ public class JaxbDataFormat extends Serv
             partialClass = camelContext.getClassResolver().resolveMandatoryClass(partClass);
         }
         unmarshaller = getContext().createUnmarshaller();
+        typeConverter = camelContext.getTypeConverter();
     }
 
     @Override

Modified: camel/branches/camel-2.8.x/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java?rev=1325003&r1=1325002&r2=1325003&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java (original)
+++ camel/branches/camel-2.8.x/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java Wed Apr 11 20:56:32 2012
@@ -27,6 +27,7 @@ import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
@@ -137,7 +138,7 @@ public class JaxbDataFormatTest {
 
         jaxbDataFormatMock.unmarshal(new DefaultExchange(camelContext), new ByteArrayInputStream(new byte[] {}));
 
-        verify(unmarshallerMock).unmarshal((InputStream) argThat(not(instanceOf(NonXmlFilterReader.class))));
+        verify(unmarshallerMock).unmarshal((XMLStreamReader) argThat(instanceOf(XMLStreamReader.class)));
     }
 
     @Test