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;