Author: ogusakov Date: Tue Mar 10 04:16:06 2009 New Revision: 751975 URL: http://svn.apache.org/viewvc?rev=751975&view=rev Log: [MNG-3849] added repository quality filtering
Modified: maven/mercury/trunk/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Repo.java maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityRange.java maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java Modified: maven/mercury/trunk/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Repo.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Repo.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Repo.java (original) +++ maven/mercury/trunk/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Repo.java Tue Mar 10 04:16:06 2009 @@ -30,13 +30,13 @@ import java.util.Set; import org.apache.maven.mercury.MavenDependencyProcessor; +import org.apache.maven.mercury.artifact.QualityRange; import org.apache.maven.mercury.builder.api.DependencyProcessor; import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes; import org.apache.maven.mercury.crypto.api.StreamVerifierFactory; import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory; import org.apache.maven.mercury.crypto.sha.SHA1VerifierFactory; import org.apache.maven.mercury.repository.api.Repository; -import org.apache.maven.mercury.repository.api.RepositoryUpdateIntervalPolicy; import org.apache.maven.mercury.repository.api.RepositoryUpdatePolicy; import org.apache.maven.mercury.repository.api.RepositoryUpdatePolicyFactory; import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2; @@ -79,6 +79,10 @@ private boolean _writeable = false; + private boolean _releases = true; + + private boolean _snapshots = true; + private Auth _auth; private Auth _proxyAuth; @@ -139,6 +143,20 @@ processDefaults(); } + public void setReleases( boolean releases ) + { + this._releases = releases; + + processDefaults(); + } + + public void setSnapshots( boolean snapshots ) + { + this._snapshots = snapshots; + + processDefaults(); + } + public void setReadable( boolean readable ) { this._readable = readable; @@ -242,6 +260,8 @@ public void setUpdatePolicy( String updatePolicy ) { this._updatePolicy = updatePolicy; + + processDefaults(); } boolean isLocal() @@ -327,6 +347,10 @@ } r = new LocalRepositoryM2( server, dp ); + + QualityRange qr = QualityRange.create( _releases, _snapshots ); + + r.setRepositoryQualityRange( qr ); } else { @@ -397,6 +421,10 @@ if( !Util.isEmpty( _updatePolicy) ) ((RemoteRepositoryM2)r).setUpdatePolicy( RepositoryUpdatePolicyFactory.create( _updatePolicy ) ); + + QualityRange qr = QualityRange.create( _releases, _snapshots ); + + r.setRepositoryQualityRange( qr ); } return r; Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java (original) +++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java Tue Mar 10 04:16:06 2009 @@ -54,9 +54,11 @@ protected String artifactId; private String version; - + private transient VersionRange versionRange; + private Quality quality; + /** * relocation chain after processing by ProjectBuilder */ @@ -434,6 +436,31 @@ return !isSingleton(); } + /** code quality used to decide whether try or skip a repository - see repository code quality */ + public Quality getRequestedQuality() + { + if( isRange() ) + return null; + + if( isVirtual() ) + { + if( isVirtualSnapshot() ) + return Quality.SNAPSHOT_QUALITY; + else + if( isVirtualRelease() ) + return Quality.RELEASE_QUALITY; + + return null; + } + + if( quality != null ) + return quality; + + quality = new Quality( getVersion() ); + + return quality; + } + public String getClassifier() { return classifier; @@ -529,6 +556,21 @@ return DefaultArtifactVersion.isVirtual( version ); } + public boolean isVirtualSnapshot() + { + return DefaultArtifactVersion.isVirtualSnapshot( version ); + } + + public boolean isVirtualRelease() + { + return DefaultArtifactVersion.isVirtualRelease( version ); + } + + public boolean isVirtualLatest() + { + return DefaultArtifactVersion.isVirtualLatest( version ); + } + public ArtifactCoordinates getEffectiveCoordinates() { if ( relocations == null || relocations.isEmpty() ) Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties (original) +++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Messages.properties Tue Mar 10 04:16:06 2009 @@ -18,4 +18,6 @@ # artifact.metadata.no.version=no version in this metadata: {0} -null.copy.from.md=cannot create a copy of a null metadata \ No newline at end of file +null.copy.from.md=cannot create a copy of a null metadata + +quality.no.sn.no.rel=cannot decide how to create a quality range when releases=false and snapshots=false Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityRange.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityRange.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityRange.java (original) +++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/QualityRange.java Tue Mar 10 04:16:06 2009 @@ -18,12 +18,17 @@ */ package org.apache.maven.mercury.artifact; +import org.codehaus.plexus.lang.DefaultLanguage; +import org.codehaus.plexus.lang.Language; + /** * @author Oleg Gusakov * @version $Id$ */ public class QualityRange { + private static final Language LANG = new DefaultLanguage( QualityRange.class ); + public static final QualityRange SNAPSHOTS_ONLY = new QualityRange( Quality.SNAPSHOT_QUALITY, true, Quality.SNAPSHOT_TS_QUALITY, true ); @@ -61,13 +66,28 @@ this.qualityTo = qualityTo; this.toInclusive = toInclusive; } + + public static QualityRange create( boolean releases, boolean snapshots ) + { + if( releases && snapshots ) + return ALL; + else + if( releases ) + return new QualityRange( Quality.ALPHA_QUALITY, true, Quality.RELEASE_QUALITY, true ); + else + if( snapshots ) + return new QualityRange( Quality.SNAPSHOT_QUALITY, true, Quality.SNAPSHOT_TS_QUALITY, true ); + + throw new IllegalArgumentException( LANG.getMessage( "quality.no.sn.no.rel" ) ); + } // --------------------------------------------------------------------------- public boolean isAcceptedQuality( Quality quality ) { + // null quality means anything goes if ( quality == null ) { - return false; + return true; } int from = quality.compareTo( qualityFrom ); Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java (original) +++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/DefaultArtifactVersion.java Tue Mar 10 04:16:06 2009 @@ -128,6 +128,39 @@ return false; } + public static boolean isVirtualRelease( String version ) + { + if ( version == null ) + return false; + + if ( version.endsWith( Artifact.RELEASE_VERSION ) ) + return true; + + return false; + } + + public static boolean isVirtualLatest( String version ) + { + if ( version == null ) + return false; + + if ( version.endsWith( Artifact.LATEST_VERSION ) ) + return true; + + return false; + } + + public static boolean isVirtualSnapshot( String version ) + { + if ( version == null ) + return false; + + if ( version.endsWith( Artifact.SNAPSHOT_VERSION ) ) + return true; + + return false; + } + public final void parseVersion( String version ) { comparable = new ComparableVersion( version ); Modified: maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java Tue Mar 10 04:16:06 2009 @@ -125,7 +125,7 @@ // --------------------------------------------------------------------------- public QualityRange getRepositoryQualityRange() { - return repositoryQualityRange; + return repositoryQualityRange == null ? QualityRange.ALL : repositoryQualityRange; } // --------------------------------------------------------------------------- Modified: maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/Repository.java Tue Mar 10 04:16:06 2009 @@ -70,21 +70,21 @@ public boolean isAcceptedQuality( Quality quality ); /** - * defines how VersionRnage treats upper boundary - which Artifacts should be treated as belonging to the vicinity - - * http://docs.codehaus.org/x/twDPBQ - * - * @return - * @throws NonExistentProtocolException if protocol not supported + * defines the code quality range for this repository */ - public QualityRange getVersionRangeQualityRange(); + public QualityRange getRepositoryQualityRange(); + void setRepositoryQualityRange( QualityRange qualityRange ); /** - * what quality code this repository serves + * defines how VersionRnage treats upper boundary - which Artifacts should be treated as belonging to the vicinity - + * http://docs.codehaus.org/x/twDPBQ + * + * note: don't mix this with repository quality range - this one is for version range calculations only! * - * @param qualityRange */ - void setRepositoryQualityRange( QualityRange qualityRange ); - + public QualityRange getVersionRangeQualityRange(); + public void setVersionRangeQualityRange( QualityRange qualityRange ); + /** * get default reader, if any * Modified: maven/mercury/trunk/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/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java Tue Mar 10 04:16:06 2009 @@ -206,11 +206,14 @@ if ( _repo.hasServer() && _repo.getServer().hasReaderStreamVerifierFactories() ) vFacs = _repo.getServer().getReaderStreamVerifierFactories(); - for ( ArtifactMetadata bmd : query ) + for ( ArtifactMetadata md : query ) { - DefaultArtifact da = bmd instanceof DefaultArtifact ? (DefaultArtifact) bmd : new DefaultArtifact( bmd ); + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + continue; + + DefaultArtifact da = md instanceof DefaultArtifact ? (DefaultArtifact) md : new DefaultArtifact( md ); - ArtifactLocation loc = calculateLocation( _repoDir.getAbsolutePath(), bmd, res ); + ArtifactLocation loc = calculateLocation( _repoDir.getAbsolutePath(), md, res ); if ( loc == null ) continue; @@ -223,7 +226,7 @@ // res.addError( bmd, new RepositoryException( LANG.getMessage( "binary.not.found", bmd.toString(), // binary.getAbsolutePath() ) ) ); if( LOG.isDebugEnabled() ) - LOG.debug( LANG.getMessage( "binary.not.found", bmd.toString(), binary.getAbsolutePath() ) ); + LOG.debug( LANG.getMessage( "binary.not.found", md.toString(), binary.getAbsolutePath() ) ); continue; } @@ -236,7 +239,7 @@ da.setTracker( this._repo ); } - if ( "pom".equals( bmd.getType() ) ) + if ( "pom".equals( md.getType() ) ) { da.setPomBlob( FileUtil.readRawData( binary ) ); } @@ -249,11 +252,11 @@ da.setPomBlob( FileUtil.readRawData( pomFile ) ); } else - LOG.warn( LANG.getMessage( "pom.not.found", bmd.toString() ) ); + LOG.warn( LANG.getMessage( "pom.not.found", md.toString() ) ); } da.setVersion( loc.getVersion() ); - res.add( bmd, da ); + res.add( md, da ); } catch ( Exception e ) { @@ -367,11 +370,14 @@ MetadataResults ror = null; File pomFile = null; - for ( ArtifactMetadata bmd : query ) + for ( ArtifactMetadata md : query ) { + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + continue; + String pomPath = - bmd.getGroupId().replace( '.', '/' ) + "/" + bmd.getArtifactId() + "/" + ArtifactLocation.calculateVersionDir( bmd.getVersion() ) + "/" - + bmd.getArtifactId() + '-' + bmd.getVersion() + ".pom"; + md.getGroupId().replace( '.', '/' ) + "/" + md.getArtifactId() + "/" + ArtifactLocation.calculateVersionDir( md.getVersion() ) + "/" + + md.getArtifactId() + '-' + md.getVersion() + ".pom"; pomFile = new File( _repoDir, pomPath ); if ( !pomFile.exists() ) @@ -384,18 +390,18 @@ try { List<ArtifactMetadata> deps = - _mdProcessor.getDependencies( bmd, _mdReader == null ? this : _mdReader, System.getenv(), + _mdProcessor.getDependencies( md, _mdReader == null ? this : _mdReader, System.getenv(), System.getProperties() ); // for(ArtifactBasicMetadata d : deps ) // { // System.out.println("======> "+d.getScope() ); // } - ror = MetadataResults.add( ror, bmd, deps ); + ror = MetadataResults.add( ror, md, deps ); } catch ( Exception e ) { if( LOG.isDebugEnabled() ) - LOG.debug( "error reading " + bmd.toString() + " dependencies", e ); + LOG.debug( "error reading " + md.toString() + " dependencies", e ); continue; } @@ -468,9 +474,12 @@ MetadataResults res = new MetadataResults( query.size() ); File gaDir = null; - for ( ArtifactMetadata bmd : query ) + for ( ArtifactMetadata md : query ) { - gaDir = new File( _repoDir, bmd.getGroupId().replace( '.', '/' ) + "/" + bmd.getArtifactId() ); + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + continue; + + gaDir = new File( _repoDir, md.getGroupId().replace( '.', '/' ) + "/" + md.getArtifactId() ); if ( !gaDir.exists() ) continue; @@ -479,32 +488,32 @@ VersionRange versionQuery; try { - versionQuery = VersionRangeFactory.create( bmd.getVersion(), _repo.getVersionRangeQualityRange() ); + versionQuery = VersionRangeFactory.create( md.getVersion(), _repo.getVersionRangeQualityRange() ); } catch ( VersionException e ) { - res = MetadataResults.add( res, bmd, new RepositoryException( e ) ); + res = MetadataResults.add( res, md, new RepositoryException( e ) ); continue; } - Quality vq = new Quality( bmd.getVersion() ); + Quality vq = new Quality( md.getVersion() ); if ( vq.equals( Quality.FIXED_RELEASE_QUALITY ) || vq.equals( Quality.FIXED_LATEST_QUALITY ) || vq.equals( Quality.SNAPSHOT_QUALITY ) ) { - ArtifactLocation loc = calculateLocation( _repoDir.getAbsolutePath(), bmd, res ); + ArtifactLocation loc = calculateLocation( _repoDir.getAbsolutePath(), md, res ); if ( loc == null ) continue; ArtifactMetadata vmd = new ArtifactMetadata(); - vmd.setGroupId( bmd.getGroupId() ); - vmd.setArtifactId( bmd.getArtifactId() ); - vmd.setClassifier( bmd.getClassifier() ); - vmd.setType( bmd.getType() ); + vmd.setGroupId( md.getGroupId() ); + vmd.setArtifactId( md.getArtifactId() ); + vmd.setClassifier( md.getClassifier() ); + vmd.setType( md.getType() ); vmd.setVersion( loc.getVersion() ); - res = MetadataResults.add( res, bmd, vmd ); + res = MetadataResults.add( res, md, vmd ); continue; @@ -525,29 +534,32 @@ continue; ArtifactMetadata vmd = new ArtifactMetadata(); - vmd.setGroupId( bmd.getGroupId() ); - vmd.setArtifactId( bmd.getArtifactId() ); - vmd.setClassifier( bmd.getClassifier() ); - vmd.setType( bmd.getType() ); + vmd.setGroupId( md.getGroupId() ); + vmd.setArtifactId( md.getArtifactId() ); + vmd.setClassifier( md.getClassifier() ); + vmd.setType( md.getType() ); vmd.setVersion( vf.getName() ); - res = MetadataResults.add( res, bmd, vmd ); + res = MetadataResults.add( res, md, vmd ); } } return res; } // --------------------------------------------------------------------------------------------------------------- - public byte[] readRawData( ArtifactMetadata bmd, String classifier, String type ) + public byte[] readRawData( ArtifactMetadata md, String classifier, String type ) throws MetadataReaderException { - return readRawData( bmd, classifier, type, false ); + return readRawData( md, classifier, type, false ); } // --------------------------------------------------------------------------------------------------------------- - public byte[] readRawData( ArtifactMetadata bmd, String classifier, String type, boolean exempt ) + public byte[] readRawData( ArtifactMetadata md, String classifier, String type, boolean exempt ) throws MetadataReaderException { - return readRawData( relPathOf( bmd, classifier, type ), exempt ); + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + return null; + + return readRawData( relPathOf( md, classifier, type ), exempt ); } // --------------------------------------------------------------------------------------------------------------- Modified: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java Tue Mar 10 04:16:06 2009 @@ -43,9 +43,9 @@ extends AbstracRepositoryReader implements RepositoryReader { - private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( LocalRepositoryReaderMap.class ); + private static final IMercuryLogger LOG = MercuryLoggerManager.getLogger( LocalRepositoryReaderMap.class ); - private static final Language _lang = new DefaultLanguage( LocalRepositoryReaderMap.class ); + private static final Language LANG = new DefaultLanguage( LocalRepositoryReaderMap.class ); // --------------------------------------------------------------------------------------------------------------- private static final String[] _protocols = new String[] { "map" }; @@ -93,12 +93,12 @@ ArtifactResults res = new ArtifactResults(); - for( ArtifactMetadata bmd : query ) + for( ArtifactMetadata md : query ) { Artifact a; try { - a = _repo._storage.findArtifact( bmd ); + a = _repo._storage.findArtifact( md ); } catch ( Exception e ) { @@ -106,7 +106,7 @@ } if( a != null ) - res.add( bmd, a ); + res.add( md, a ); } return res; @@ -173,7 +173,7 @@ } catch ( Exception e ) { - _log.error( e.getMessage() ); + LOG.error( e.getMessage() ); res.addError( bmd, e ); } Modified: maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java?rev=751975&r1=751974&r2=751975&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java Tue Mar 10 04:16:06 2009 @@ -361,15 +361,18 @@ ArtifactResults res = new ArtifactResults(); - for ( ArtifactMetadata bmd : query ) + for ( ArtifactMetadata md : query ) { + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + continue; + try { - readArtifact( bmd, res ); + readArtifact( md, res ); } catch ( Exception e ) { - res.addError( bmd, e ); + res.addError( md, e ); } } @@ -387,7 +390,7 @@ } // --------------------------------------------------------------------------------------------------------------- - public void readArtifact( ArtifactMetadata bmd, ArtifactResults res ) + private void readArtifact( ArtifactMetadata bmd, ArtifactResults res ) throws IOException, RepositoryException, MetadataReaderException, MetadataException { DefaultArtifact da = bmd instanceof DefaultArtifact ? (DefaultArtifact) bmd : new DefaultArtifact( bmd ); @@ -448,21 +451,23 @@ MetadataResults ror = new MetadataResults( 16 ); - for ( ArtifactMetadata bmd : query ) + for ( ArtifactMetadata md : query ) { + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + continue; + try { List<ArtifactMetadata> deps = - _mdProcessor.getDependencies( bmd, _mdReader == null ? this : _mdReader, System.getenv(), + _mdProcessor.getDependencies( md, _mdReader == null ? this : _mdReader, System.getenv(), System.getProperties() ); - ror.add( bmd, deps ); + ror.add( md, deps ); } catch ( Exception e ) { - LOG.warn( "error reading " + bmd.toString() + " dependencies", e ); + LOG.warn( "error reading " + md.toString() + " dependencies", e ); continue; } - } return ror; @@ -707,26 +712,29 @@ String root = _repo.getServer().getURL().toString(); - for ( ArtifactMetadata bmd : query ) + for ( ArtifactMetadata md : query ) { - ArtifactLocation loc = new ArtifactLocation( root, bmd ); + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + continue; + + ArtifactLocation loc = new ArtifactLocation( root, md ); TreeSet<String> versions = null; try { - versions = getCachedVersions( loc, bmd, res ); + versions = getCachedVersions( loc, md, res ); if ( Util.isEmpty( versions ) ) continue; } catch ( Exception e ) { - res.addError( bmd, e ); + res.addError( md, e ); continue; } - Quality vq = new Quality( bmd.getVersion() ); + Quality vq = new Quality( md.getVersion() ); boolean lookForSnapshot = vq.equals( Quality.SNAPSHOT_QUALITY ); boolean lookForLatest = vq.equals( Quality.FIXED_LATEST_QUALITY ); @@ -760,7 +768,7 @@ } else { - String base = ArtifactLocation.stripSN( bmd.getVersion() ); + String base = ArtifactLocation.stripSN( md.getVersion() ); if ( base != null ) { @@ -785,13 +793,13 @@ if ( found != null ) { ArtifactMetadata vmd = new ArtifactMetadata(); - vmd.setGroupId( bmd.getGroupId() ); - vmd.setArtifactId( bmd.getArtifactId() ); - vmd.setClassifier( bmd.getClassifier() ); - vmd.setType( bmd.getType() ); + vmd.setGroupId( md.getGroupId() ); + vmd.setArtifactId( md.getArtifactId() ); + vmd.setClassifier( md.getClassifier() ); + vmd.setType( md.getType() ); vmd.setVersion( found ); - res = MetadataResults.add( res, bmd, vmd ); + res = MetadataResults.add( res, md, vmd ); } continue; @@ -800,11 +808,11 @@ VersionRange versionQuery; try { - versionQuery = VersionRangeFactory.create( bmd.getVersion(), _repo.getVersionRangeQualityRange() ); + versionQuery = VersionRangeFactory.create( md.getVersion(), _repo.getVersionRangeQualityRange() ); } catch ( VersionException e ) { - res.addError( bmd, new RepositoryException( e ) ); + res.addError( md, new RepositoryException( e ) ); continue; } @@ -819,13 +827,13 @@ continue; ArtifactMetadata vmd = new ArtifactMetadata(); - vmd.setGroupId( bmd.getGroupId() ); - vmd.setArtifactId( bmd.getArtifactId() ); - vmd.setClassifier( bmd.getClassifier() ); - vmd.setType( bmd.getType() ); + vmd.setGroupId( md.getGroupId() ); + vmd.setArtifactId( md.getArtifactId() ); + vmd.setClassifier( md.getClassifier() ); + vmd.setType( md.getType() ); vmd.setVersion( version ); - res = MetadataResults.add( res, bmd, vmd ); + res = MetadataResults.add( res, md, vmd ); } } @@ -834,10 +842,13 @@ } // --------------------------------------------------------------------------------------------------------------- - public byte[] readRawData( ArtifactMetadata bmd, String classifier, String type ) + public byte[] readRawData( ArtifactMetadata md, String classifier, String type ) throws MetadataReaderException { - return readRawData( bmd, classifier, type, false ); + if( ! _repo.getRepositoryQualityRange().isAcceptedQuality( md.getRequestedQuality() ) ) + return null; + + return readRawData( md, classifier, type, false ); } // ---------------------------------------------------------------------------------------------------------------