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 <[email protected]> Authored: Mon Oct 9 09:46:48 2017 +0200 Committer: Claus Ibsen <[email protected]> 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; }
