You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2010/07/11 19:12:11 UTC

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

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