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;
+    }
+
 }