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);
         }
     }
-
 }
 


Reply via email to