Author: davsclaus Date: Tue Apr 30 11:29:18 2013 New Revision: 1477565 URL: http://svn.apache.org/r1477565 Log: CAMEL-6327: More work on new camel-netty-http component.
Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerChannelHandler.java camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerPipelineFactory.java camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConfiguration.java camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConsumer.java camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerChannelHandler.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerChannelHandler.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerChannelHandler.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerChannelHandler.java Tue Apr 30 11:29:18 2013 @@ -39,7 +39,8 @@ import static org.jboss.netty.handler.co import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1; /** - * Our http server channel handler to handle HTTP status 100 to continue. + * Netty HTTP {@link ServerChannelHandler} that handles the incoming HTTP requests and routes + * the received message in Camel. */ public class HttpServerChannelHandler extends ServerChannelHandler { Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerPipelineFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerPipelineFactory.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerPipelineFactory.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/HttpServerPipelineFactory.java Tue Apr 30 11:29:18 2013 @@ -25,12 +25,16 @@ import org.apache.camel.util.ObjectHelpe import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.Channels; import org.jboss.netty.handler.codec.http.HttpChunkAggregator; +import org.jboss.netty.handler.codec.http.HttpContentCompressor; import org.jboss.netty.handler.codec.http.HttpRequestDecoder; import org.jboss.netty.handler.codec.http.HttpResponseEncoder; import org.jboss.netty.handler.ssl.SslHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * {@link ServerPipelineFactory} for the Netty HTTP server. + */ public class HttpServerPipelineFactory extends ServerPipelineFactory { private static final Logger LOG = LoggerFactory.getLogger(HttpServerPipelineFactory.class); @@ -71,10 +75,13 @@ public class HttpServerPipelineFactory e pipeline.addLast("decoder", new HttpRequestDecoder()); // Uncomment the following line if you don't want to handle HttpChunks. - pipeline.addLast("aggregator", new HttpChunkAggregator(1048576)); + if (supportChunked()) { + pipeline.addLast("aggregator", new HttpChunkAggregator(1048576)); + } pipeline.addLast("encoder", new HttpResponseEncoder()); - // Remove the following line if you don't want automatic content compression. - //pipeline.addLast("deflater", new HttpContentCompressor()); + if (supportCompressed()) { + pipeline.addLast("deflater", new HttpContentCompressor()); + } // handler to route Camel messages pipeline.addLast("handler", new HttpServerChannelHandler(consumer)); @@ -94,4 +101,12 @@ public class HttpServerPipelineFactory e return null; } + private boolean supportChunked() { + return consumer.getEndpoint().getConfiguration().isChunked(); + } + + private boolean supportCompressed() { + return consumer.getEndpoint().getConfiguration().isCompression(); + } + } Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java Tue Apr 30 11:29:18 2013 @@ -25,6 +25,9 @@ import org.apache.camel.component.netty. import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.spi.HeaderFilterStrategyAware; +/** + * Netty HTTP based component. + */ public class NettyHttpComponent extends NettyComponent implements HeaderFilterStrategyAware { private NettyHttpBinding nettyHttpBinding; @@ -37,10 +40,9 @@ public class NettyHttpComponent extends setNettyHttpBinding(new DefaultNettyHttpBinding(getHeaderFilterStrategy())); } - // TODO: allow to turn mapMessage=true|false + // TODO: allow to turn mapMessage=true|false and rely on on-demand mapping // TODO: netty http producer - // TODO: make it easy to turn chunked on|off - // TODO: make it easy to turn compression on|off + // TODO: make it easy to turn keep-alive on|off on producer // TODO: add logging @Override Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConfiguration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConfiguration.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConfiguration.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConfiguration.java Tue Apr 30 11:29:18 2013 @@ -28,6 +28,9 @@ import org.jboss.netty.channel.ChannelHa */ public class NettyHttpConfiguration extends NettyConfiguration { + private boolean chunked = true; + private boolean compression; + public NettyHttpConfiguration() { // we need sync=true as http is request/reply by nature setSync(true); @@ -51,4 +54,19 @@ public class NettyHttpConfiguration exte } } + public boolean isChunked() { + return chunked; + } + + public void setChunked(boolean chunked) { + this.chunked = chunked; + } + + public boolean isCompression() { + return compression; + } + + public void setCompression(boolean compression) { + this.compression = compression; + } } Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConsumer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConsumer.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConsumer.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpConsumer.java Tue Apr 30 11:29:18 2013 @@ -21,7 +21,7 @@ import org.apache.camel.component.netty. import org.apache.camel.component.netty.NettyConsumer; /** - * Http {@link NettyConsumer} + * HTTP based {@link NettyConsumer} */ public class NettyHttpConsumer extends NettyConsumer { Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java Tue Apr 30 11:29:18 2013 @@ -30,6 +30,9 @@ import org.jboss.netty.channel.ChannelHa import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.handler.codec.http.HttpRequest; +/** + * HTTP based {@link NettyEndpoint} + */ public class NettyHttpEndpoint extends NettyEndpoint implements HeaderFilterStrategyAware { private NettyHttpBinding nettyHttpBinding; @@ -61,13 +64,18 @@ public class NettyHttpEndpoint extends N in.setHeader(NettyConstants.NETTY_REMOTE_ADDRESS, messageEvent.getRemoteAddress()); in.setHeader(NettyConstants.NETTY_LOCAL_ADDRESS, messageEvent.getChannel().getLocalAddress()); - // Honor the character encoding - String contentType = request.getHeader("content-type"); + // honor the character encoding + String contentType = in.getHeader(Exchange.CONTENT_TYPE, String.class); NettyHttpHelper.setCharsetFromContentType(contentType, exchange); return exchange; } + @Override + public NettyHttpConfiguration getConfiguration() { + return (NettyHttpConfiguration) super.getConfiguration(); + } + public NettyHttpBinding getNettyHttpBinding() { return nettyHttpBinding; } Modified: camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java?rev=1477565&r1=1477564&r2=1477565&view=diff ============================================================================== --- camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java (original) +++ camel/trunk/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpMessage.java Tue Apr 30 11:29:18 2013 @@ -19,6 +19,12 @@ package org.apache.camel.component.netty import org.apache.camel.impl.DefaultMessage; import org.jboss.netty.handler.codec.http.HttpRequest; +/** + * Netty HTTP based {@link org.apache.camel.Message}. + * <p/> + * This implementation allows direct access to the Netty {@link HttpRequest} using + * the {@link #getHttpRequest()} method. + */ public class NettyHttpMessage extends DefaultMessage { private final transient HttpRequest httpRequest;