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 2017/10/09 07:46:59 UTC

camel git commit: Camel route coverage maven plugin

Repository: camel
Updated Branches:
  refs/heads/parser2 32e0a7162 -> 16d66ddae


Camel route coverage maven plugin


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

Branch: refs/heads/parser2
Commit: 16d66ddaedeb338aeabf9ba95d880448eec90d82
Parents: 32e0a71
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Oct 9 09:46:48 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Oct 9 09:46:48 2017 +0200

----------------------------------------------------------------------
 .../java/sample/camel/FooApplicationTest.java   |  4 ++--
 .../parser/RouteBuilderNodeDetailsParser.java   | 24 --------------------
 .../apache/camel/parser/RouteBuilderParser.java |  2 +-
 .../helper/CamelJavaTreeParserHelper.java       | 23 +++++++++++--------
 .../camel/parser/model/CamelNodeDetails.java    | 22 ++++++++++++++++++
 .../camel/parser/java/RoasterJavaDslTest.java   |  2 ++
 .../java/RoasterJavaDslTwoRoutesTest.java       |  4 ++++
 .../apache/camel/maven/RouteCoverageMojo.java   | 10 ++++++--
 .../camel/maven/model/RouteCoverageNode.java    | 19 ++++++++++++++++
 9 files changed, 72 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/examples/camel-example-spring-boot/src/test/java/sample/camel/FooApplicationTest.java
----------------------------------------------------------------------
diff --git a/examples/camel-example-spring-boot/src/test/java/sample/camel/FooApplicationTest.java b/examples/camel-example-spring-boot/src/test/java/sample/camel/FooApplicationTest.java
index e8f5897..45f2076 100644
--- a/examples/camel-example-spring-boot/src/test/java/sample/camel/FooApplicationTest.java
+++ b/examples/camel-example-spring-boot/src/test/java/sample/camel/FooApplicationTest.java
@@ -32,9 +32,9 @@ import static org.junit.Assert.assertTrue;
 
 @RunWith(CamelSpringBootRunner.class)
 @SpringBootTest(classes = SampleCamelApplication.class,
-    properties = "greeting = Hell foo")
+    properties = "greeting = Hello foo")
 @EnableRouteCoverage
-@Ignore // enable me to run this test as well so we can cover testing the route completely
+//@Ignore // enable me to run this test as well so we can cover testing the route completely
 public class FooApplicationTest {
 
     @Autowired

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderNodeDetailsParser.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderNodeDetailsParser.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderNodeDetailsParser.java
deleted file mode 100644
index cb8591b..0000000
--- a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderNodeDetailsParser.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.parser;
-
-/**
- * TODO: Merge this to {@link RouteBuilderParser}
- */
-public class RouteBuilderNodeDetailsParser {
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
index f525a56..96e54b2 100644
--- a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
@@ -59,7 +59,7 @@ public final class RouteBuilderParser {
      * @return a list of route model (tree) of each discovered route
      */
     public static List<CamelNodeDetails> parseRouteBuilderTree(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
-                                                         boolean includeInlinedRouteBuilders) {
+                                                               boolean includeInlinedRouteBuilders) {
 
         List<MethodSource<JavaClassSource>> methods = new ArrayList<>();
         MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/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 2dd06b3..ee4e9ab 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
@@ -64,18 +64,18 @@ import org.jboss.forge.roaster.model.source.MethodSource;
  */
 public final class CamelJavaTreeParserHelper {
 
-    private CamelCatalog camelCatalog = new DefaultCamelCatalog(true);
+    private final CamelCatalog camelCatalog = new DefaultCamelCatalog(true);
 
     public List<CamelNodeDetails> parseCamelRouteTree(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
-                                                      MethodSource<JavaClassSource> method) {
+                                                      MethodSource<JavaClassSource> configureMethod) {
 
         // find any from which is the start of the route
         CamelNodeDetailsFactory nodeFactory = CamelNodeDetailsFactory.newInstance();
 
         CamelNodeDetails route = nodeFactory.newNode(null, "route");
 
-        if (method != null) {
-            MethodDeclaration md = (MethodDeclaration) method.getInternal();
+        if (configureMethod != null) {
+            MethodDeclaration md = (MethodDeclaration) configureMethod.getInternal();
             Block block = md.getBody();
             if (block != null) {
                 for (Object statement : md.getBody().statements()) {
@@ -83,7 +83,7 @@ public final class CamelJavaTreeParserHelper {
                     if (statement instanceof ExpressionStatement) {
                         ExpressionStatement es = (ExpressionStatement) statement;
                         Expression exp = es.getExpression();
-                        parseExpression(nodeFactory, fullyQualifiedFileName, clazz, block, exp, route);
+                        parseExpression(nodeFactory, fullyQualifiedFileName, clazz, configureMethod, block, exp, route);
                     }
                 }
             }
@@ -183,21 +183,23 @@ public final class CamelJavaTreeParserHelper {
     }
 
     private void parseExpression(CamelNodeDetailsFactory nodeFactory, String fullyQualifiedFileName,
-                                 JavaClassSource clazz, Block block, Expression exp, CamelNodeDetails node) {
+                                 JavaClassSource clazz, MethodSource<JavaClassSource> configureMethod, Block block,
+                                 Expression exp, CamelNodeDetails node) {
         if (exp == null) {
             return;
         }
         if (exp instanceof MethodInvocation) {
             MethodInvocation mi = (MethodInvocation) exp;
-            node = doParseCamelModels(nodeFactory, fullyQualifiedFileName, clazz, block, mi, node);
+            node = doParseCamelModels(nodeFactory, fullyQualifiedFileName, clazz, configureMethod, block, mi, node);
             // if the method was called on another method, then recursive
             exp = mi.getExpression();
-            parseExpression(nodeFactory, fullyQualifiedFileName, clazz, block, exp, node);
+            parseExpression(nodeFactory, fullyQualifiedFileName, clazz, configureMethod, block, exp, node);
         }
     }
 
     private CamelNodeDetails doParseCamelModels(CamelNodeDetailsFactory nodeFactory, String fullyQualifiedFileName,
-                                                JavaClassSource clazz, Block block, MethodInvocation mi, CamelNodeDetails node) {
+                                                JavaClassSource clazz, MethodSource<JavaClassSource> configureMethod, Block block,
+                                                MethodInvocation mi, CamelNodeDetails node) {
         String name = mi.getName().getIdentifier();
 
         // special for Java DSL having some endXXX
@@ -216,6 +218,9 @@ public final class CamelJavaTreeParserHelper {
             }
             newNode.setFileName(fullyQualifiedFileName);
 
+            newNode.setClassName(clazz.getQualifiedName());
+            newNode.setMethodName(configureMethod.getName());
+
             if (isRouteId) {
                 // grab the route id
                 List args = mi.arguments();

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
index d058b5b..bd2a99c 100644
--- a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
@@ -26,6 +26,10 @@ public class CamelNodeDetails {
     private String lineNumber;
     private String lineNumberEnd;
 
+    // java source code details
+    private String className;
+    private String methodName;
+
     // camel node details
     private final CamelNodeDetails parent;
     private final String name;
@@ -41,6 +45,8 @@ public class CamelNodeDetails {
         this.fileName = copy.getFileName();
         this.lineNumber = copy.getLineNumber();
         this.lineNumberEnd = copy.getLineNumberEnd();
+        this.className = copy.getClassName();
+        this.methodName = copy.getMethodName();
     }
 
     public CamelNodeDetails(CamelNodeDetails parent, String name, int order) {
@@ -112,6 +118,22 @@ public class CamelNodeDetails {
         this.lineNumberEnd = lineNumberEnd;
     }
 
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
     public String toString() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/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 24f3c81..dc6c63b 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
@@ -47,6 +47,8 @@ public class RoasterJavaDslTest extends CamelTestSupport {
         CamelNodeDetails details = list.get(0);
         assertEquals("src/test/java/org/apache/camel/parser/java/MyJavaDslRouteBuilder.java", details.getFileName());
         assertEquals("bar", details.getRouteId());
+        assertEquals("configure", details.getMethodName());
+        assertEquals("org.apache.camel.parser.java.MyJavaDslRouteBuilder", details.getClassName());
 
         String tree = details.dump(0);
         LOG.info("\n" + tree);

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTwoRoutesTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTwoRoutesTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTwoRoutesTest.java
index 23ccef6..b1b5a17 100644
--- a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTwoRoutesTest.java
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterJavaDslTwoRoutesTest.java
@@ -51,7 +51,11 @@ public class RoasterJavaDslTwoRoutesTest extends CamelTestSupport {
         assertEquals("src/test/java/org/apache/camel/parser/java/TwoRoutesRouteBuilder.java", details2.getFileName());
 
         assertEquals("foo", details.getRouteId());
+        assertEquals("org.apache.camel.parser.java.TwoRoutesRouteBuilder", details.getClassName());
+        assertEquals("configure", details.getMethodName());
         assertEquals("bar", details2.getRouteId());
+        assertEquals("configure", details2.getMethodName());
+        assertEquals("org.apache.camel.parser.java.TwoRoutesRouteBuilder", details2.getClassName());
 
         String tree = details.dump(0);
         LOG.info("\n" + tree);

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
index 63688fd..21b28bf 100644
--- a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
+++ b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
@@ -206,8 +206,12 @@ public class RouteCoverageMojo extends AbstractExecMojo {
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         PrintStream sw = new PrintStream(bos);
 
-        sw.println("File: " + fileName);
-        sw.println("Route: " + routeId);
+        if (model.get(0).getClassName() != null) {
+            sw.println("Class:\t" + model.get(0).getClassName());
+        } else {
+            sw.println("File:\t" + fileName);
+        }
+        sw.println("RouteId:\t" + routeId);
         sw.println();
         sw.println(String.format("%8s   %8s   %s", "Line #", "Count", "Route"));
         sw.println(String.format("%8s   %8s   %s", "------", "-----", "-----"));
@@ -249,6 +253,8 @@ public class RouteCoverageMojo extends AbstractExecMojo {
         data.setName(node.getName());
         data.setLineNumber(Integer.valueOf(node.getLineNumber()));
         data.setLevel(level.get());
+        data.setClassName(node.getClassName());
+        data.setMethodName(node.getMethodName());
 
         // add data
         answer.add(data);

http://git-wip-us.apache.org/repos/asf/camel/blob/16d66dda/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/model/RouteCoverageNode.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/model/RouteCoverageNode.java b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/model/RouteCoverageNode.java
index 0f711b2..cb6aba6 100644
--- a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/model/RouteCoverageNode.java
+++ b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/model/RouteCoverageNode.java
@@ -18,11 +18,30 @@ package org.apache.camel.maven.model;
 
 public final class RouteCoverageNode {
 
+    private String className;
+    private String methodName;
+
     private String name;
     private int lineNumber;
     private int count;
     private int level;
 
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
     public String getName() {
         return name;
     }