CAMEL-10714 Replace ByteArrayOutputStream with OutputStreamBuilder
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/799b78d9 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/799b78d9 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/799b78d9 Branch: refs/heads/camel-2.18.x Commit: 799b78d9470c397217597fc719051a76c6c3d0a8 Parents: b265e3c Author: Kevin Earls <ke...@kevinearls.com> Authored: Fri Feb 3 16:08:35 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Feb 3 21:05:05 2017 +0100 ---------------------------------------------------------------------- .../component/jetty9/JettyContentExchange9.java | 27 ++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/799b78d9/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java index 50f2e43..1f66312 100644 --- a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java +++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java @@ -37,8 +37,10 @@ import org.apache.camel.AsyncCallback; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; import org.apache.camel.ExchangeTimedOutException; +import org.apache.camel.StreamCache; import org.apache.camel.component.jetty.JettyContentExchange; import org.apache.camel.component.jetty.JettyHttpBinding; +import org.apache.camel.converter.stream.OutputStreamBuilder; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; @@ -222,15 +224,18 @@ public class JettyContentExchange9 implements JettyContentExchange { }; InputStreamResponseListener responseListener = new InputStreamResponseListener() { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); + OutputStreamBuilder osb = OutputStreamBuilder.withExchange(exchange); @Override public void onContent(Response response, ByteBuffer content, Callback callback) { byte[] buffer = new byte[content.limit()]; content.get(buffer); - baos.write(buffer, 0, buffer.length); - - callback.succeeded(); + try { + osb.write(buffer); + callback.succeeded(); + } catch (IOException e) { + callback.failed(e); + } } @Override @@ -238,7 +243,19 @@ public class JettyContentExchange9 implements JettyContentExchange { if (result.isFailed()) { doTaskCompleted(result.getFailure()); } else { - onResponseComplete(result, baos.toByteArray()); + try { + Object content = osb.build(); + if (content instanceof byte[]) { + onResponseComplete(result, (byte[]) content); + } else { + StreamCache cos = (StreamCache) content; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + cos.writeTo(baos); + onResponseComplete(result, baos.toByteArray()); + } + } catch (IOException e) { + doTaskCompleted(e); + } } } };