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

kwin pushed a commit to branch bugfix/MNG-7106-Maven3.9
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 90a16152368f9a8478806fefc19b1a3efd65d68f
Author: Konrad Windszus <[email protected]>
AuthorDate: Wed Oct 12 12:41:29 2022 +0200

    [MNG-7106] Accept same lower and upper bound in version spec string
---
 .../org/apache/maven/artifact/versioning/VersionRange.java   | 12 ++++++------
 .../apache/maven/artifact/versioning/VersionRangeTest.java   |  7 +++++++
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git 
a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
 
b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
index 3689b2e7a..27cca5604 100644
--- 
a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
+++ 
b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
@@ -212,10 +212,6 @@ public class VersionRange
         {
             String lowerBound = process.substring( 0, index ).trim();
             String upperBound = process.substring( index + 1 ).trim();
-            if ( lowerBound.equals( upperBound ) )
-            {
-                throw new InvalidVersionSpecificationException( "Range cannot 
have identical boundaries: " + spec );
-            }
 
             ArtifactVersion lowerVersion = null;
             if ( lowerBound.length() > 0 )
@@ -228,9 +224,13 @@ public class VersionRange
                 upperVersion = new DefaultArtifactVersion( upperBound );
             }
 
-            if ( upperVersion != null && lowerVersion != null && 
upperVersion.compareTo( lowerVersion ) < 0 )
+            if ( upperVersion != null && lowerVersion != null )
             {
-                throw new InvalidVersionSpecificationException( "Range defies 
version ordering: " + spec );
+                int result = upperVersion.compareTo( lowerVersion );
+                if ( result < 0 || ( result == 0 && ( !lowerBoundInclusive || 
!upperBoundInclusive ) ) )
+                {
+                    throw new InvalidVersionSpecificationException( "Range 
defies version ordering: " + spec );
+                }
             }
 
             restriction = new Restriction( lowerVersion, lowerBoundInclusive, 
upperVersion, upperBoundInclusive );
diff --git 
a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
 
b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
index 2cf0fec93..9c98f2976 100644
--- 
a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
+++ 
b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
@@ -154,6 +154,13 @@ public class VersionRangeTest
         assertTrue( range.containsVersion( new DefaultArtifactVersion( 
"5.0.9.0" ) ) );
     }
 
+    public void testSameUpperAndLowerBoundRoundtrip() throws 
InvalidVersionSpecificationException
+    {
+        VersionRange range = VersionRange.createFromVersionSpec( "[1.0]" );
+        VersionRange range2 = VersionRange.createFromVersionSpec( 
range.toString() );
+        assertEquals( range, range2 );
+    }
+
     public void testInvalidRanges()
     {
         checkInvalidRange( "(1.0)" );

Reply via email to