You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/12/18 14:11:53 UTC
[maven] 01/01: [MNG-7106] Accept same lower and upper bound in version spec string
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch MNG-7106_maven-3.8.x
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 8776fdb44a690511be9cf2db764d0a6951a3cad3
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Oct 13 15:31:56 2022 +0200
[MNG-7106] Accept same lower and upper bound in version spec string
This closes #922
---
.../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)" );