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