Author: cmueller
Date: Wed Apr  4 06:33:59 2012
New Revision: 1309262

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

Modified:
    
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
    
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/DataFormatConcurrentTest.java

Modified: 
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java?rev=1309262&r1=1309261&r2=1309262&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
 (original)
+++ 
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
 Wed Apr  4 06:33:59 2012
@@ -58,6 +58,7 @@ public class FallbackTypeConverter imple
     private static final transient Logger LOG = 
LoggerFactory.getLogger(FallbackTypeConverter.class);
     private Map<Class<?>, JAXBContext> contexts = new HashMap<Class<?>, 
JAXBContext>();
     private Map<Class<?>, Unmarshaller> unmarshallers = new HashMap<Class<?>, 
Unmarshaller>();
+    private XMLOutputFactory outputFactory;
     private TypeConverter parentTypeConverter;
     private boolean prettyPrint = true;
 
@@ -192,7 +193,7 @@ public class FallbackTypeConverter imple
                 marshaller.setProperty(Marshaller.JAXB_ENCODING, 
exchange.getProperty(Exchange.CHARSET_NAME, String.class));
             }
             if (needFiltering(exchange)) {
-                XMLStreamWriter writer = 
XMLOutputFactory.newInstance().createXMLStreamWriter(buffer);
+                XMLStreamWriter writer = 
getOutputFactory().createXMLStreamWriter(buffer);
                 FilteringXmlStreamWriter filteringWriter = new 
FilteringXmlStreamWriter(writer);
                 marshaller.marshal(value, filteringWriter);
             } else {
@@ -258,4 +259,11 @@ public class FallbackTypeConverter imple
         }
         return unmarshaller;
     }
+
+    public XMLOutputFactory getOutputFactory() {
+        if (outputFactory == null) {
+            outputFactory = XMLOutputFactory.newInstance();
+        }
+        return outputFactory;
+    }
 }

Modified: 
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/DataFormatConcurrentTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/DataFormatConcurrentTest.java?rev=1309262&r1=1309261&r2=1309262&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/DataFormatConcurrentTest.java
 (original)
+++ 
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/DataFormatConcurrentTest.java
 Wed Apr  4 06:33:59 2012
@@ -67,7 +67,7 @@ public class DataFormatConcurrentTest ex
         template.setDefaultEndpointUri("direct:unmarshalFallback");
 
         ExecutorService pool = Executors.newFixedThreadPool(20);
-        long start = System.currentTimeMillis();
+        //long start = System.currentTimeMillis();
         for (int i = 0; i < counter; i++) {
             pool.execute(new Runnable() {
                 public void run() {
@@ -79,8 +79,8 @@ public class DataFormatConcurrentTest ex
 
         // should finish on fast machines in less than 3 seconds
         assertTrue(latch.await(10, TimeUnit.SECONDS));
-        long end = System.currentTimeMillis();
-        System.out.println("took " + (end - start) + "ms");
+        //long end = System.currentTimeMillis();
+        //System.out.println("took " + (end - start) + "ms");
     }
 
     @Test


Reply via email to