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 2022/03/22 11:42:00 UTC
[camel] 01/08: (chores) camel-report-maven-plugin: remove duplications and code cleanup
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
commit 56cb22d1c42cdb6c0df48f459297749e53dfd4af
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Mar 21 15:13:39 2022 +0100
(chores) camel-report-maven-plugin: remove duplications and code cleanup
---
.../java/org/apache/camel/maven/ValidateMojo.java | 495 +++++++++++----------
1 file changed, 256 insertions(+), 239 deletions(-)
diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
index a422cdf..b84ddfb 100644
--- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
+++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/ValidateMojo.java
@@ -380,107 +380,18 @@ public class ValidateMojo extends AbstractExecMojo {
Set<File> xmlFiles = new LinkedHashSet<>();
// find all java route builder classes
- if (includeJava) {
- List list = project.getCompileSourceRoots();
- for (Object obj : list) {
- String dir = (String) obj;
- findJavaFiles(new File(dir), javaFiles);
- }
- if (includeTest) {
- list = project.getTestCompileSourceRoots();
- for (Object obj : list) {
- String dir = (String) obj;
- findJavaFiles(new File(dir), javaFiles);
- }
- }
- }
+ findJavaRouteBuilderClasses(javaFiles);
// find all xml routes
- if (includeXml) {
- List list = project.getResources();
- for (Object obj : list) {
- Resource dir = (Resource) obj;
- findXmlFiles(new File(dir.getDirectory()), xmlFiles);
- }
- if (includeTest) {
- list = project.getTestResources();
- for (Object obj : list) {
- Resource dir = (Resource) obj;
- findXmlFiles(new File(dir.getDirectory()), xmlFiles);
- }
- }
- }
+ findXmlRouters(xmlFiles);
for (File file : javaFiles) {
if (matchRouteFile(file)) {
- try {
- List<CamelEndpointDetails> fileEndpoints = new ArrayList<>();
- List<CamelRouteDetails> fileRouteIds = new ArrayList<>();
- List<CamelSimpleExpressionDetails> fileSimpleExpressions = new ArrayList<>();
- List<String> unparsable = new ArrayList<>();
-
- // parse the java source code and find Camel RouteBuilder classes
- String fqn = file.getPath();
- String baseDir = ".";
- JavaType out = Roaster.parse(file);
- // we should only parse java classes (not interfaces and enums etc)
- if (out instanceof JavaClassSource) {
- JavaClassSource clazz = (JavaClassSource) out;
- RouteBuilderParser.parseRouteBuilderEndpoints(clazz, baseDir, fqn, fileEndpoints, unparsable, includeTest);
- RouteBuilderParser.parseRouteBuilderSimpleExpressions(clazz, baseDir, fqn, fileSimpleExpressions);
- if (duplicateRouteId) {
- RouteBuilderParser.parseRouteBuilderRouteIds(clazz, baseDir, fqn, fileRouteIds);
- }
-
- // add what we found in this file to the total list
- endpoints.addAll(fileEndpoints);
- simpleExpressions.addAll(fileSimpleExpressions);
- routeIds.addAll(fileRouteIds);
-
- // was there any unparsable?
- if (logUnparseable && !unparsable.isEmpty()) {
- for (String uri : unparsable) {
- getLog().warn("Cannot parse endpoint uri " + uri + " in java file " + file);
- }
- }
- }
- } catch (Exception e) {
- getLog().warn("Error parsing java file " + file + " code due " + e.getMessage(), e);
- }
+ parseJavaRouteFile(endpoints, simpleExpressions, routeIds, file);
}
}
for (File file : xmlFiles) {
if (matchRouteFile(file)) {
- try {
- List<CamelEndpointDetails> fileEndpoints = new ArrayList<>();
- List<CamelSimpleExpressionDetails> fileSimpleExpressions = new ArrayList<>();
- List<CamelRouteDetails> fileRouteIds = new ArrayList<>();
-
- // parse the xml source code and find Camel routes
- String fqn = file.getPath();
- String baseDir = ".";
-
- InputStream is = new FileInputStream(file);
- XmlRouteParser.parseXmlRouteEndpoints(is, baseDir, fqn, fileEndpoints);
- is.close();
- // need a new stream
- is = new FileInputStream(file);
- XmlRouteParser.parseXmlRouteSimpleExpressions(is, baseDir, fqn, fileSimpleExpressions);
- is.close();
-
- if (duplicateRouteId) {
- // need a new stream
- is = new FileInputStream(file);
- XmlRouteParser.parseXmlRouteRouteIds(is, baseDir, fqn, fileRouteIds);
- is.close();
- }
-
- // add what we found in this file to the total list
- endpoints.addAll(fileEndpoints);
- simpleExpressions.addAll(fileSimpleExpressions);
- routeIds.addAll(fileRouteIds);
- } catch (Exception e) {
- getLog().warn("Error parsing xml file " + file + " code due " + e.getMessage(), e);
- }
+ parseXmlRouteFile(endpoints, simpleExpressions, routeIds, file);
}
}
@@ -519,76 +430,16 @@ public class ValidateMojo extends AbstractExecMojo {
endpointErrors++;
}
- StringBuilder sb = new StringBuilder();
- sb.append("Endpoint validation error at: ");
- if (detail.getClassName() != null && detail.getLineNumber() != null) {
- // this is from java code
- sb.append(detail.getClassName());
- if (detail.getMethodName() != null) {
- sb.append(".").append(detail.getMethodName());
- }
- sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
- sb.append(detail.getLineNumber()).append(")");
- } else if (detail.getLineNumber() != null) {
- // this is from xml
- String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
- if (fqn.endsWith(".xml")) {
- fqn = fqn.substring(0, fqn.length() - 4);
- fqn = asPackageName(fqn);
- }
- sb.append(fqn);
- sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
- sb.append(detail.getLineNumber()).append(")");
- } else {
- sb.append(detail.getFileName());
- }
- sb.append("\n\n");
- String out = result.summaryErrorMessage(false, ignoreDeprecated, true);
- sb.append(out);
- sb.append("\n\n");
+ String msg = buildValidationErrorMessage(detail, result);
- getLog().warn(sb.toString());
+ getLog().warn(msg);
} else if (showAll) {
- StringBuilder sb = new StringBuilder();
- sb.append("Endpoint validation passed at: ");
- if (detail.getClassName() != null && detail.getLineNumber() != null) {
- // this is from java code
- sb.append(detail.getClassName());
- if (detail.getMethodName() != null) {
- sb.append(".").append(detail.getMethodName());
- }
- sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
- sb.append(detail.getLineNumber()).append(")");
- } else if (detail.getLineNumber() != null) {
- // this is from xml
- String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
- if (fqn.endsWith(".xml")) {
- fqn = fqn.substring(0, fqn.length() - 4);
- fqn = asPackageName(fqn);
- }
- sb.append(fqn);
- sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
- sb.append(detail.getLineNumber()).append(")");
- } else {
- sb.append(detail.getFileName());
- }
- sb.append("\n");
- sb.append("\n\t").append(result.getUri());
- sb.append("\n\n");
+ String msg = buildValidationPassedMessage(detail, result);
- getLog().info(sb.toString());
+ getLog().info(msg);
}
}
- String endpointSummary;
- if (endpointErrors == 0) {
- int ok = endpoints.size() - endpointErrors - incapableErrors - unknownComponents;
- endpointSummary = String.format("Endpoint validation success: (%s = passed, %s = invalid, %s = incapable, %s = unknown components, %s = deprecated options)",
- ok, endpointErrors, incapableErrors, unknownComponents, deprecatedOptions);
- } else {
- int ok = endpoints.size() - endpointErrors - incapableErrors - unknownComponents;
- endpointSummary = String.format("Endpoint validation error: (%s = passed, %s = invalid, %s = incapable, %s = unknown components, %s = deprecated options)",
- ok, endpointErrors, incapableErrors, unknownComponents, deprecatedOptions);
- }
+ String endpointSummary = buildEndpointSummaryMessage(endpoints, endpointErrors, unknownComponents, incapableErrors, deprecatedOptions);
if (endpointErrors > 0) {
getLog().warn(endpointSummary);
} else {
@@ -597,14 +448,7 @@ public class ValidateMojo extends AbstractExecMojo {
// simple
int simpleErrors = validateSimple(catalog, simpleExpressions);
- String simpleSummary;
- if (simpleErrors == 0) {
- int ok = simpleExpressions.size() - simpleErrors;
- simpleSummary = String.format("Simple validation success: (%s = passed, %s = invalid)", ok, simpleErrors);
- } else {
- int ok = simpleExpressions.size() - simpleErrors;
- simpleSummary = String.format("Simple validation error: (%s = passed, %s = invalid)", ok, simpleErrors);
- }
+ String simpleSummary = buildSimpleSummaryMessage(simpleExpressions, simpleErrors);
if (simpleErrors > 0) {
getLog().warn(simpleSummary);
} else {
@@ -650,6 +494,200 @@ public class ValidateMojo extends AbstractExecMojo {
}
}
+ private String buildSimpleSummaryMessage(List<CamelSimpleExpressionDetails> simpleExpressions, int simpleErrors) {
+ String simpleSummary;
+ if (simpleErrors == 0) {
+ int ok = simpleExpressions.size() - simpleErrors;
+ simpleSummary = String.format("Simple validation success: (%s = passed, %s = invalid)", ok, simpleErrors);
+ } else {
+ int ok = simpleExpressions.size() - simpleErrors;
+ simpleSummary = String.format("Simple validation error: (%s = passed, %s = invalid)", ok, simpleErrors);
+ }
+ return simpleSummary;
+ }
+
+ private String buildEndpointSummaryMessage(List<CamelEndpointDetails> endpoints, int endpointErrors, int unknownComponents, int incapableErrors, int deprecatedOptions) {
+ String endpointSummary;
+ if (endpointErrors == 0) {
+ int ok = endpoints.size() - endpointErrors - incapableErrors - unknownComponents;
+ endpointSummary = String.format("Endpoint validation success: (%s = passed, %s = invalid, %s = incapable, %s = unknown components, %s = deprecated options)",
+ ok, endpointErrors, incapableErrors, unknownComponents, deprecatedOptions);
+ } else {
+ int ok = endpoints.size() - endpointErrors - incapableErrors - unknownComponents;
+ endpointSummary = String.format("Endpoint validation error: (%s = passed, %s = invalid, %s = incapable, %s = unknown components, %s = deprecated options)",
+ ok, endpointErrors, incapableErrors, unknownComponents, deprecatedOptions);
+ }
+ return endpointSummary;
+ }
+
+ private String buildValidationPassedMessage(CamelEndpointDetails detail, EndpointValidationResult result) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Endpoint validation passed at: ");
+ if (detail.getClassName() != null && detail.getLineNumber() != null) {
+ // this is from java code
+ sb.append(detail.getClassName());
+ if (detail.getMethodName() != null) {
+ sb.append(".").append(detail.getMethodName());
+ }
+ sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
+ sb.append(detail.getLineNumber()).append(")");
+ } else if (detail.getLineNumber() != null) {
+ // this is from xml
+ String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
+ if (fqn.endsWith(".xml")) {
+ fqn = fqn.substring(0, fqn.length() - 4);
+ fqn = asPackageName(fqn);
+ }
+ sb.append(fqn);
+ sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
+ sb.append(detail.getLineNumber()).append(")");
+ } else {
+ sb.append(detail.getFileName());
+ }
+ sb.append("\n");
+ sb.append("\n\t").append(result.getUri());
+ sb.append("\n\n");
+
+ String msg = sb.toString();
+ return msg;
+ }
+
+ private String buildValidationErrorMessage(CamelEndpointDetails detail, EndpointValidationResult result) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Endpoint validation error at: ");
+ if (detail.getClassName() != null && detail.getLineNumber() != null) {
+ // this is from java code
+ sb.append(detail.getClassName());
+ if (detail.getMethodName() != null) {
+ sb.append(".").append(detail.getMethodName());
+ }
+ sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
+ sb.append(detail.getLineNumber()).append(")");
+ } else if (detail.getLineNumber() != null) {
+ // this is from xml
+ String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
+ if (fqn.endsWith(".xml")) {
+ fqn = fqn.substring(0, fqn.length() - 4);
+ fqn = asPackageName(fqn);
+ }
+ sb.append(fqn);
+ sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
+ sb.append(detail.getLineNumber()).append(")");
+ } else {
+ sb.append(detail.getFileName());
+ }
+ sb.append("\n\n");
+ String out = result.summaryErrorMessage(false, ignoreDeprecated, true);
+ sb.append(out);
+ sb.append("\n\n");
+ return sb.toString();
+ }
+
+ private void parseXmlRouteFile(List<CamelEndpointDetails> endpoints, List<CamelSimpleExpressionDetails> simpleExpressions, List<CamelRouteDetails> routeIds, File file) {
+ try {
+ List<CamelEndpointDetails> fileEndpoints = new ArrayList<>();
+ List<CamelSimpleExpressionDetails> fileSimpleExpressions = new ArrayList<>();
+ List<CamelRouteDetails> fileRouteIds = new ArrayList<>();
+
+ // parse the xml source code and find Camel routes
+ String fqn = file.getPath();
+ String baseDir = ".";
+
+ InputStream is = new FileInputStream(file);
+ XmlRouteParser.parseXmlRouteEndpoints(is, baseDir, fqn, fileEndpoints);
+ is.close();
+ // need a new stream
+ is = new FileInputStream(file);
+ XmlRouteParser.parseXmlRouteSimpleExpressions(is, baseDir, fqn, fileSimpleExpressions);
+ is.close();
+
+ if (duplicateRouteId) {
+ // need a new stream
+ is = new FileInputStream(file);
+ XmlRouteParser.parseXmlRouteRouteIds(is, baseDir, fqn, fileRouteIds);
+ is.close();
+ }
+
+ // add what we found in this file to the total list
+ endpoints.addAll(fileEndpoints);
+ simpleExpressions.addAll(fileSimpleExpressions);
+ routeIds.addAll(fileRouteIds);
+ } catch (Exception e) {
+ getLog().warn("Error parsing xml file " + file + " code due " + e.getMessage(), e);
+ }
+ }
+
+ private void parseJavaRouteFile(List<CamelEndpointDetails> endpoints, List<CamelSimpleExpressionDetails> simpleExpressions, List<CamelRouteDetails> routeIds, File file) {
+ try {
+ List<CamelEndpointDetails> fileEndpoints = new ArrayList<>();
+ List<CamelRouteDetails> fileRouteIds = new ArrayList<>();
+ List<CamelSimpleExpressionDetails> fileSimpleExpressions = new ArrayList<>();
+ List<String> unparsable = new ArrayList<>();
+
+ // parse the java source code and find Camel RouteBuilder classes
+ String fqn = file.getPath();
+ String baseDir = ".";
+ JavaType out = Roaster.parse(file);
+ // we should only parse java classes (not interfaces and enums etc)
+ if (out instanceof JavaClassSource) {
+ JavaClassSource clazz = (JavaClassSource) out;
+ RouteBuilderParser.parseRouteBuilderEndpoints(clazz, baseDir, fqn, fileEndpoints, unparsable, includeTest);
+ RouteBuilderParser.parseRouteBuilderSimpleExpressions(clazz, baseDir, fqn, fileSimpleExpressions);
+ if (duplicateRouteId) {
+ RouteBuilderParser.parseRouteBuilderRouteIds(clazz, baseDir, fqn, fileRouteIds);
+ }
+
+ // add what we found in this file to the total list
+ endpoints.addAll(fileEndpoints);
+ simpleExpressions.addAll(fileSimpleExpressions);
+ routeIds.addAll(fileRouteIds);
+
+ // was there any unparsable?
+ if (logUnparseable && !unparsable.isEmpty()) {
+ for (String uri : unparsable) {
+ getLog().warn("Cannot parse endpoint uri " + uri + " in java file " + file);
+ }
+ }
+ }
+ } catch (Exception e) {
+ getLog().warn("Error parsing java file " + file + " code due " + e.getMessage(), e);
+ }
+ }
+
+ private void findXmlRouters(Set<File> xmlFiles) {
+ if (includeXml) {
+ List list = project.getResources();
+ for (Object obj : list) {
+ Resource dir = (Resource) obj;
+ findXmlFiles(new File(dir.getDirectory()), xmlFiles);
+ }
+ if (includeTest) {
+ list = project.getTestResources();
+ for (Object obj : list) {
+ Resource dir = (Resource) obj;
+ findXmlFiles(new File(dir.getDirectory()), xmlFiles);
+ }
+ }
+ }
+ }
+
+ private void findJavaRouteBuilderClasses(Set<File> javaFiles) {
+ if (includeJava) {
+ List list = project.getCompileSourceRoots();
+ for (Object obj : list) {
+ String dir = (String) obj;
+ findJavaFiles(new File(dir), javaFiles);
+ }
+ if (includeTest) {
+ list = project.getTestCompileSourceRoots();
+ for (Object obj : list) {
+ String dir = (String) obj;
+ findJavaFiles(new File(dir), javaFiles);
+ }
+ }
+ }
+ }
+
private int countEndpointPairs(List<CamelEndpointDetails> endpoints, String scheme) {
int pairs = 0;
@@ -854,68 +892,48 @@ public class ValidateMojo extends AbstractExecMojo {
if (count > 1) {
duplicateRouteIdErrors++;
- StringBuilder sb = new StringBuilder();
- sb.append("Duplicate route id validation error at: ");
- if (detail.getClassName() != null && detail.getLineNumber() != null) {
- // this is from java code
- sb.append(detail.getClassName());
- if (detail.getMethodName() != null) {
- sb.append(".").append(detail.getMethodName());
- }
- sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
- sb.append(detail.getLineNumber()).append(")");
- } else if (detail.getLineNumber() != null) {
- // this is from xml
- String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
- if (fqn.endsWith(".xml")) {
- fqn = fqn.substring(0, fqn.length() - 4);
- fqn = asPackageName(fqn);
- }
- sb.append(fqn);
- sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
- sb.append(detail.getLineNumber()).append(")");
- } else {
- sb.append(detail.getFileName());
- }
- sb.append("\n");
- sb.append("\n\t").append(detail.getRouteId());
- sb.append("\n\n");
-
- getLog().warn(sb.toString());
+ final String msg = buildRouteIdValidationMessage("Duplicate route id validation error at: ", detail);
+ getLog().warn(msg);
} else if (showAll) {
- StringBuilder sb = new StringBuilder();
- sb.append("Duplicate route id validation passed at: ");
- if (detail.getClassName() != null && detail.getLineNumber() != null) {
- // this is from java code
- sb.append(detail.getClassName());
- if (detail.getMethodName() != null) {
- sb.append(".").append(detail.getMethodName());
- }
- sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
- sb.append(detail.getLineNumber()).append(")");
- } else if (detail.getLineNumber() != null) {
- // this is from xml
- String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
- if (fqn.endsWith(".xml")) {
- fqn = fqn.substring(0, fqn.length() - 4);
- fqn = asPackageName(fqn);
- }
- sb.append(fqn);
- sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
- sb.append(detail.getLineNumber()).append(")");
- } else {
- sb.append(detail.getFileName());
- }
- sb.append("\n");
- sb.append("\n\t").append(detail.getRouteId());
- sb.append("\n\n");
-
- getLog().info(sb.toString());
+ final String msg = buildRouteIdValidationMessage("Duplicate route id validation passed at: ", detail);
+ getLog().info(msg);
}
}
}
return duplicateRouteIdErrors;
}
+
+ private String buildRouteIdValidationMessage(String str, CamelRouteDetails detail) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(str);
+ if (detail.getClassName() != null && detail.getLineNumber() != null) {
+ // this is from java code
+ sb.append(detail.getClassName());
+ if (detail.getMethodName() != null) {
+ sb.append(".").append(detail.getMethodName());
+ }
+ sb.append("(").append(asSimpleClassName(detail.getClassName())).append(".java:");
+ sb.append(detail.getLineNumber()).append(")");
+ } else if (detail.getLineNumber() != null) {
+ // this is from xml
+ String fqn = stripRootPath(asRelativeFile(detail.getFileName()));
+ if (fqn.endsWith(".xml")) {
+ fqn = fqn.substring(0, fqn.length() - 4);
+ fqn = asPackageName(fqn);
+ }
+ sb.append(fqn);
+ sb.append("(").append(asSimpleClassName(fqn)).append(".xml:");
+ sb.append(detail.getLineNumber()).append(")");
+ } else {
+ sb.append(detail.getFileName());
+ }
+ sb.append("\n");
+ sb.append("\n\t").append(detail.getRouteId());
+ sb.append("\n\n");
+
+ final String msg = sb.toString();
+ return msg;
+ }
// CHECKSTYLE:ON
private static int countRouteId(List<CamelRouteDetails> details, String routeId) {
@@ -1009,28 +1027,14 @@ public class ValidateMojo extends AbstractExecMojo {
// exclude take precedence
if (excludes != null) {
- for (String exclude : excludes.split(",")) {
- exclude = exclude.trim();
- // try both with and without directory in the name
- String fqn = stripRootPath(asRelativeFile(file.getAbsolutePath()));
- boolean match = PatternHelper.matchPattern(fqn, exclude) || PatternHelper.matchPattern(file.getName(), exclude);
- if (match) {
- return false;
- }
+ if (fileListMatchesPattern(excludes, file)) {
+ return false;
}
}
// include
if (includes != null) {
- for (String include : includes.split(",")) {
- include = include.trim();
- // try both with and without directory in the name
- String fqn = stripRootPath(asRelativeFile(file.getAbsolutePath()));
- boolean match = PatternHelper.matchPattern(fqn, include) || PatternHelper.matchPattern(file.getName(), include);
- if (match) {
- return true;
- }
- }
+ if (fileListMatchesPattern(includes, file)) return true;
// did not match any includes
return false;
}
@@ -1039,6 +1043,19 @@ public class ValidateMojo extends AbstractExecMojo {
return true;
}
+ private boolean fileListMatchesPattern(String fileList, File file) {
+ for (String exclude : fileList.split(",")) {
+ exclude = exclude.trim();
+ // try both with and without directory in the name
+ String fqn = stripRootPath(asRelativeFile(file.getAbsolutePath()));
+ boolean match = PatternHelper.matchPattern(fqn, exclude) || PatternHelper.matchPattern(file.getName(), exclude);
+ if (match) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private String asRelativeFile(String name) {
String answer = name;