You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2023/01/06 14:15:06 UTC

[maven-enforcer] branch feature/improve-message-for-failed-version-rule created (now 4db0e55)

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a change to branch feature/improve-message-for-failed-version-rule
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git


      at 4db0e55  [MENFORCER-444] Improve error message for failed version rules

This branch includes the following new commits:

     new 4db0e55  [MENFORCER-444] Improve error message for failed version rules

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-enforcer] 01/01: [MENFORCER-444] Improve error message for failed version rules

Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/improve-message-for-failed-version-rule
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git

commit 4db0e5509a70a4d671be5e086baf4264b60396dd
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jan 6 15:14:57 2023 +0100

    [MENFORCER-444] Improve error message for failed version rules
    
    Convert lower bound only value to proper range string in message
---
 .../maven/plugins/enforcer/AbstractVersionEnforcer.java | 12 ++++++++++--
 .../maven/plugins/enforcer/RequireJavaVersion.java      | 17 ++++++++++++++---
 .../maven/plugins/enforcer/TestRequireJavaVersion.java  |  2 +-
 3 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
index 609de91..4e1bf62 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
@@ -77,12 +77,12 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
                     vr = VersionRange.createFromVersionSpec(requiredVersionRange);
 
                     if (containsVersion(vr, actualVersion)) {
-                        log.debug(msg + " is allowed in the range " + requiredVersionRange + ".");
+                        log.debug(msg + " is allowed in the range " + toString(vr) + ".");
                     } else {
                         String message = getMessage();
 
                         if (StringUtils.isEmpty(message)) {
-                            message = msg + " is not in the allowed range " + vr + ".";
+                            message = msg + " is not in the allowed range " + toString(vr) + ".";
                         }
 
                         throw new EnforcerRuleException(message);
@@ -95,6 +95,14 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
         }
     }
 
+    protected static String toString(VersionRange vr) {
+        // as recommended version is used as lower bound in this context modify the string representation
+        if (vr.getRecommendedVersion() != null) {
+            return "[" + vr.getRecommendedVersion().toString() + ",)";
+        } else {
+            return vr.toString();
+        }
+    }
     /**
      * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default
      * containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" ==
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
index 87ea432..39b1733 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
@@ -27,6 +27,8 @@ import java.util.regex.Pattern;
 import org.apache.commons.lang3.SystemUtils;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.logging.Log;
@@ -76,7 +78,7 @@ public class RequireJavaVersion extends AbstractVersionEnforcer {
                 + " Build: " + detectedJdkVersion.getBuildNumber() + " Qualifier: "
                 + detectedJdkVersion.getQualifier());
 
-        setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion());
+        setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion(), log);
 
         enforceVersion(helper.getLog(), "JDK", getVersion(), detectedJdkVersion);
     }
@@ -115,11 +117,20 @@ public class RequireJavaVersion extends AbstractVersionEnforcer {
         return StringUtils.stripEnd(version, ".");
     }
 
-    private void setCustomMessageIfNoneConfigured(ArtifactVersion detectedJdkVersion, String allowedVersionRange) {
+    private void setCustomMessageIfNoneConfigured(
+            ArtifactVersion detectedJdkVersion, String allowedVersionRange, Log log) {
         if (getMessage() == null) {
+            String version;
+            try {
+                VersionRange vr = VersionRange.createFromVersionSpec(allowedVersionRange);
+                version = AbstractVersionEnforcer.toString(vr);
+            } catch (InvalidVersionSpecificationException e) {
+                log.debug("Could not parse allowed version range " + allowedVersionRange, e);
+                version = allowedVersionRange;
+            }
             String message = String.format(
                     "Detected JDK version %s (JAVA_HOME=%s) is not in the allowed range %s.",
-                    detectedJdkVersion, SystemUtils.JAVA_HOME, allowedVersionRange);
+                    detectedJdkVersion, SystemUtils.JAVA_HOME, version);
             super.setMessage(message);
         }
     }
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
index 53cfbfe..4afecbb 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
@@ -111,7 +111,7 @@ class TestRequireJavaVersion {
                 .isInstanceOf(EnforcerRuleException.class)
                 .hasMessage(
                         "Detected JDK version %s (JAVA_HOME=%s) is not in the allowed range %s.",
-                        thisVersion, SystemUtils.JAVA_HOME, requiredVersion);
+                        thisVersion, SystemUtils.JAVA_HOME, "[" + requiredVersion + ",)");
     }
 
     @Test