Parse xml route tree in the same structure as in java

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

Branch: refs/heads/parser2
Commit: 193c51d585fd1a9288841682a066d0a1541d36a3
Parents: aed1326
Author: Claus Ibsen <[email protected]>
Authored: Mon Oct 9 15:28:10 2017 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Mon Oct 9 15:28:10 2017 +0200

----------------------------------------------------------------------
 .../parser/helper/CamelXmlTreeParserHelper.java | 28 +++++++++++++++++---
 .../camel/parser/xml/XmlParseTreeTest.java      |  5 ++--
 2 files changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/193c51d5/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlTreeParserHelper.java
----------------------------------------------------------------------
diff --git 
a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlTreeParserHelper.java
 
b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlTreeParserHelper.java
index a9a75d9..6125304 100644
--- 
a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlTreeParserHelper.java
+++ 
b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlTreeParserHelper.java
@@ -30,14 +30,36 @@ public final class CamelXmlTreeParserHelper {
     private CamelXmlTreeParserHelper() {
     }
 
-    public static List<CamelNodeDetails> parseCamelRouteTree(Node route, 
String routeId, CamelNodeDetails parent,
+    public static List<CamelNodeDetails> parseCamelRouteTree(Node xmlNode, 
String routeId, CamelNodeDetails route,
                                                              String baseDir, 
String fullyQualifiedFileName) {
 
         CamelNodeDetailsFactory nodeFactory = 
CamelNodeDetailsFactory.newInstance();
         List<CamelNodeDetails> answer = new ArrayList<>();
 
-        walkXmlTree(nodeFactory, route, parent);
-        answer.add(parent);
+        walkXmlTree(nodeFactory, xmlNode, route);
+
+        // now parse the route node and build the correct model/tree structure 
of the EIPs
+        // re-create factory as we rebuild the tree
+        nodeFactory = CamelNodeDetailsFactory.newInstance();
+        CamelNodeDetails parent = route.getOutputs().get(0);
+
+        // we dont want the route element and only start with from
+        for (int i = 0; i < route.getOutputs().size(); i++) {
+            CamelNodeDetails node = route.getOutputs().get(i);
+            String name = node.getName();
+
+            if ("from".equals(name)) {
+                CamelNodeDetails from = nodeFactory.copyNode(null, "from", 
node);
+                from.setFileName(fullyQualifiedFileName);
+                answer.add(from);
+                parent = from;
+            } else {
+                // add straight to parent
+                parent.addOutput(node);
+                node.setFileName(fullyQualifiedFileName);
+            }
+        }
+
         return answer;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/193c51d5/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlParseTreeTest.java
----------------------------------------------------------------------
diff --git 
a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlParseTreeTest.java
 
b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlParseTreeTest.java
index d65f287..3fc26ff 100644
--- 
a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlParseTreeTest.java
+++ 
b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlParseTreeTest.java
@@ -42,7 +42,7 @@ public class XmlParseTreeTest {
 
         assertEquals(1, list.size());
         CamelNodeDetails details = list.get(0);
-        assertEquals("org/apache/camel/camel/parser/xml/mycamel.xml", 
details.getFileName());
+        
assertEquals("src/test/resources/org/apache/camel/camel/parser/xml/mycamel.xml",
 details.getFileName());
         assertEquals("myRoute", details.getRouteId());
         assertEquals(null, details.getMethodName());
         assertEquals(null, details.getClassName());
@@ -50,8 +50,7 @@ public class XmlParseTreeTest {
         String tree = details.dump(0);
         LOG.info("\n" + tree);
 
-        assertTrue(tree.contains("29\troute"));
-        assertTrue(tree.contains("32\t  from"));
+        assertTrue(tree.contains("32\tfrom"));
         assertTrue(tree.contains("35\t  transform"));
         assertTrue(tree.contains("36\t    simple"));
         assertTrue(tree.contains("39\t  to"));

Reply via email to