Author: hadrian Date: Sun Jul 11 16:35:48 2010 New Revision: 963105 URL: http://svn.apache.org/viewvc?rev=963105&view=rev Log: CAMEL-2937. Ensure StreamProducer closes the stream
Modified: camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamConsumer.java camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamProducer.java Modified: camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamConsumer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamConsumer.java?rev=963105&r1=963104&r2=963105&view=diff ============================================================================== --- camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamConsumer.java (original) +++ camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamConsumer.java Sun Jul 11 16:35:48 2010 @@ -181,8 +181,7 @@ public class StreamConsumer extends Defa Thread.currentThread().interrupt(); } } - - System.out.print(endpoint.getPromptMessage()); + LOG.trace(endpoint.getPromptMessage()); } private InputStream resolveStreamFromUrl() throws IOException { Modified: camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamProducer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamProducer.java?rev=963105&r1=963104&r2=963105&view=diff ============================================================================== --- camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamProducer.java (original) +++ camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream/StreamProducer.java Sun Jul 11 16:35:48 2010 @@ -46,6 +46,7 @@ public class StreamProducer extends Defa private static final String INVALID_URI = "Invalid uri, valid form: 'stream:{" + TYPES + "}'"; private static final List<String> TYPES_LIST = Arrays.asList(TYPES.split(",")); private OutputStream outputStream = System.out; + private boolean isSystemStream = false; private StreamEndpoint endpoint; private String uri; @@ -57,16 +58,19 @@ public class StreamProducer extends Defa @Override public void doStop() throws Exception { - // important: do not close the stream as it will close the standard system.out etc. + closeStream(); super.doStop(); } public void process(Exchange exchange) throws Exception { delay(endpoint.getDelay()); + isSystemStream = false; if ("out".equals(uri)) { + isSystemStream = true; outputStream = System.out; } else if ("err".equals(uri)) { + isSystemStream = true; outputStream = System.err; } else if ("file".equals(uri)) { outputStream = resolveStreamFromFile(); @@ -77,6 +81,7 @@ public class StreamProducer extends Defa } writeToStream(exchange); + closeStream(); } private OutputStream resolveStreamFromUrl() throws IOException { @@ -143,7 +148,14 @@ public class StreamProducer extends Defa bw.write(s); bw.write("\n"); bw.flush(); - // important: do not close the writer as it will close the standard system.out etc. + } + + private void closeStream() throws Exception { + // important: do not close the writer on a standard system.out etc. + if (outputStream != null && !isSystemStream) { + outputStream.close(); + } + outputStream = null; } private void validateUri(String uri) throws Exception { @@ -165,6 +177,5 @@ public class StreamProducer extends Defa throw new IllegalArgumentException(INVALID_URI); } } - }