You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/08/16 04:48:51 UTC
svn commit: r686439 - in /maven/sandbox/trunk/mercury:
mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/
mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/
mercury-artifact/src/test/java/org/apache/maven/mercury/a...
Author: ogusakov
Date: Fri Aug 15 19:48:50 2008
New Revision: 686439
URL: http://svn.apache.org/viewvc?rev=686439&view=rev
Log:
added flexible upper boundary to version ranges
Added:
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Quality.java
Modified:
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityEnum.java
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ArtifactVersion.java
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ComparableVersion.java
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java
maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/version/VersionRangeTest.java
maven/sandbox/trunk/mercury/mercury-pom/pom.xml
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
Added: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties?rev=686439&view=auto
==============================================================================
(empty)
Added: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Quality.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Quality.java?rev=686439&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Quality.java (added)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Quality.java Fri Aug 15 19:48:50 2008
@@ -0,0 +1,140 @@
+package org.apache.maven.mercury.artifact;
+
+import org.codehaus.plexus.i18n.DefaultLanguage;
+import org.codehaus.plexus.i18n.Language;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class Quality
+implements Comparable<Quality>
+{
+ public static final int DEFAULT_QUANTITY = 0;
+ public static final int SNAPSHOT_TS_QUANTITY = 1;
+
+ public static final Quality UNKNOWN_QUALITY = new Quality( QualityEnum.unknown, -1 );
+ public static final Quality SNAPSHOT_QUALITY = new Quality( QualityEnum.snapshot, DEFAULT_QUANTITY );
+ public static final Quality SNAPSHOT_TS_QUALITY = new Quality( QualityEnum.snapshot, SNAPSHOT_TS_QUANTITY );
+ public static final Quality ALPHA_QUALITY = new Quality( QualityEnum.alpha, DEFAULT_QUANTITY );
+ public static final Quality BETA_QUALITY = new Quality( QualityEnum.beta, DEFAULT_QUANTITY );
+ public static final Quality RELEASE_QUALITY = new Quality( QualityEnum.release, DEFAULT_QUANTITY );
+
+ private static final String snExp = ".+-(SNAPSHOT|\\d{8}\\.\\d{6}-\\d+)";
+ private static final String alphaExp = ".+-alpha-\\d+";
+ private static final String betaExp = ".+-beta-\\d+";
+
+ protected QualityEnum quality;
+ protected int quantity;
+
+ public Quality( QualityEnum quality, int quantity )
+ {
+ this.quality = quality;;
+ this.quantity = quantity;
+ }
+
+ public Quality( String version )
+ {
+ if( version == null || version.length() < 1 )
+ {
+ quality = QualityEnum.unknown;
+ quantity = -1;
+ }
+
+ if( version.matches( snExp ) )
+ {
+ quality = QualityEnum.snapshot;
+ if( version.endsWith( Artifact.SNAPSHOT_VERSION ) )
+ quantity = DEFAULT_QUANTITY;
+ else
+ quantity = SNAPSHOT_TS_QUANTITY;
+ return;
+ }
+
+ if( version.matches( alphaExp ) )
+ {
+ quality = QualityEnum.alpha;
+ quantity = Integer.parseInt( version.substring( version.lastIndexOf( '-' )+1 ) );
+ return;
+ }
+
+ if( version.matches( betaExp ) )
+ {
+ quality = QualityEnum.beta;
+ quantity = Integer.parseInt( version.substring( version.lastIndexOf( '-' )+1 ) );
+ return;
+ }
+
+ quality = QualityEnum.release;
+ quantity = DEFAULT_QUANTITY;
+
+ }
+
+ public int compareTo( Quality q )
+ {
+ if( q == null )
+ return quality == null ? 0 : 1;
+
+ int ql1 = (quality == null ? QualityEnum.unknown : quality).getId();
+ int ql2 = (q.quality == null ? QualityEnum.unknown : q.quality).getId();
+
+ if( ql1 == ql2 )
+ {
+ // snapshots are always equal
+ if( ql1 == QualityEnum.snapshot.getId() )
+ return 0;
+ else
+ return quantity - q.quantity;
+ }
+
+ // unknown is less'n anyone
+// if( ql1 == QualityEnum.unknown.getId() )
+// return -1;
+
+ return sign(ql1 - ql2);
+ }
+
+ private int sign( int i )
+ {
+ return i<0 ? -1: i == 0 ? 0 : 1;
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if( obj == null )
+ {
+ return false;
+ }
+ if( obj.getClass().isAssignableFrom( Quality.class ))
+ return this.compareTo( (Quality)obj ) == 0;
+ else if( obj.getClass().isAssignableFrom( QualityEnum.class ))
+ return this.compareTo( (QualityEnum)obj ) == 0;
+
+ return super.equals( obj );
+ }
+
+ public int compareTo( QualityEnum qe )
+ {
+ if( qe == null )
+ return quality == null ? 0 : 1;
+
+ int ql1 = (quality == null ? QualityEnum.unknown : quality).getId();
+
+ return sign(ql1 - qe.getId());
+ }
+
+ public QualityEnum getQuality()
+ {
+ return quality;
+ }
+
+ public int getQuantity()
+ {
+ return quantity;
+ }
+
+}
Modified: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityEnum.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityEnum.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityEnum.java (original)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityEnum.java Fri Aug 15 19:48:50 2008
@@ -9,13 +9,14 @@
*/
public enum QualityEnum
{
- snapshot(1)
+ unknown(-1)
+ , snapshot(1)
, alpha(2)
, beta(3)
, release(10)
;
- public static final QualityEnum DEFAULT_QUALITY = snapshot;
+ public static final QualityEnum DEFAULT_QUALITY = unknown;
private int id;
@@ -29,5 +30,5 @@
{
return id;
}
-
+
}
Modified: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ArtifactVersion.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ArtifactVersion.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ArtifactVersion.java (original)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ArtifactVersion.java Fri Aug 15 19:48:50 2008
@@ -1,5 +1,7 @@
package org.apache.maven.mercury.artifact.version;
+import org.apache.maven.mercury.artifact.Quality;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -31,4 +33,6 @@
int getBuildNumber();
String getQualifier();
+
+ Quality getQuality();
}
Modified: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ComparableVersion.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ComparableVersion.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ComparableVersion.java (original)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ComparableVersion.java Fri Aug 15 19:48:50 2008
@@ -260,6 +260,7 @@
Item first = (Item) get( 0 );
return first.compareTo( null );
}
+
switch ( item.getType() )
{
case INTEGER_ITEM:
Modified: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java (original)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java Fri Aug 15 19:48:50 2008
@@ -17,6 +17,9 @@
import java.util.StringTokenizer;
+import org.apache.maven.mercury.artifact.Quality;
+
+
/*
* Default implementation of artifact versioning.
*
@@ -27,195 +30,238 @@
public class DefaultArtifactVersion
implements ArtifactVersion
{
- private Integer majorVersion;
-
- private Integer minorVersion;
-
- private Integer incrementalVersion;
-
- private Integer buildNumber;
-
- private String qualifier;
-
- private ComparableVersion comparable;
-
- public DefaultArtifactVersion( String version )
- {
- parseVersion( version );
- }
-
- @Override
- public int hashCode()
- {
- return 11 + comparable.hashCode();
- }
-
- @Override
- public boolean equals( Object other )
- {
- return compareTo( other ) == 0;
- }
-
- public int compareTo( Object o )
- {
- DefaultArtifactVersion otherVersion = (DefaultArtifactVersion) o;
- return this.comparable.compareTo( otherVersion.comparable );
- }
-
- public int getMajorVersion()
- {
- return majorVersion != null ? majorVersion : 0;
- }
-
- public int getMinorVersion()
- {
- return minorVersion != null ? minorVersion : 0;
- }
-
- public int getIncrementalVersion()
- {
- return incrementalVersion != null ? incrementalVersion : 0;
- }
-
- public int getBuildNumber()
- {
- return buildNumber != null ? buildNumber : 0;
- }
-
- public String getQualifier()
- {
- return qualifier;
- }
-
- public final void parseVersion( String version )
- {
- comparable = new ComparableVersion( version );
-
- int index = version.indexOf( "-" );
-
- String part1;
- String part2 = null;
-
- if ( index < 0 )
- {
- part1 = version;
- }
- else
- {
- part1 = version.substring( 0, index );
- part2 = version.substring( index + 1 );
- }
-
- if ( part2 != null )
- {
- try
- {
- if ( ( part2.length() == 1 ) || !part2.startsWith( "0" ) )
- {
- buildNumber = Integer.valueOf( part2 );
- }
- else
- {
- qualifier = part2;
- }
- }
- catch ( NumberFormatException e )
- {
- qualifier = part2;
- }
- }
-
- if ( ( part1.indexOf( "." ) < 0 ) && !part1.startsWith( "0" ) )
- {
- try
- {
- majorVersion = Integer.valueOf( part1 );
- }
- catch ( NumberFormatException e )
- {
- // qualifier is the whole version, including "-"
- qualifier = version;
- buildNumber = null;
- }
- }
+ private String version;
+
+ private Integer majorVersion;
+
+ private Integer minorVersion;
+
+ private Integer incrementalVersion;
+
+ private Integer buildNumber;
+
+ private String base;
+
+ private String qualifier;
+
+ private ComparableVersion comparable;
+
+ private Quality quality = Quality.UNKNOWN_QUALITY;
+
+ public DefaultArtifactVersion( String version )
+ {
+ this.version = version;
+ parseVersion( version );
+ parseQuality( version );
+ }
+
+ public String getBase()
+ {
+ return base;
+ }
+
+ public boolean sameBase( DefaultArtifactVersion v )
+ {
+ return base.equals( v.base );
+ }
+
+ public boolean sameBase( String vs )
+ {
+ DefaultArtifactVersion v = new DefaultArtifactVersion(vs);
+ return base.equals( v.base );
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return 11 + comparable.hashCode();
+ }
+
+ @Override
+ public boolean equals( Object other )
+ {
+ return compareTo( other ) == 0;
+ }
+
+ public int compareTo( Object o )
+ {
+ DefaultArtifactVersion otherVersion = (DefaultArtifactVersion) o;
+ return this.comparable.compareTo( otherVersion.comparable );
+ }
+
+ public int getMajorVersion()
+ {
+ return majorVersion != null ? majorVersion : 0;
+ }
+
+ public int getMinorVersion()
+ {
+ return minorVersion != null ? minorVersion : 0;
+ }
+
+ public int getIncrementalVersion()
+ {
+ return incrementalVersion != null ? incrementalVersion : 0;
+ }
+
+ public int getBuildNumber()
+ {
+ return buildNumber != null ? buildNumber : 0;
+ }
+
+ public String getQualifier()
+ {
+ return qualifier;
+ }
+
+ public final void parseVersion( String version )
+ {
+ comparable = new ComparableVersion( version );
+
+ int index = version.indexOf( "-" );
+
+ String part1;
+ String part2 = null;
+
+ if ( index < 0 )
+ {
+ part1 = version;
+ }
+ else
+ {
+ part1 = version.substring( 0, index );
+ part2 = version.substring( index + 1 );
+ }
+
+ if ( part2 != null )
+ {
+ try
+ {
+ if ( ( part2.length() == 1 ) || !part2.startsWith( "0" ) )
+ {
+ buildNumber = Integer.valueOf( part2 );
+ }
+ else
+ {
+ qualifier = part2;
+ }
+ }
+ catch ( NumberFormatException e )
+ {
+ qualifier = part2;
+ }
+ }
+
+ if ( ( part1.indexOf( "." ) < 0 ) && !part1.startsWith( "0" ) )
+ {
+ try
+ {
+ majorVersion = Integer.valueOf( part1 );
+ }
+ catch ( NumberFormatException e )
+ {
+ // qualifier is the whole version, including "-"
+ qualifier = version;
+ buildNumber = null;
+ }
+ }
+ else
+ {
+ boolean fallback = false;
+ StringTokenizer tok = new StringTokenizer( part1, "." );
+ try
+ {
+ majorVersion = getNextIntegerToken( tok );
+ if ( tok.hasMoreTokens() )
+ {
+ minorVersion = getNextIntegerToken( tok );
+ }
+ if ( tok.hasMoreTokens() )
+ {
+ incrementalVersion = getNextIntegerToken( tok );
+ }
+ if ( tok.hasMoreTokens() )
+ {
+ fallback = true;
+ }
+ }
+ catch ( NumberFormatException e )
+ {
+ fallback = true;
+ }
+
+ if ( fallback )
+ {
+ // qualifier is the whole version, including "-"
+ qualifier = version;
+ base = "";
+ majorVersion = null;
+ minorVersion = null;
+ incrementalVersion = null;
+ buildNumber = null;
+ }
+ }
+
+ if( base == null )
+ {
+ if( qualifier == null )
+ base = version;
else
- {
- boolean fallback = false;
- StringTokenizer tok = new StringTokenizer( part1, "." );
- try
- {
- majorVersion = getNextIntegerToken( tok );
- if ( tok.hasMoreTokens() )
- {
- minorVersion = getNextIntegerToken( tok );
- }
- if ( tok.hasMoreTokens() )
- {
- incrementalVersion = getNextIntegerToken( tok );
- }
- if ( tok.hasMoreTokens() )
- {
- fallback = true;
- }
- }
- catch ( NumberFormatException e )
- {
- fallback = true;
- }
-
- if ( fallback )
- {
- // qualifier is the whole version, including "-"
- qualifier = version;
- majorVersion = null;
- minorVersion = null;
- incrementalVersion = null;
- buildNumber = null;
- }
- }
- }
-
- private static Integer getNextIntegerToken( StringTokenizer tok )
- {
- String s = tok.nextToken();
- if ( ( s.length() > 1 ) && s.startsWith( "0" ) )
- {
- throw new NumberFormatException( "Number part has a leading 0: '" + s + "'" );
- }
- return Integer.valueOf( s );
- }
-
- @Override
- public String toString()
- {
- StringBuffer buf = new StringBuffer();
- if ( majorVersion != null )
- {
- buf.append( majorVersion );
- }
- if ( minorVersion != null )
- {
- buf.append( "." );
- buf.append( minorVersion );
- }
- if ( incrementalVersion != null )
- {
- buf.append( "." );
- buf.append( incrementalVersion );
- }
- if ( buildNumber != null )
- {
- buf.append( "-" );
- buf.append( buildNumber );
- }
- else if ( qualifier != null )
- {
- if ( buf.length() > 0 )
- {
- buf.append( "-" );
- }
- buf.append( qualifier );
- }
- return buf.toString();
- }
+ base = version.substring( 0, version.indexOf( qualifier )-1 );
+ }
+ }
+
+ private static Integer getNextIntegerToken( StringTokenizer tok )
+ {
+ String s = tok.nextToken();
+ if ( ( s.length() > 1 ) && s.startsWith( "0" ) )
+ {
+ throw new NumberFormatException( "Number part has a leading 0: '" + s + "'" );
+ }
+ return Integer.valueOf( s );
+ }
+
+ private void parseQuality( String version )
+ {
+ quality = new Quality( version );
+ }
+
+ @Override
+ public String toString()
+ {
+ StringBuffer buf = new StringBuffer();
+ if ( majorVersion != null )
+ {
+ buf.append( majorVersion );
+ }
+ if ( minorVersion != null )
+ {
+ buf.append( "." );
+ buf.append( minorVersion );
+ }
+ if ( incrementalVersion != null )
+ {
+ buf.append( "." );
+ buf.append( incrementalVersion );
+ }
+ if ( buildNumber != null )
+ {
+ buf.append( "-" );
+ buf.append( buildNumber );
+ }
+ else if ( qualifier != null )
+ {
+ if ( buf.length() > 0 )
+ {
+ buf.append( "-" );
+ }
+ buf.append( qualifier );
+ }
+ return buf.toString();
+ }
+
+ public Quality getQuality()
+ {
+ return quality;
+ }
}
Modified: maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java (original)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java Fri Aug 15 19:48:50 2008
@@ -1,6 +1,7 @@
package org.apache.maven.mercury.artifact.version;
import org.apache.maven.mercury.artifact.Artifact;
+import org.apache.maven.mercury.artifact.QualityRange;
/**
* Single range implementation, similar to OSGi specification:
@@ -18,6 +19,8 @@
{
private static final DefaultArtifactVersion ZERO_VERSION = new DefaultArtifactVersion("0.0.0");
+ QualityRange _toQualityRange = QualityRange.ALL;
+
DefaultArtifactVersion _fromVersion = ZERO_VERSION;
boolean _fromInclusive = true;
@@ -87,6 +90,11 @@
}
}
//--------------------------------------------------------------------------------------------
+ public void setToQualityRange( QualityRange qRange )
+ {
+ this._toQualityRange = qRange;
+ }
+ //--------------------------------------------------------------------------------------------
private void checkForValidCharacters( String v )
throws VersionException
{
@@ -133,7 +141,15 @@
int cmp2 = ver.compareTo( _toVersion );
if( cmp2 < 0 )
+ {
+ if( ver.sameBase( _toVersion ) )
+ {
+ if( _toQualityRange.isAcceptedQuality( ver.getQuality() ) )
+ return true;
+ return false;
+ }
return true;
+ }
if( cmp2 == 0 )
return _toInclusive;
Modified: maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/version/VersionRangeTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/version/VersionRangeTest.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/version/VersionRangeTest.java (original)
+++ maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/version/VersionRangeTest.java Fri Aug 15 19:48:50 2008
@@ -1,5 +1,8 @@
package org.apache.maven.mercury.artifact.version;
+import org.apache.maven.mercury.artifact.Quality;
+import org.apache.maven.mercury.artifact.QualityRange;
+
import junit.framework.TestCase;
/**
@@ -53,7 +56,7 @@
assertFalse( "1.0.0.1.2.1-alpha-1 does match the range "+rangeS, range.includes( "1.0.0.1.2.1-alpha-1" ) );
assertTrue( "1.0.0.1.2.2-alpha-1 does not match the range "+rangeS, range.includes( "1.0.0.1.2.2-alpha-1" ) );
}
-
+
public void testAlphaNumeric()
throws VersionException
{
@@ -62,5 +65,47 @@
assertFalse( "1.0.0.0.9 does match the range "+rangeS, range.includes( "1.0.0.0.9" ) );
}
+
+ public void testEdge()
+ throws VersionException
+ {
+ String rangeS = "[1.0,2.0)";
+ range = new VersionRange( rangeS );
+
+ assertFalse( range.includes( "1.0-SNAPSHOT" ) );
+ assertTrue( range.includes( "1.1-SNAPSHOT" ) );
+ assertTrue( range.includes( "2.0-SNAPSHOT" ) );
+ assertTrue( range.includes( "2.0-alpha-1" ) );
+ assertFalse( range.includes( "2.0" ) );
+ }
+
+ public void testBetaEdge()
+ throws VersionException
+ {
+ String rangeS = "[1.0,2.0)";
+ range = new VersionRange( rangeS );
+ range.setToQualityRange( new QualityRange( Quality.BETA_QUALITY, true, Quality.RELEASE_QUALITY, true ) );
+
+ assertFalse( range.includes( "1.0-SNAPSHOT" ) );
+ assertTrue( range.includes( "1.1-SNAPSHOT" ) );
+ assertFalse( range.includes( "2.0-SNAPSHOT" ) );
+ assertTrue( range.includes( "2.0-beta-1" ) );
+ assertFalse( range.includes( "2.0" ) );
+ }
+
+ public void testAlphaEdge()
+ throws VersionException
+ {
+ String rangeS = "[1.0,2.0)";
+ range = new VersionRange( rangeS );
+ range.setToQualityRange( new QualityRange( Quality.ALPHA_QUALITY, true, Quality.RELEASE_QUALITY, true ) );
+
+ assertFalse( range.includes( "1.0-SNAPSHOT" ) );
+ assertTrue( range.includes( "1.1-SNAPSHOT" ) );
+ assertFalse( range.includes( "2.0-SNAPSHOT" ) );
+ assertTrue( range.includes( "2.0-alpha-35" ) );
+ assertTrue( range.includes( "2.0-beta-1" ) );
+ assertFalse( range.includes( "2.0" ) );
+ }
}
Modified: maven/sandbox/trunk/mercury/mercury-pom/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-pom/pom.xml?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-pom/pom.xml (original)
+++ maven/sandbox/trunk/mercury/mercury-pom/pom.xml Fri Aug 15 19:48:50 2008
@@ -269,10 +269,11 @@
<artifactId>slf4j-simple</artifactId>
<version>1.5.2</version>
</dependency>
+
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-i18n</artifactId>
- <version>1.0-beta-10-SNAPSHOT</version>
+ <version>1.0-beta-10</version>
</dependency>
</dependencies>
Modified: maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java (original)
+++ maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java Fri Aug 15 19:48:50 2008
@@ -5,7 +5,9 @@
import java.util.Map;
import java.util.Set;
+import org.apache.maven.mercury.artifact.Quality;
import org.apache.maven.mercury.artifact.QualityEnum;
+import org.apache.maven.mercury.artifact.QualityRange;
import org.apache.maven.mercury.builder.api.MetadataProcessor;
import org.codehaus.plexus.i18n.DefaultLanguage;
import org.codehaus.plexus.i18n.Language;
@@ -55,11 +57,8 @@
//---------------------------------------------------------------------------
protected String type = DEFAULT_REPOSITORY_TYPE;
- protected boolean snapshots;
- protected Set<Integer> alpha;
- protected Set<Integer> beta;
- protected boolean releases;
-
+ protected QualityRange qualityRange = QualityRange.ALL;
+
protected RepositoryReader reader;
protected RepositoryWriter writer;
//---------------------------------------------------------------------------
@@ -173,17 +172,17 @@
//---------------------------------------------------------------------------
public boolean isSnapshots()
{
- return snapshots;
+ return qualityRange.isAcceptedQuality( Quality.SNAPSHOT_QUALITY );
}
//---------------------------------------------------------------------------
public boolean isReleases()
{
- return releases;
+ return qualityRange.isAcceptedQuality( Quality.RELEASE_QUALITY );
}
//---------------------------------------------------------------------------
- public boolean isAccepted(QualityEnum quality, int quantity )
+ public boolean isAcceptedQuality( Quality quality )
{
- return releases;
+ return qualityRange.isAcceptedQuality( quality );
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
Modified: maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java (original)
+++ maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java Fri Aug 15 19:48:50 2008
@@ -1,5 +1,6 @@
package org.apache.maven.mercury.repository.api;
+import org.apache.maven.mercury.artifact.Quality;
import org.apache.maven.mercury.artifact.QualityEnum;
import org.apache.maven.mercury.builder.api.MetadataProcessor;
@@ -61,7 +62,7 @@
/**
* reserved
*/
- public boolean isAccepted( QualityEnum quality, int quantity );
+ public boolean isAcceptedQuality( Quality quality );
/**
* get default reader, if any
Modified: maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java?rev=686439&r1=686438&r2=686439&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java (original)
+++ maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java Fri Aug 15 19:48:50 2008
@@ -10,6 +10,7 @@
import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
import org.apache.maven.mercury.artifact.ArtifactMetadata;
import org.apache.maven.mercury.artifact.DefaultArtifact;
+import org.apache.maven.mercury.artifact.Quality;
import org.apache.maven.mercury.artifact.version.VersionException;
import org.apache.maven.mercury.artifact.version.VersionRange;
import org.apache.maven.mercury.builder.api.MetadataProcessingException;
@@ -143,9 +144,8 @@
* direct disk search, no redirects, first attempt
*/
public Map<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>>
- readVersions( List<? extends ArtifactBasicMetadata> query )
- throws RepositoryException,
- IllegalArgumentException
+ readVersions( List<? extends ArtifactBasicMetadata> query )
+ throws RepositoryException, IllegalArgumentException
{
if( query == null || query.size() < 1 )
return null;
@@ -178,6 +178,12 @@
if( !vf.isDirectory() )
continue;
+ String version = vf.getName();
+
+ Quality q = new Quality( version );
+ if( ! _repo.isAcceptedQuality( q ) )
+ continue;
+
if( !versionQuery.includes( vf.getName() ) )
continue;