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 2014/12/01 12:16:10 UTC

camel git commit: CAMEL-8097: Added unit test

Repository: camel
Updated Branches:
  refs/heads/master 30ed3f5d0 -> 26fa5b7cc


CAMEL-8097: Added unit test


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/26fa5b7c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/26fa5b7c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/26fa5b7c

Branch: refs/heads/master
Commit: 26fa5b7cc3f268c929673786d1a440f3ce7c49bc
Parents: 30ed3f5
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Dec 1 12:16:02 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Dec 1 12:16:02 2014 +0100

----------------------------------------------------------------------
 .../apache/camel/model/ProcessorDefinition.java |  4 +-
 ...sXmlSplitNestedChoiceEndChoiceRouteTest.java | 48 +++++++++++++++
 ...ModelAsXmlSplitNestedChoiceEndRouteTest.java | 65 ++++++++++++++++++++
 3 files changed, 115 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/26fa5b7c/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 9197a7d..1be62f5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -1134,8 +1134,8 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
         // must do this ugly cast to avoid compiler error on AIX/HP-UX
         ProcessorDefinition<?> defn = (ProcessorDefinition<?>) this;
         
-        // when using doTry .. doCatch .. doFinally we should always
-        // end the try definition to avoid having to use 2 x end() in the route
+        // when using choice .. when .. otherwise - doTry .. doCatch .. doFinally we should always
+        // end the choice/try definition to avoid having to use 2 x end() in the route
         // this is counter intuitive for end users
         // TODO (camel-3.0): this should be done inside of TryDefinition or even better
         //  in Block(s) in general, but the api needs to be revisited for that.

http://git-wip-us.apache.org/repos/asf/camel/blob/26fa5b7c/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndChoiceRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndChoiceRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndChoiceRouteTest.java
new file mode 100644
index 0000000..e29a44a
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndChoiceRouteTest.java
@@ -0,0 +1,48 @@
+/**
+ * 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.util;
+
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ */
+public class DumpModelAsXmlSplitNestedChoiceEndChoiceRouteTest extends DumpModelAsXmlSplitNestedChoiceEndRouteTest {
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").routeId("myRoute")
+                   .split().body()
+                        .to("mock:sub").id("myMock")
+                        .choice()
+                            .when(header("foo")).to("mock:foo") // eg we can use .endChoice() here also
+                            .when(header("bar")).to("mock:bar") // eg we can use .endChoice() here also
+                            .otherwise().to("mock:other")
+                            .endChoice()
+                        // end choice goes back to same level as choice (eg such as ending the otherwise),
+                        // so we need a 2nd end to end the choice block in general
+                        .end()
+                    // and then an end to end the splitter
+                    .end()
+                    .to("mock:last");
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/26fa5b7c/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java
new file mode 100644
index 0000000..7cb7a90
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java
@@ -0,0 +1,65 @@
+/**
+ * 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.util;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.converter.jaxp.XmlConverter;
+import org.apache.camel.model.ModelHelper;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ */
+public class DumpModelAsXmlSplitNestedChoiceEndRouteTest extends ContextTestSupport {
+
+    public void testDumpModelAsXml() throws Exception {
+        String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute"));
+        assertNotNull(xml);
+        log.info(xml);
+
+        Document doc = new XmlConverter().toDOMDocument(xml);
+        NodeList nodes = doc.getElementsByTagName("split");
+        assertEquals(1, nodes.getLength());
+        Element node = (Element)nodes.item(0);
+        // there is an empty text document as we pretty print the xml, so need to do 2 x next sibling
+        Element last = (Element) node.getNextSibling().getNextSibling();
+        assertEquals("mock:last", last.getAttribute("uri"));
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:start").routeId("myRoute")
+                   .split().body()
+                        .to("mock:sub").id("myMock")
+                        .choice()
+                            .when(header("foo")).to("mock:foo")
+                            .when(header("bar")).to("mock:bar")
+                            .otherwise().to("mock:other")
+                        .end()
+                    .end()
+                    .to("mock:last");
+            }
+        };
+    }
+}