You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/04/02 16:00:50 UTC

svn commit: r761300 - in /camel/trunk/components/camel-jetty/src/test: java/org/apache/camel/component/jetty/JettyHandle404Test.java resources/log4j.properties

Author: davsclaus
Date: Thu Apr  2 14:00:49 2009
New Revision: 761300

URL: http://svn.apache.org/viewvc?rev=761300&view=rev
Log:
CAMEL-1512: Unit test inspired by user on forum. Showing it is a bit cumbersome to handle 404.

Added:
    camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java   (with props)
Modified:
    camel/trunk/components/camel-jetty/src/test/resources/log4j.properties

Added: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java?rev=761300&view=auto
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java (added)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java Thu Apr  2 14:00:49 2009
@@ -0,0 +1,91 @@
+/**
+ * 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.jetty;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.http.HttpConstants;
+import org.apache.camel.component.http.HttpOperationFailedException;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+
+/**
+ * Based on end user on forum how to get the 404 error code in his enrich aggregator
+ *
+ * @version $Revision$
+ */
+public class JettyHandle404Test extends ContextTestSupport {
+
+    public void testSimulate404() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedBodiesReceived("Page not found");
+        mock.expectedHeaderReceived(HttpConstants.HTTP_RESPONSE_CODE, 404);
+
+        template.sendBody("direct:start", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                // disable error handling
+                errorHandler(noErrorHandler());
+
+                from("direct:start").enrich("direct:tohttp", new AggregationStrategy() {
+                    public Exchange aggregate(Exchange original, Exchange resource) {
+                        // get the response code
+                        Integer code = resource.getOut().getHeader(HttpConstants.HTTP_RESPONSE_CODE, Integer.class);
+                        assertEquals(404, code.intValue());
+                        return resource;
+                    }
+                }).to("mock:result");
+
+                // use this sub route as indirection to handle the HttpOperationFailedException
+                // and set the data back as data on the exchange to not cause the exception to be thrown
+                from("direct:tohttp")
+                        .tryBlock()
+                            .to("http://localhost:8123/myserver?user=Camel")
+                        .handle(HttpOperationFailedException.class)
+                            .process(new Processor() {
+                                public void process(Exchange exchange) {
+                                    // copy the caused exception values to the exchange as we want the response in the regular exchange
+                                    // instead as an exception that will get thrown and thus the route breaks
+                                    HttpOperationFailedException cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, HttpOperationFailedException.class);
+                                    exchange.getOut().setHeader(HttpConstants.HTTP_RESPONSE_CODE, cause.getStatusCode());
+                                    exchange.getOut().setBody(cause.getResponseBody());
+                                }
+                            })
+                        .end();
+
+
+                // this is our jetty server where we simulate the 404
+                from("jetty://http://localhost:8123/myserver")
+                        .process(new Processor() {
+                            public void process(Exchange exchange) throws Exception {
+                                exchange.getOut().setBody("Page not found");
+                                exchange.getOut().setHeader(HttpConstants.HTTP_RESPONSE_CODE, 404);
+                            }
+                        });
+            }
+        };
+    }
+}

Propchange: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyHandle404Test.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/components/camel-jetty/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/resources/log4j.properties?rev=761300&r1=761299&r2=761300&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/resources/log4j.properties (original)
+++ camel/trunk/components/camel-jetty/src/test/resources/log4j.properties Thu Apr  2 14:00:49 2009
@@ -33,3 +33,4 @@
 
 # debug loging for Camel
 log4j.logger.org.apache.camel.component.jetty=DEBUG
+#log4j.logger.org.apache.camel=DEBUG