Repository: camel Updated Branches: refs/heads/parser2 ce3f4e114 -> df70bdd76
Parse java route tree a bit better for choice EIP Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/49857113 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/49857113 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/49857113 Branch: refs/heads/parser2 Commit: 49857113d45ad4c290f662fa0ada4434437914bf Parents: ce3f4e1 Author: Claus Ibsen <[email protected]> Authored: Tue Oct 10 10:16:23 2017 +0200 Committer: Claus Ibsen <[email protected]> Committed: Tue Oct 10 10:16:23 2017 +0200 ---------------------------------------------------------------------- .../helper/CamelJavaTreeParserHelper.java | 26 ++++++-------------- .../parser/java/MyJavaDslRouteBuilder.java | 5 ++-- .../camel/parser/java/RoasterJavaDslTest.java | 9 ++++--- 3 files changed, 17 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/49857113/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaTreeParserHelper.java ---------------------------------------------------------------------- diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaTreeParserHelper.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaTreeParserHelper.java index d3d1531..774831f 100644 --- a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaTreeParserHelper.java +++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaTreeParserHelper.java @@ -106,9 +106,6 @@ public final class CamelJavaTreeParserHelper { CamelNodeDetails node = route.getOutputs().get(i); String name = node.getName(); - // TODO: use camel catalog to know about these types and when to do what - // special for some EIPs such as choice - if ("from".equals(name)) { CamelNodeDetails from = nodeFactory.copyNode(null, "from", node); from.setFileName(fullyQualifiedFileName); @@ -117,27 +114,20 @@ public final class CamelJavaTreeParserHelper { } else if ("routeId".equals(name)) { // should be set on the parent parent.setRouteId(node.getRouteId()); + } else if ("end".equals(name) || "endChoice".equals(name) || "endParent".equals(name) || "endRest".equals(name) + || "endDoTry".equals(name) || "endHystrix".equals(name)) { + // parent should be grand parent + parent = parent.getParent(); } else if ("choice".equals(name)) { + // special for some EIPs CamelNodeDetails output = nodeFactory.copyNode(parent, name, node); parent.addOutput(output); parent = output; - } else if ("when".equals(name)) { - parent = grandParent(parent, "choice"); - CamelNodeDetails output = nodeFactory.copyNode(parent, name, node); - parent.addOutput(output); - parent = output; - } else if ("otherwise".equals(name)) { - parent = grandParent(parent, "choice"); - CamelNodeDetails output = nodeFactory.copyNode(parent, name, node); - parent.addOutput(output); - parent = output; - } else if ("end".equals(name) || "endChoice".equals(name) || "endDoTry".equals(name)) { - // special for ending otherwise, as we end it automatic in Java DSL so do a double end then - if ("otherwise".equals(parent.getName())) { + } else if ("when".equals(name) || "otherwise".equals(name)) { + // we are in a choice block so parent should be the first choice up the parent tree + while (!parent.getName().equals("from") && !"choice".equals(parent.getName())) { parent = parent.getParent(); } - // parent should be grand parent - parent = parent.getParent(); } else { boolean hasOutput = hasOutput(name); if (hasOutput) { http://git-wip-us.apache.org/repos/asf/camel/blob/49857113/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyJavaDslRouteBuilder.java ---------------------------------------------------------------------- diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyJavaDslRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyJavaDslRouteBuilder.java index 1a98ab8..078c70b 100644 --- a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyJavaDslRouteBuilder.java +++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyJavaDslRouteBuilder.java @@ -27,8 +27,9 @@ public class MyJavaDslRouteBuilder extends RouteBuilder { .setHeader("foo", constant("123")) .choice() .when(header("foo")) - .toD("log:a") - .when(header("bar")) + .to("log:a") + .toD("log:a2") + .when().header("bar") .toD("log:b") .otherwise() .log("none") http://git-wip-us.apache.org/repos/asf/camel/blob/49857113/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTest.java ---------------------------------------------------------------------- diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTest.java index dc6c63b..c6bc96b 100644 --- a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTest.java +++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTest.java @@ -55,9 +55,12 @@ public class RoasterJavaDslTest extends CamelTestSupport { assertTrue(tree.contains("25\tfrom")); assertTrue(tree.contains("27\t setHeader")); - assertTrue(tree.contains("30\t toD")); - assertTrue(tree.contains("33\t otherwise")); - assertTrue(tree.contains("36\t to")); + assertTrue(tree.contains("28\t choice")); + assertTrue(tree.contains("30\t to")); + assertTrue(tree.contains("31\t toD")); + assertTrue(tree.contains("33\t toD")); + assertTrue(tree.contains("35\t log")); + assertTrue(tree.contains("37\t to")); } @Test
