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