camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <>
Subject [jira] [Commented] (CAMEL-4178) WireTap should auto-convert streams to string so it always works by default
Date Wed, 06 Jul 2011 12:23:16 GMT


Claus Ibsen commented on CAMEL-4178:

You can enable stream caching

> WireTap should auto-convert streams to string so it always works by default
> ---------------------------------------------------------------------------
>                 Key: CAMEL-4178
>                 URL:
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>    Affects Versions: 2.7.2
>            Reporter: Josef Jahn
>            Priority: Minor
> When wiretapping the result of a http request (to uri="http://foo"), the wiretap does
not work because the result is a stream. The developer has to remember to convert the result
to a string first to avoid the first consumption of the stream to make the data not available
for wiretapping.
> In the interest of "defaults that work", maybe the wiretap should "know" to handle streams
in a way that makes the wiretap work without extra consideration by the developer. Streams
could be auto-converted to string or, if the amount of data is larger than a certain pre-configured
threshold, cache them to disk and read the resulting file.
> Here's an example of a route that needs a convertBodyTo to make the wiretap work. Without
this, the wiretap quietly fails, and it can be quite time-consuming to try to find out why.
> {code:xml} 
> <route>
> 	<!-- jetty listening on port 8087 -->
> 	<from uri="jetty:"/>
> 	<!-- log input received -->
> 	<wireTap uri="file:data/recording?fileName=wsn-${date:now:yyyyMMdd}.log&amp;fileExist=Append">
> 		<body>
> 			<simple>[${date:now:dd.MM.yyyy hh:mm:ss}] [INCOMING REQUEST]: ${in.body}&#xA;&#xD;</simple>
> 		</body>
> 	</wireTap>
> 	<!-- send proxied request to actual web service -->
> 	<removeHeaders pattern="CamelHttp*"/>
> 	<removeHeader headerName="Accept-Encoding"/>
> 	<to uri=""/>
> 	<!-- convert to string to prevent the stream to be consumed by the wiretap -->
> 	<convertBodyTo type="String"/>
> 	<!-- log answer from real web service -->
> 	<wireTap uri="file:data/recording?fileName=wsn-${date:now:yyyyMMdd}.log&amp;fileExist=Append">
> 		<body>
> 			<simple>[${date:now:dd.MM.yyyy hh:mm:ss}] [OUTGOING RESPONSE]: ${in.body}&#xA;&#xD;</simple>
> 		</body>
> 	</wireTap>
> </route>
> {code} 

This message is automatically generated by JIRA.
For more information on JIRA, see:


View raw message