CAMEL-8576 Added a option to let camel netty take the message body as byte buffer
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/780b41b4 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/780b41b4 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/780b41b4 Branch: refs/heads/master Commit: 780b41b47647141eef375d2e518d6313cdacad88 Parents: dfdaed5 Author: Willem Jiang <willem.ji...@gmail.com> Authored: Tue Mar 31 17:42:28 2015 +0800 Committer: Willem Jiang <willem.ji...@gmail.com> Committed: Tue Mar 31 17:42:45 2015 +0800 ---------------------------------------------------------------------- .../camel/component/netty4/NettyConfiguration.java | 10 ++++++++++ .../camel/component/netty4/NettyPayloadHelper.java | 11 ++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/780b41b4/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java index d315f43..7fbe1d8 100644 --- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java +++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConfiguration.java @@ -94,6 +94,8 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem private boolean udpConnectionlessSending; @UriParam(defaultValue = "false") private boolean clientMode; + @UriParam(defaultValue = "false") + private boolean useByteBuf; /** @@ -493,6 +495,14 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem this.clientMode = clientMode; } + public boolean isUseByteBuf() { + return useByteBuf; + } + + public void setUseByteBuf(boolean useByteBuf) { + this.useByteBuf = useByteBuf; + } + private static <T> void addToHandlersList(List<T> configured, List<T> handlers, Class<T> handlerType) { if (handlers != null) { for (T handler : handlers) { http://git-wip-us.apache.org/repos/asf/camel/blob/780b41b4/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyPayloadHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyPayloadHelper.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyPayloadHelper.java index 714957b..3e2a27c 100644 --- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyPayloadHelper.java +++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyPayloadHelper.java @@ -18,8 +18,8 @@ package org.apache.camel.component.netty4; import java.net.InetSocketAddress; +import io.netty.buffer.ByteBuf; import io.netty.channel.AddressedEnvelope; - import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultExchangeHolder; @@ -43,8 +43,13 @@ public final class NettyPayloadHelper { // we should transfer the entire exchange over the wire (includes in/out) return DefaultExchangeHolder.marshal(exchange); } else { - // normal transfer using the body only - return exchange.getIn().getBody(); + if (endpoint.getConfiguration().isUseByteBuf()) { + // Just leverage the type converter + return exchange.getIn().getBody(ByteBuf.class); + } else { + // normal transfer using the body only + return exchange.getIn().getBody(); + } } }