You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ha...@apache.org on 2010/07/11 18:35:49 UTC

svn commit: r963105 - in /camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream: StreamConsumer.java StreamProducer.java

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



Re: svn commit: r963105 - in /camel/trunk/components/camel-stream/src/main/java/org/apache/camel/component/stream: StreamConsumer.java StreamProducer.java

Posted by Claus Ibsen <cl...@gmail.com>.
On Sun, Jul 11, 2010 at 6:35 PM,  <ha...@apache.org> wrote:
> 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());
>     }

By just glancing at this commit mail I actually think System out
println *must* be used in this stream consumer, as its for a feature
which prints a prompt message to the end user. For example you may
want it to prompt:
   Enter command: _

So the LOG.trace should be replaced with the previous system out.


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



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus