You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/12/07 18:35:11 UTC
(camel) branch main updated: (chores) break large methods (#12368)
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new f0c99094253 (chores) break large methods (#12368)
f0c99094253 is described below
commit f0c99094253e3959581ed7dc1f177a3cc82655a3
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Thu Dec 7 15:35:04 2023 -0300
(chores) break large methods (#12368)
---
.../java/org/apache/camel/maven/GenerateMojo.java | 115 ++++++++-------
.../org/apache/camel/maven/RouteCoverageMojo.java | 155 +++++++++++----------
.../camel/language/csimple/CSimpleLanguage.java | 45 +++---
3 files changed, 178 insertions(+), 137 deletions(-)
diff --git a/catalog/camel-csimple-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java b/catalog/camel-csimple-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java
index 4c0bf54cad6..caca5a64d3c 100644
--- a/catalog/camel-csimple-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java
+++ b/catalog/camel-csimple-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java
@@ -162,47 +162,56 @@ public class GenerateMojo extends AbstractExecMojo {
final List<CSimpleGeneratedCode> classes = new ArrayList<>();
for (CamelCSimpleExpressionDetails cs : csimpleExpressions) {
- String script = cs.getCsimple();
- String fqn = cs.getClassName();
- if (script != null && fqn == null) {
- // its from XML file so use a pseduo fqn name instead
- fqn = "org.apache.camel.language.csimple.XmlRouteBuilder";
- }
- if (script != null) {
- CSimpleGeneratedCode code;
- if (cs.isPredicate()) {
- code = generator.generatePredicate(fqn, script);
- } else {
- code = generator.generateExpression(fqn, script);
- }
- classes.add(code);
- if (getLog().isDebugEnabled()) {
- getLog().debug("Generated source code:\n\n\n" + code.getCode() + "\n\n\n");
- }
- String fileName = code.getFqn().replace('.', '/') + ".java";
- outputDir.mkdirs();
- boolean saved = updateResource(outputDir.toPath().resolve(fileName), code.getCode());
- if (saved) {
- getLog().info("Generated csimple source code file: " + fileName);
- }
- }
+ doGenerate(generator, cs, classes);
}
if (!classes.isEmpty()) {
// generate .properties file
- StringWriter w = new StringWriter();
- w.append("# " + GENERATED_MSG + "\n");
- classes.forEach(c -> w.write(c.getFqn() + "\n"));
- String fileName = RESOURCE_FILE;
- outputResourceDir.mkdirs();
- boolean saved = updateResource(outputResourceDir.toPath().resolve(fileName), w.toString());
- if (saved) {
- getLog().info("Generated csimple resource file: " + fileName);
- }
+ generatePropertiesFile(classes);
}
}
}
+ private void generatePropertiesFile(List<CSimpleGeneratedCode> classes) {
+ StringWriter w = new StringWriter();
+ w.append("# " + GENERATED_MSG + "\n");
+ classes.forEach(c -> w.write(c.getFqn() + "\n"));
+ String fileName = RESOURCE_FILE;
+ outputResourceDir.mkdirs();
+ boolean saved = updateResource(outputResourceDir.toPath().resolve(fileName), w.toString());
+ if (saved) {
+ getLog().info("Generated csimple resource file: " + fileName);
+ }
+ }
+
+ private void doGenerate(
+ CSimpleCodeGenerator generator, CamelCSimpleExpressionDetails cs, List<CSimpleGeneratedCode> classes) {
+ String script = cs.getCsimple();
+ String fqn = cs.getClassName();
+ if (script != null && fqn == null) {
+ // its from XML file so use a pseduo fqn name instead
+ fqn = "org.apache.camel.language.csimple.XmlRouteBuilder";
+ }
+ if (script != null) {
+ CSimpleGeneratedCode code;
+ if (cs.isPredicate()) {
+ code = generator.generatePredicate(fqn, script);
+ } else {
+ code = generator.generateExpression(fqn, script);
+ }
+ classes.add(code);
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Generated source code:\n\n\n" + code.getCode() + "\n\n\n");
+ }
+ String fileName = code.getFqn().replace('.', '/') + ".java";
+ outputDir.mkdirs();
+ boolean saved = updateResource(outputDir.toPath().resolve(fileName), code.getCode());
+ if (saved) {
+ getLog().info("Generated csimple source code file: " + fileName);
+ }
+ }
+ }
+
private void addXmlFiles(File file, List<CamelCSimpleExpressionDetails> csimpleExpressions) {
if (matchRouteFile(file)) {
try {
@@ -243,23 +252,10 @@ public class GenerateMojo extends AbstractExecMojo {
private void loadConfiguration() {
String configFile = resourceDir.getPath() + "/camel-csimple.properties";
- String loaded;
- InputStream is = null;
- try {
- // load from file system
- File file = new File(configFile);
- if (file.exists()) {
- is = new FileInputStream(file);
- }
- if (is == null) {
- return;
- }
- loaded = IOHelper.loadText(is);
- } catch (IOException e) {
- throw new RuntimeCamelException("Cannot load " + configFile);
-
+ final String loaded = load(configFile);
+ if (loaded == null) {
+ return;
}
- IOHelper.close(is);
int counter1 = 0;
int counter2 = 0;
@@ -296,6 +292,27 @@ public class GenerateMojo extends AbstractExecMojo {
}
}
+ private static String load(String configFile) {
+ String loaded;
+ InputStream is = null;
+ try {
+ // load from file system
+ File file = new File(configFile);
+ if (file.exists()) {
+ is = new FileInputStream(file);
+ }
+ if (is == null) {
+ return null;
+ }
+ loaded = IOHelper.loadText(is);
+ } catch (IOException e) {
+ throw new RuntimeCamelException("Cannot load " + configFile);
+
+ }
+ IOHelper.close(is);
+ return loaded;
+ }
+
private boolean matchRouteFile(File file) {
return CatalogHelper.matchRouteFile(file, excludes, includes, project);
}
diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
index fe271800ab3..be0ecafed9c 100644
--- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
+++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
@@ -247,82 +247,15 @@ public class RouteCoverageMojo extends AbstractExecMojo {
}
if (generateJacocoXmlReport && report != null) {
- try {
- getLog().info("Generating Jacoco XML report: " + file + "\n\n");
- createJacocoXmlFile(document, file);
- } catch (Exception e) {
- getLog().warn("Error generating Jacoco XML report due " + e.getMessage());
- }
+ doGenerateJacocoReport(file, document);
}
if (anonymousRoutes && !anonymousRouteTrees.isEmpty()) {
- // grab dump data for the route
- try {
- Map<String, List<CoverageData>> datas = RouteCoverageHelper
- .parseDumpRouteCoverageByClassAndTestMethod(project.getBasedir() + "/target/camel-route-coverage");
- if (datas.isEmpty()) {
- getLog().warn("No route coverage data found"
- + ". Make sure to enable route coverage in your unit tests. Also remember to run unit tests first.");
- } else {
- Map<String, List<CamelNodeDetails>> routes = groupAnonymousRoutesByClassName(anonymousRouteTrees);
- // attempt to match anonymous routes via the unit test class
- for (Map.Entry<String, List<CamelNodeDetails>> t : routes.entrySet()) {
- List<RouteCoverageNode> coverage = new ArrayList<>();
- String className = t.getKey();
-
- // we may have multiple tests in the same test class that tests different parts of the same
- // routes so merge their coverage reports into a single coverage
- for (Map.Entry<String, List<CoverageData>> entry : datas.entrySet()) {
- String key = entry.getKey();
- String dataClassName = key.substring(0, key.indexOf('-'));
- if (dataClassName.equals(className)) {
- List<RouteCoverageNode> result = gatherRouteCoverageSummary(t.getValue(), entry.getValue());
- // merge them together
- mergeCoverageData(coverage, result);
- }
- }
-
- if (!coverage.isEmpty()) {
- totalNumberOfNodes += coverage.size();
- String fileName
- = stripRootPath(asRelativeFile(t.getValue().get(0).getFileName(), project), project);
- String out = templateCoverageData(fileName, null, coverage, notCovered, coveredNodes);
- getLog().info("Route coverage summary:\n\n" + out);
- getLog().info("");
- }
- }
- }
- } catch (Exception e) {
- throw new MojoExecutionException("Error during gathering route coverage data ", e);
- }
+ totalNumberOfNodes = handleAnonymousRoutes(anonymousRouteTrees, totalNumberOfNodes, notCovered, coveredNodes);
}
if (generateHtmlReport) {
- try {
- final String baseHtmlPath = "/target/site/route-coverage/html";
- final File htmlPath = new File(project.getBasedir() + baseHtmlPath);
- if (!htmlPath.exists()) {
- htmlPath.mkdirs();
- }
- final File cssPath = new File(project.getBasedir() + baseHtmlPath + "/static/css");
- if (!cssPath.exists()) {
- cssPath.mkdirs();
- }
- final File jsPath = new File(project.getBasedir() + baseHtmlPath + "/static/js");
- if (!jsPath.exists()) {
- jsPath.mkdirs();
- }
- getLog().info("");
- getLog().info("Generating HTML route coverage reports: " + htmlPath + "\n");
- CoverageResultsProcessor processor = new CoverageResultsProcessor();
- processor.writeCSS(cssPath);
- processor.writeJS(jsPath);
- File xmlPath = new File(project.getBasedir() + "/target/camel-route-coverage");
- String out = processor.generateReport(project, xmlPath, htmlPath);
- getLog().info(out);
- } catch (Exception e) {
- getLog().warn("Error generating HTML route coverage reports " + e.getMessage());
- }
+ doGenerateHtmlReport();
}
// compute and log overall coverage across routes
@@ -338,6 +271,88 @@ public class RouteCoverageMojo extends AbstractExecMojo {
}
}
+ private void doGenerateJacocoReport(File file, Document document) {
+ try {
+ getLog().info("Generating Jacoco XML report: " + file + "\n\n");
+ createJacocoXmlFile(document, file);
+ } catch (Exception e) {
+ getLog().warn("Error generating Jacoco XML report due " + e.getMessage());
+ }
+ }
+
+ private int handleAnonymousRoutes(
+ List<CamelNodeDetails> anonymousRouteTrees, int totalNumberOfNodes, AtomicInteger notCovered,
+ AtomicInteger coveredNodes) throws MojoExecutionException {
+ // grab dump data for the route
+ try {
+ Map<String, List<CoverageData>> datas = RouteCoverageHelper
+ .parseDumpRouteCoverageByClassAndTestMethod(project.getBasedir() + "/target/camel-route-coverage");
+ if (datas.isEmpty()) {
+ getLog().warn("No route coverage data found"
+ + ". Make sure to enable route coverage in your unit tests. Also remember to run unit tests first.");
+ } else {
+ Map<String, List<CamelNodeDetails>> routes = groupAnonymousRoutesByClassName(anonymousRouteTrees);
+ // attempt to match anonymous routes via the unit test class
+ for (Map.Entry<String, List<CamelNodeDetails>> t : routes.entrySet()) {
+ List<RouteCoverageNode> coverage = new ArrayList<>();
+ String className = t.getKey();
+
+ // we may have multiple tests in the same test class that tests different parts of the same
+ // routes so merge their coverage reports into a single coverage
+ for (Map.Entry<String, List<CoverageData>> entry : datas.entrySet()) {
+ String key = entry.getKey();
+ String dataClassName = key.substring(0, key.indexOf('-'));
+ if (dataClassName.equals(className)) {
+ List<RouteCoverageNode> result = gatherRouteCoverageSummary(t.getValue(), entry.getValue());
+ // merge them together
+ mergeCoverageData(coverage, result);
+ }
+ }
+
+ if (!coverage.isEmpty()) {
+ totalNumberOfNodes += coverage.size();
+ String fileName
+ = stripRootPath(asRelativeFile(t.getValue().get(0).getFileName(), project), project);
+ String out = templateCoverageData(fileName, null, coverage, notCovered, coveredNodes);
+ getLog().info("Route coverage summary:\n\n" + out);
+ getLog().info("");
+ }
+ }
+ }
+ } catch (Exception e) {
+ throw new MojoExecutionException("Error during gathering route coverage data ", e);
+ }
+ return totalNumberOfNodes;
+ }
+
+ private void doGenerateHtmlReport() {
+ try {
+ final String baseHtmlPath = "/target/site/route-coverage/html";
+ final File htmlPath = new File(project.getBasedir() + baseHtmlPath);
+ if (!htmlPath.exists()) {
+ htmlPath.mkdirs();
+ }
+ final File cssPath = new File(project.getBasedir() + baseHtmlPath + "/static/css");
+ if (!cssPath.exists()) {
+ cssPath.mkdirs();
+ }
+ final File jsPath = new File(project.getBasedir() + baseHtmlPath + "/static/js");
+ if (!jsPath.exists()) {
+ jsPath.mkdirs();
+ }
+ getLog().info("");
+ getLog().info("Generating HTML route coverage reports: " + htmlPath + "\n");
+ CoverageResultsProcessor processor = new CoverageResultsProcessor();
+ processor.writeCSS(cssPath);
+ processor.writeJS(jsPath);
+ File xmlPath = new File(project.getBasedir() + "/target/camel-route-coverage");
+ String out = processor.generateReport(project, xmlPath, htmlPath);
+ getLog().info(out);
+ } catch (Exception e) {
+ getLog().warn("Error generating HTML route coverage reports " + e.getMessage());
+ }
+ }
+
private void addXmlFiles(File file, List<CamelNodeDetails> routeTrees) {
if (matchFile(file)) {
try {
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java
index 04eac6578ca..648974bdc09 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java
@@ -319,25 +319,10 @@ public class CSimpleLanguage extends TypedLanguageSupport implements StaticServi
private void loadConfiguration() {
InputStream is;
- String loaded;
- is = getCamelContext().getClassResolver().loadResourceAsStream(CONFIG_FILE);
- try {
- if (is == null) {
- // load from file system
- File file = new File(configResource);
- if (file.exists()) {
- is = new FileInputStream(file);
- }
- }
- if (is == null) {
- return;
- }
- loaded = IOHelper.loadText(is);
- } catch (IOException e) {
- throw new RuntimeCamelException("Cannot load " + CONFIG_FILE + " from classpath");
-
+ final String loaded = load(configResource);
+ if (loaded == null) {
+ return;
}
- IOHelper.close(is);
int counter1 = 0;
int counter2 = 0;
@@ -376,4 +361,28 @@ public class CSimpleLanguage extends TypedLanguageSupport implements StaticServi
}
+ private String load(String configResource) {
+ InputStream is;
+ String loaded;
+ is = getCamelContext().getClassResolver().loadResourceAsStream(CONFIG_FILE);
+ try {
+ if (is == null) {
+ // load from file system
+ File file = new File(configResource);
+ if (file.exists()) {
+ is = new FileInputStream(file);
+ }
+ }
+ if (is == null) {
+ return null;
+ }
+ loaded = IOHelper.loadText(is);
+ } catch (IOException e) {
+ throw new RuntimeCamelException("Cannot load " + CONFIG_FILE + " from classpath");
+
+ }
+ IOHelper.close(is);
+ return loaded;
+ }
+
}