This is an automated email from the ASF dual-hosted git repository.
davsclaus 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 97a5f12cdad CAMEL-20206: split overly complex method in ValidateMojo
(#14147)
97a5f12cdad is described below
commit 97a5f12cdad219fc542cc94e4ae5d1516244cf9c
Author: Antoine Wils <[email protected]>
AuthorDate: Wed May 15 09:00:18 2024 +0200
CAMEL-20206: split overly complex method in ValidateMojo (#14147)
Co-authored-by: Antoine Wils <[email protected]>
---
.../java/org/apache/camel/maven/ValidateMojo.java | 318 +++++++++++++--------
1 file changed, 201 insertions(+), 117 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 9ce8f310dc3..7f5579ba73b 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
@@ -237,31 +237,7 @@ public class ValidateMojo extends AbstractMojo {
return;
}
- // Download extra sources only if artifacts sources are defined and
the current project is not a parent project
- if (!"pom".equals(project.getPackaging()) && sourcesArtifacts != null
&& sourcesArtifacts.length > 0) {
- // setup MavenDownloader, it will be used to download and locate
artifacts declared via sourcesArtifacts
-
- List<String> artifacts = Arrays.asList(sourcesArtifacts);
-
- artifacts
- .parallelStream()
- .forEach(artifact -> {
- if (!artifact.contains(":sources:")) {
- getLog().warn("The artifact " + artifact
- + " does not contain sources
classifier, and may be excluded in future releases");
- }
- });
-
- try (MavenDownloaderImpl downloader
- = new MavenDownloaderImpl(repositorySystem,
repositorySystemSession, session.getSettings())) {
- downloadArtifacts(downloader, artifacts);
- } catch (IOException e) {
- throw new MojoExecutionException(e);
- } catch (MavenResolutionException e) {
- // missing artifact, log and proceed
- getLog().warn(e.getMessage());
- }
- }
+ downloadExtraSources();
CamelCatalog catalog = new DefaultCamelCatalog();
// add activemq as known component
@@ -281,6 +257,19 @@ public class ValidateMojo extends AbstractMojo {
getLog().info("Detected Camel version used in project: " +
detectedVersion);
}
+ downloadCamelCatalogVersion(catalog);
+
+ if (catalog.getLoadedVersion() != null) {
+ getLog().info("Validating using downloaded Camel version: " +
catalog.getLoadedVersion());
+ } else {
+ getLog().info("Validating using Camel version: " +
catalog.getCatalogVersion());
+ }
+
+ doExecuteRoutes(catalog);
+ doExecuteConfigurationFiles(catalog);
+ }
+
+ private void downloadCamelCatalogVersion(CamelCatalog catalog) {
if (downloadVersion) {
String catalogVersion = catalog.getCatalogVersion();
String version = findCamelVersion(project);
@@ -293,15 +282,36 @@ public class ValidateMojo extends AbstractMojo {
}
}
}
+ }
- if (catalog.getLoadedVersion() != null) {
- getLog().info("Validating using downloaded Camel version: " +
catalog.getLoadedVersion());
- } else {
- getLog().info("Validating using Camel version: " +
catalog.getCatalogVersion());
- }
+ /**
+ * Download extra sources only if artifacts sources are defined and the
current project is not a parent project
+ */
+ private void downloadExtraSources() throws MojoExecutionException {
+ if (!"pom".equals(project.getPackaging()) && sourcesArtifacts != null
&& sourcesArtifacts.length > 0) {
+ // setup MavenDownloader, it will be used to download and locate
artifacts declared via sourcesArtifacts
- doExecuteRoutes(catalog);
- doExecuteConfigurationFiles(catalog);
+ List<String> artifacts = Arrays.asList(sourcesArtifacts);
+
+ artifacts
+ .parallelStream()
+ .forEach(artifact -> {
+ if (!artifact.contains(":sources:")) {
+ getLog().warn("The artifact " + artifact
+ + " does not contain sources
classifier, and may be excluded in future releases");
+ }
+ });
+
+ try (MavenDownloaderImpl downloader
+ = new MavenDownloaderImpl(repositorySystem,
repositorySystemSession, session.getSettings())) {
+ downloadArtifacts(downloader, artifacts);
+ } catch (IOException e) {
+ throw new MojoExecutionException(e);
+ } catch (MavenResolutionException e) {
+ // missing artifact, log and proceed
+ getLog().warn(e.getMessage());
+ }
+ }
}
private void downloadArtifacts(MavenDownloaderImpl downloader,
List<String> artifacts)
@@ -409,62 +419,38 @@ public class ValidateMojo extends AbstractMojo {
}
private void validateResults(List<ConfigurationPropertiesValidationResult>
results) throws MojoExecutionException {
- int configurationErrors = 0;
- int unknownComponents = 0;
- int incapableErrors = 0;
- int deprecatedOptions = 0;
+ ValidationComputedResult validationComputedResult = new
ValidationComputedResult();
+
for (ConfigurationPropertiesValidationResult result : results) {
int deprecated = countDeprecated(result.getDeprecated());
- deprecatedOptions += deprecated;
-
- boolean ok = result.isSuccess() && !result.hasWarnings();
- if (!ok && ignoreUnknownComponent && result.getUnknownComponent()
!= null) {
- // if we failed due unknown component then be okay if we
should ignore that
- unknownComponents++;
- ok = true;
- }
- if (!ok && ignoreIncapable && result.getIncapable() != null) {
- // if we failed due incapable then be okay if we should ignore
that
- incapableErrors++;
- ok = true;
- }
- if (ok && !ignoreDeprecated && deprecated > 0) {
- ok = false;
- }
+ validationComputedResult.incrementDeprecatedOptionsBy(deprecated);
- if (!ok) {
- if (result.getUnknownComponent() != null) {
- unknownComponents++;
- } else if (result.getIncapable() != null) {
- incapableErrors++;
- } else {
- configurationErrors++;
- }
-
- final String validationFailed =
buildValidationFailedSummary(result);
-
- getLog().warn(validationFailed);
- } else if (showAll) {
- final String validationPassed =
buildValidationPassedSummary(result);
-
- getLog().info(validationPassed);
- }
+ boolean validationPassed =
checkValidationPassed(validationComputedResult, result, deprecated);
+ handleValidationResult(validationComputedResult, result,
validationPassed);
}
String configurationSummary;
- if (configurationErrors == 0) {
- int ok = results.size() - configurationErrors - incapableErrors -
unknownComponents;
+ if (validationComputedResult.getConfigurationErrors() == 0) {
+ int ok = results.size() -
validationComputedResult.getConfigurationErrors()
+ - validationComputedResult.getIncapableErrors() -
+ validationComputedResult.getUnknownComponents();
configurationSummary = String.format(
"Configuration validation success: (%s = passed, %s =
invalid, %s = incapable, %s = unknown components, %s = deprecated options)",
- ok, configurationErrors, incapableErrors,
unknownComponents, deprecatedOptions);
+ ok, validationComputedResult.getConfigurationErrors(),
validationComputedResult.getIncapableErrors(),
+ validationComputedResult.getUnknownComponents(),
+ validationComputedResult.getDeprecatedOptions());
} else {
- int ok = results.size() - configurationErrors - incapableErrors -
unknownComponents;
+ int ok = results.size() -
validationComputedResult.getConfigurationErrors()
+ - validationComputedResult.getIncapableErrors() -
+ validationComputedResult.getUnknownComponents();
configurationSummary = String.format(
"Configuration validation error: (%s = passed, %s =
invalid, %s = incapable, %s = unknown components, %s = deprecated options)",
- ok, configurationErrors, incapableErrors,
unknownComponents, deprecatedOptions);
+ ok, validationComputedResult.getConfigurationErrors(),
validationComputedResult.getIncapableErrors(),
+ validationComputedResult.getUnknownComponents(),
+ validationComputedResult.getDeprecatedOptions());
}
- logErrorSummary(configurationErrors, configurationSummary);
+ logErrorSummary(validationComputedResult.getConfigurationErrors(),
configurationSummary);
- if (failOnError && (configurationErrors > 0)) {
+ if (failOnError && (validationComputedResult.getConfigurationErrors()
> 0)) {
throw new MojoExecutionException(configurationSummary + "\n");
}
}
@@ -591,53 +577,23 @@ public class ValidateMojo extends AbstractMojo {
CamelCatalog catalog, List<CamelEndpointDetails> endpoints,
List<CamelSimpleExpressionDetails> simpleExpressions,
List<CamelRouteDetails> routeIds)
throws MojoExecutionException {
- int endpointErrors = 0;
- int unknownComponents = 0;
- int incapableErrors = 0;
- int deprecatedOptions = 0;
+ ValidationComputedResult validationComputedResult = new
ValidationComputedResult();
+
for (CamelEndpointDetails detail : endpoints) {
getLog().debug("Validating endpoint: " + detail.getEndpointUri());
EndpointValidationResult result
=
catalog.validateEndpointProperties(detail.getEndpointUri(),
ignoreLenientProperties);
- int deprecated = countDeprecated(result.getDeprecated());
- deprecatedOptions += deprecated;
-
- boolean ok = result.isSuccess() && !result.hasWarnings();
- if (!ok && ignoreUnknownComponent && result.getUnknownComponent()
!= null) {
- // if we failed due unknown component then be okay if we
should ignore that
- unknownComponents++;
- ok = true;
- }
- if (!ok && ignoreIncapable && result.getIncapable() != null) {
- // if we failed due incapable then be okay if we should ignore
that
- incapableErrors++;
- ok = true;
- }
- if (ok && !ignoreDeprecated && deprecated > 0) {
- ok = false;
- }
-
- if (!ok) {
- if (result.getUnknownComponent() != null) {
- unknownComponents++;
- } else if (result.getIncapable() != null) {
- incapableErrors++;
- } else {
- endpointErrors++;
- }
-
- String msg = buildValidationErrorMessage(detail, result);
-
- getLog().warn(msg);
- } else if (showAll) {
- String msg = buildValidationPassedMessage(detail, result);
+ int deprecatedCount = countDeprecated(result.getDeprecated());
+
validationComputedResult.incrementDeprecatedOptionsBy(deprecatedCount);
- getLog().info(msg);
- }
+ boolean validationPassed =
checkValidationPassed(validationComputedResult, result, deprecatedCount);
+ handleValidationResult(validationComputedResult, detail, result,
validationPassed);
}
String endpointSummary
- = buildEndpointSummaryMessage(endpoints, endpointErrors,
unknownComponents, incapableErrors, deprecatedOptions);
- logErrorSummary(endpointErrors, endpointSummary);
+ = buildEndpointSummaryMessage(endpoints,
validationComputedResult.getEndpointErrors(),
+ validationComputedResult.getUnknownComponents(),
validationComputedResult.getIncapableErrors(),
+ validationComputedResult.getDeprecatedOptions());
+ logErrorSummary(validationComputedResult.getEndpointErrors(),
endpointSummary);
// simple
int simpleErrors = validateSimple(catalog, simpleExpressions);
@@ -662,12 +618,92 @@ public class ValidateMojo extends AbstractMojo {
routeIdSummary = handleDuplicateRouteId(duplicateRouteIdErrors,
routeIds);
}
- if (failOnError && hasErrors(endpointErrors, simpleErrors,
duplicateRouteIdErrors) || sedaDirectErrors > 0) {
+ if (failOnError &&
hasErrors(validationComputedResult.getEndpointErrors(), simpleErrors,
duplicateRouteIdErrors)
+ || sedaDirectErrors > 0) {
throw new MojoExecutionException(
endpointSummary + "\n" + simpleSummary + "\n" +
routeIdSummary + "\n" + sedaDirectSummary);
}
}
+ private void handleValidationResult(
+ ValidationComputedResult validationComputedResult,
CamelEndpointDetails detail, EndpointValidationResult result,
+ boolean validationPassed) {
+ if (!validationPassed) {
+ if (result.getUnknownComponent() != null) {
+ validationComputedResult.incrementUnknownComponents();
+ } else if (result.getIncapable() != null) {
+ validationComputedResult.incrementIncapableErrors();
+ } else {
+ validationComputedResult.incrementEndpointErrors();
+ }
+
+ String msg = buildValidationErrorMessage(detail, result);
+
+ getLog().warn(msg);
+ } else if (showAll) {
+ String msg = buildValidationPassedMessage(detail, result);
+
+ getLog().info(msg);
+ }
+ }
+
+ private void handleValidationResult(
+ ValidationComputedResult validationComputedResult,
ConfigurationPropertiesValidationResult result,
+ boolean validationPassed) {
+ if (!validationPassed) {
+ if (result.getUnknownComponent() != null) {
+ validationComputedResult.incrementUnknownComponents();
+ } else if (result.getIncapable() != null) {
+ validationComputedResult.incrementIncapableErrors();
+ } else {
+ validationComputedResult.incrementConfigurationErrors();
+ }
+
+ final String validationFailed =
buildValidationFailedSummary(result);
+
+ getLog().warn(validationFailed);
+ } else if (showAll) {
+ final String validationPassedSummary =
buildValidationPassedSummary(result);
+
+ getLog().info(validationPassedSummary);
+ }
+ }
+
+ private boolean checkValidationPassed(
+ ValidationComputedResult validationComputedResult,
EndpointValidationResult result, int deprecatedCount) {
+ boolean validationPassed = checkValidationPassed(result.isSuccess(),
result.hasWarnings(), result.getUnknownComponent(),
+ validationComputedResult, result.getIncapable(),
deprecatedCount);
+ return validationPassed;
+ }
+
+ private boolean checkValidationPassed(
+ ValidationComputedResult validationComputedResult,
ConfigurationPropertiesValidationResult result,
+ int deprecatedCount) {
+ boolean validationPassed = checkValidationPassed(result.isSuccess(),
result.hasWarnings(), result.getUnknownComponent(),
+ validationComputedResult, result.getIncapable(),
deprecatedCount);
+ return validationPassed;
+ }
+
+ private boolean checkValidationPassed(
+ boolean success, boolean hasWarning, String unknownComponent,
ValidationComputedResult validationComputedResult,
+ String incapable, int deprecatedCount) {
+ boolean validationPassed = success && !hasWarning;
+ if (!validationPassed && ignoreUnknownComponent && unknownComponent !=
null) {
+ // if we failed due unknown component then be okay if we should
ignore that
+ validationComputedResult.incrementUnknownComponents();
+ validationPassed = true;
+ }
+ if (!validationPassed && ignoreIncapable && incapable != null) {
+ // if we failed due incapable then be okay if we should ignore that
+ validationComputedResult.incrementIncapableErrors();
+ validationPassed = true;
+ }
+ if (validationPassed && !ignoreDeprecated && deprecatedCount > 0) {
+ validationPassed = false;
+ }
+ return validationPassed;
+ }
+
private static String getSedaDirectSummary(int sedaDirectErrors, long
sedaDirectEndpoints) {
String sedaDirectSummary;
if (sedaDirectErrors == 0) {
@@ -1083,4 +1119,52 @@ public class ValidateMojo extends AbstractMojo {
return className;
}
}
+
+ private class ValidationComputedResult {
+ private int endpointErrors = 0;
+ private int configurationErrors = 0;
+ private int unknownComponents = 0;
+ private int incapableErrors = 0;
+ private int deprecatedOptions = 0;
+
+ public void incrementEndpointErrors() {
+ endpointErrors++;
+ }
+
+ public void incrementConfigurationErrors() {
+ configurationErrors++;
+ }
+
+ public void incrementUnknownComponents() {
+ unknownComponents++;
+ }
+
+ public void incrementIncapableErrors() {
+ incapableErrors++;
+ }
+
+ public void incrementDeprecatedOptionsBy(int extra) {
+ deprecatedOptions += extra;
+ }
+
+ public int getEndpointErrors() {
+ return endpointErrors;
+ }
+
+ public int getConfigurationErrors() {
+ return configurationErrors;
+ }
+
+ public int getUnknownComponents() {
+ return unknownComponents;
+ }
+
+ public int getIncapableErrors() {
+ return incapableErrors;
+ }
+
+ public int getDeprecatedOptions() {
+ return deprecatedOptions;
+ }
+ }
}