Hi Claus Good catcher , I will fix it in my next commit.
Thanks, Willem Claus Ibsen wrote: > On Mon, Feb 23, 2009 at 4:52 AM, <ningji...@apache.org> wrote: >> Author: ningjiang >> Date: Mon Feb 23 03:52:43 2009 >> New Revision: 746872 >> >> URL: http://svn.apache.org/viewvc?rev=746872&view=rev >> Log: >> CAMEL-1370 caching the StreamSource by caching the inputStream or reader >> >> Modified: >> >> camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java >> >> camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java >> >> camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java >> >> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java >> >> Modified: >> camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java?rev=746872&r1=746871&r2=746872&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java >> (original) >> +++ >> camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java >> Mon Feb 23 03:52:43 2009 >> @@ -45,18 +45,18 @@ >> private XmlConverter converter = new XmlConverter(); >> >> @Converter >> - public StreamCache convertToStreamCache(StreamSource source) throws >> TransformerException { >> - return new SourceCache(converter.toString(source)); >> + public StreamCache convertToStreamCache(StreamSource source) throws >> IOException { >> + return new StreamSourceCache(source); >> } >> >> @Converter >> - public StreamCache convertToStreamCache(StringSource source) throws >> TransformerException { >> + public StreamCache convertToStreamCache(StringSource source) { >> //no need to do stream caching for a StringSource >> return null; >> } >> >> @Converter >> - public StreamCache convertToStreamCache(BytesSource source) throws >> TransformerException { >> + public StreamCache convertToStreamCache(BytesSource source) { >> //no need to do stream caching for a BytesSource >> return null; >> } >> @@ -95,6 +95,35 @@ >> } >> >> } >> + >> + /* >> + * {...@link StreamCache} implementation for Cache the StreamSource >> {...@link StreamSource}s >> + */ >> + private class StreamSourceCache extends StreamSource implements >> StreamCache { >> + InputStreamCache inputStreamCache; >> + ReaderCache readCache; >> + >> + public StreamSourceCache(StreamSource source) throws IOException { >> + if (source.getInputStream() != null) { >> + inputStreamCache = new >> InputStreamCache(IOConverter.toBytes(source.getInputStream())); >> + setInputStream(inputStreamCache); >> + setSystemId(source.getSystemId()); >> + } >> + if (source.getReader() != null) { >> + readCache = new >> ReaderCache(IOConverter.toString(source.getReader())); >> + setReader(readCache); >> + } >> + } >> + public void reset() { >> + if (inputStreamCache != null) { >> + inputStreamCache.reset(); >> + } >> + if (readCache != null) { >> + readCache.reset(); >> + } >> + } >> + >> + } >> >> private class InputStreamCache extends ByteArrayInputStream implements >> StreamCache { >> >> >> Modified: >> camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java?rev=746872&r1=746871&r2=746872&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java >> (original) >> +++ >> camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java >> Mon Feb 23 03:52:43 2009 >> @@ -54,4 +54,18 @@ >> } >> context.addInterceptStrategy(new StreamCaching()); >> } >> + >> + /** >> + * Enable stream caching for a RouteContext >> + * >> + * @param context the route context >> + */ >> + public static void disable(RouteContext context) { >> + for (InterceptStrategy strategy : context.getInterceptStrategies()) >> { >> + if (strategy instanceof StreamCaching) { >> + context.getInterceptStrategies().remove(strategy); >> + return; >> + } >> + } >> + } >> } > Shouldnt the javadoc for this one be disable the stream cache? > > >> Modified: >> camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java?rev=746872&r1=746871&r2=746872&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java >> (original) >> +++ >> camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java >> Mon Feb 23 03:52:43 2009 >> @@ -20,6 +20,7 @@ >> import java.io.IOException; >> import java.io.InputStream; >> >> +import javax.xml.transform.Source; >> import javax.xml.transform.TransformerException; >> import javax.xml.transform.stream.StreamSource; >> >> @@ -42,13 +43,14 @@ >> this.converter = new StreamCacheConverter(); >> } >> >> - public void testConvertToStreamCacheStreamSource() throws >> TransformerException, FileNotFoundException { >> + public void testConvertToStreamCacheStreamSource() throws IOException, >> FileNotFoundException, TransformerException { >> StreamSource source = new StreamSource(getTestFileStream()); >> - StreamSource cache = (StreamSource) >> converter.convertToStreamCache(source); >> + StreamCache cache = converter.convertToStreamCache(source); >> //assert re-readability of the cached StreamSource >> XmlConverter converter = new XmlConverter(); >> - assertNotNull(converter.toString(cache)); >> - assertNotNull(converter.toString(cache)); >> + assertNotNull(converter.toString((Source)cache)); >> + cache.reset(); >> + assertNotNull(converter.toString((Source)cache)); >> } >> >> public void testConvertToStreamCacheInputStream() throws IOException { >> >> Modified: >> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java >> URL: >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java?rev=746872&r1=746871&r2=746872&view=diff >> ============================================================================== >> --- >> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java >> (original) >> +++ >> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java >> Mon Feb 23 03:52:43 2009 >> @@ -81,7 +81,7 @@ >> template.sendBody("direct:b", message); >> >> assertMockEndpointsSatisfied(); >> - assertTrue(b.assertExchangeReceived(0).getIn().getBody() instanceof >> StreamCache); >> + assertTrue(b.assertExchangeReceived(0).getIn().getBody() instanceof >> StreamCache); >> >> assertEquals(b.assertExchangeReceived(0).getIn().getBody(String.class), >> MESSAGE); >> } >> >> >> >> > > >