Hi

Just a note, that a System.out.println slipped into the commit.

On Mon, Jul 28, 2014 at 5:14 PM,  <[email protected]> wrote:
> Repository: camel
> Updated Branches:
>   refs/heads/camel-2.12.x 30d9b4361 -> b4cb381c7
>
>
> CAMEL-7642 Netty consumer should return error on invalid request
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b4cb381c
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b4cb381c
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b4cb381c
>
> Branch: refs/heads/camel-2.12.x
> Commit: b4cb381c7ed5343cde23aaa6fcc729f149c4fbd8
> Parents: 30d9b43
> Author: Willem Jiang <[email protected]>
> Authored: Mon Jul 28 23:11:09 2014 +0800
> Committer: Willem Jiang <[email protected]>
> Committed: Mon Jul 28 23:13:50 2014 +0800
>
> ----------------------------------------------------------------------
>  .../http/handlers/HttpServerChannelHandler.java |   1 +
>  .../HttpServerMultiplexChannelHandler.java      |  10 +-
>  .../NettyHttpGetWithInvalidMessageTest.java     | 104 +++++++++++++++++++
>  .../netty/handlers/ClientChannelHandler.java    |   1 +
>  4 files changed, 115 insertions(+), 1 deletion(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/b4cb381c/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerChannelHandler.java
> ----------------------------------------------------------------------
> diff --git 
> a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerChannelHandler.java
>  
> b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerChannelHandler.java
> index 6cf4b7f..d4ff8dc 100644
> --- 
> a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerChannelHandler.java
> +++ 
> b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerChannelHandler.java
> @@ -267,6 +267,7 @@ public class HttpServerChannelHandler extends 
> ServerChannelHandler {
>
>      @Override
>      public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent 
> exceptionEvent) throws Exception {
> +        System.out.println("Get the exception here" + exceptionEvent);
>          // only close if we are still allowed to run
>          if (consumer.isRunAllowed()) {
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/b4cb381c/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerMultiplexChannelHandler.java
> ----------------------------------------------------------------------
> diff --git 
> a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerMultiplexChannelHandler.java
>  
> b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerMultiplexChannelHandler.java
> index e00abd4..3c219f6 100644
> --- 
> a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerMultiplexChannelHandler.java
> +++ 
> b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/handlers/HttpServerMultiplexChannelHandler.java
> @@ -117,7 +117,15 @@ public class HttpServerMultiplexChannelHandler extends 
> SimpleChannelUpstreamHand
>          if (handler != null) {
>              handler.exceptionCaught(ctx, e);
>          } else {
> -            throw new IllegalStateException("HttpServerChannelHandler not 
> found as attachment. Cannot handle caught exception.", e.getCause());
> +            // we cannot throw the exception here
> +            LOG.warn("HttpServerChannelHandler is not found as attachment 
> for exception {}, send 404 back to the client.", e.getCause());
> +            // Now we just send 404 back to the client
> +            HttpResponse response = new DefaultHttpResponse(HTTP_1_1, 
> NOT_FOUND);
> +            response.headers().set(Exchange.CONTENT_TYPE, "text/plain");
> +            response.headers().set(Exchange.CONTENT_LENGTH, 0);
> +            // Here we don't want to expose the exception detail to the 
> client
> +            response.setContent(ChannelBuffers.copiedBuffer(new byte[]{}));
> +            ctx.getChannel().write(response);
>          }
>      }
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/b4cb381c/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpGetWithInvalidMessageTest.java
> ----------------------------------------------------------------------
> diff --git 
> a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpGetWithInvalidMessageTest.java
>  
> b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpGetWithInvalidMessageTest.java
> new file mode 100644
> index 0000000..5e6a46b
> --- /dev/null
> +++ 
> b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpGetWithInvalidMessageTest.java
> @@ -0,0 +1,104 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.camel.component.netty.http;
> +
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +import org.apache.camel.Exchange;
> +import org.apache.camel.Processor;
> +import org.apache.camel.builder.RouteBuilder;
> +import org.apache.camel.impl.JndiRegistry;
> +import org.apache.camel.test.AvailablePortFinder;
> +import org.apache.camel.test.junit4.CamelTestSupport;
> +import org.jboss.netty.channel.ChannelHandler;
> +import org.jboss.netty.handler.codec.string.StringDecoder;
> +import org.jboss.netty.handler.codec.string.StringEncoder;
> +import org.junit.Test;
> +
> +public class NettyHttpGetWithInvalidMessageTest extends CamelTestSupport {
> +    private static final String REQUEST_STRING = "user: Willem\n"
> +        + "GET http://localhost:8101/test HTTP/1.1\n" + "another: value\n 
> Host: localhost\n";
> +    private int port1;
> +
> +    @Override
> +    protected JndiRegistry createRegistry() throws Exception {
> +        JndiRegistry registry = super.createRegistry();
> +
> +        // setup the String encoder and decoder
> +
> +        StringDecoder stringDecoder = new StringDecoder();
> +        registry.bind("string-decoder", stringDecoder);
> +
> +        StringEncoder stringEncoder = new StringEncoder();
> +        registry.bind("string-encoder", stringEncoder);
> +
> +        List<ChannelHandler> decoders = new ArrayList<ChannelHandler>();
> +        decoders.add(stringDecoder);
> +
> +        List<ChannelHandler> encoders = new ArrayList<ChannelHandler>();
> +        encoders.add(stringEncoder);
> +
> +        registry.bind("encoders", encoders);
> +        registry.bind("decoders", decoders);
> +
> +        return registry;
> +    }
> +
> +    @Test
> +    public void testNettyHttpServer() throws Exception {
> +        invokeService(8100);
> +    }
> +
> +    //@Test
> +    public void testJettyHttpServer() throws Exception {
> +        invokeService(port1);
> +    }
> +
> +    private void invokeService(int port) {
> +        Exchange out = template.request("netty:tcp://localhost:" + port + 
> "?encoders=#encoders&decoders=#decoders&sync=true" , new Processor() {
> +            @Override
> +            public void process(Exchange exchange) throws Exception {
> +                exchange.getIn().setBody(REQUEST_STRING);
> +            }
> +        });
> +
> +        assertNotNull(out);
> +        String result = out.getOut().getBody(String.class);
> +        assertNotNull(result);
> +        assertTrue("We should get the 404 response.", result.indexOf("404 
> Not Found") > 0);
> +
> +    }
> +
> +
> +
> +    @Override
> +    protected RouteBuilder createRouteBuilder() throws Exception {
> +        return new RouteBuilder() {
> +            @Override
> +            public void configure() throws Exception {
> +                port1 = AvailablePortFinder.getNextAvailable(8100);
> +
> +               // set up a netty http proxy
> +                from("netty-http:http://localhost:"; + port1 + "/test")
> +                    .transform().simple("Bye ${header.user}.");
> +
> +            }
> +        };
> +    }
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/b4cb381c/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ClientChannelHandler.java
> ----------------------------------------------------------------------
> diff --git 
> a/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ClientChannelHandler.java
>  
> b/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ClientChannelHandler.java
> index e0ddb9f..f21391e 100644
> --- 
> a/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ClientChannelHandler.java
> +++ 
> b/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ClientChannelHandler.java
> @@ -209,6 +209,7 @@ public class ClientChannelHandler extends 
> SimpleChannelUpstreamHandler {
>
>          // if textline enabled then covert to a String which must be used 
> for textline
>          if (producer.getConfiguration().isTextline()) {
> +            System.out.println("body is " + body);
>              body = 
> producer.getContext().getTypeConverter().mandatoryConvertTo(String.class, 
> exchange, body);
>          }
>
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: [email protected]
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Reply via email to