You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2010/04/08 23:29:56 UTC
svn commit: r932128 - in /maven/maven-3/trunk:
maven-artifact/src/main/java/org/apache/maven/artifact/repository/
maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/
maven-compat/src/main/java/org/apache/maven/repository/legacy/ m...
Author: bentmann
Date: Thu Apr 8 21:29:56 2010
New Revision: 932128
URL: http://svn.apache.org/viewvc?rev=932128&view=rev
Log:
[MNG-2994] Snapshot repositories are not checked when using ranges
Modified:
maven/maven-3/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/SnapshotArtifactRepositoryMetadata.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadata.java
Modified: maven/maven-3/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java (original)
+++ maven/maven-3/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java Thu Apr 8 21:29:56 2010
@@ -56,6 +56,11 @@ public class ArtifactRepositoryPolicy
this( true, null, null );
}
+ public ArtifactRepositoryPolicy( ArtifactRepositoryPolicy policy )
+ {
+ this( policy.isEnabled(), policy.getUpdatePolicy(), policy.getChecksumPolicy() );
+ }
+
public ArtifactRepositoryPolicy( boolean enabled,
String updatePolicy,
String checksumPolicy )
@@ -163,4 +168,59 @@ public class ArtifactRepositoryPolicy
return buffer.toString();
}
+ public void merge( ArtifactRepositoryPolicy policy )
+ {
+ if ( policy != null && policy.isEnabled() )
+ {
+ setEnabled( true );
+
+ if ( ordinalOfChecksumPolicy( policy.getChecksumPolicy() ) < ordinalOfChecksumPolicy( getChecksumPolicy() ) )
+ {
+ setChecksumPolicy( policy.getChecksumPolicy() );
+ }
+
+ if ( ordinalOfUpdatePolicy( policy.getUpdatePolicy() ) < ordinalOfUpdatePolicy( getUpdatePolicy() ) )
+ {
+ setUpdatePolicy( policy.getUpdatePolicy() );
+ }
+ }
+ }
+
+ private int ordinalOfChecksumPolicy( String policy )
+ {
+ if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
+ {
+ return 2;
+ }
+ else if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+
+ private int ordinalOfUpdatePolicy( String policy )
+ {
+ if ( ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
+ {
+ return 1440;
+ }
+ else if ( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
+ {
+ return 0;
+ }
+ else if ( policy != null && policy.startsWith( ArtifactRepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
+ {
+ String s = policy.substring( UPDATE_POLICY_INTERVAL.length() + 1 );
+ return Integer.valueOf( s );
+ }
+ else
+ {
+ return Integer.MAX_VALUE;
+ }
+ }
+
}
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Thu Apr 8 21:29:56 2010
@@ -113,8 +113,7 @@ public class DefaultRepositoryMetadataMa
for ( ArtifactRepository repository : remoteRepositories )
{
- ArtifactRepositoryPolicy policy =
- metadata.isSnapshot() ? repository.getSnapshots() : repository.getReleases();
+ ArtifactRepositoryPolicy policy = metadata.getPolicy( repository );
File file =
new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata,
@@ -352,7 +351,7 @@ public class DefaultRepositoryMetadataMa
ArtifactRepository selected = null;
for ( ArtifactRepository repository : remoteRepositories )
{
- ArtifactRepositoryPolicy policy = metadata.isSnapshot() ? repository.getSnapshots() : repository.getReleases();
+ ArtifactRepositoryPolicy policy = metadata.getPolicy( repository );
if ( policy.isEnabled() && loadMetadata( metadata, repository, localRepository, previousMetadata ) )
{
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/SnapshotArtifactRepositoryMetadata.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/SnapshotArtifactRepositoryMetadata.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/SnapshotArtifactRepositoryMetadata.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/SnapshotArtifactRepositoryMetadata.java Thu Apr 8 21:29:56 2010
@@ -82,6 +82,11 @@ public class SnapshotArtifactRepositoryM
return artifact.isSnapshot();
}
+ public int getNature()
+ {
+ return isSnapshot() ? SNAPSHOT : RELEASE;
+ }
+
public ArtifactRepository getRepository()
{
return artifact.getRepository();
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java Thu Apr 8 21:29:56 2010
@@ -117,7 +117,7 @@ public class DefaultUpdateCheckManager
// NOTE: Release metadata includes version information about artifacts that have been released, to allow
// meta-versions like RELEASE and LATEST to resolve, and also to allow retrieval of the range of valid, released
// artifacts available.
- ArtifactRepositoryPolicy policy = metadata.isSnapshot() ? repository.getSnapshots() : repository.getReleases();
+ ArtifactRepositoryPolicy policy = metadata.getPolicy( repository );
if ( !policy.isEnabled() )
{
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java Thu Apr 8 21:29:56 2010
@@ -411,66 +411,17 @@ public class LegacyRepositorySystem
{
if ( effectivePolicy == null )
{
- effectivePolicy = new ArtifactRepositoryPolicy( policy.isEnabled(), policy.getUpdatePolicy(), policy.getChecksumPolicy() );
+ effectivePolicy = new ArtifactRepositoryPolicy( policy );
}
else
{
- if ( policy.isEnabled() )
- {
- effectivePolicy.setEnabled( true );
-
- if ( ordinalOfChecksumPolicy( policy.getChecksumPolicy() ) < ordinalOfChecksumPolicy( effectivePolicy.getChecksumPolicy() ) )
- {
- effectivePolicy.setChecksumPolicy( policy.getChecksumPolicy() );
- }
-
- if ( ordinalOfUpdatePolicy( policy.getUpdatePolicy() ) < ordinalOfUpdatePolicy( effectivePolicy.getUpdatePolicy() ) )
- {
- effectivePolicy.setUpdatePolicy( policy.getUpdatePolicy() );
- }
- }
+ effectivePolicy.merge( policy );
}
}
return effectivePolicy;
}
- private int ordinalOfChecksumPolicy( String policy )
- {
- if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
- {
- return 2;
- }
- else if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy ) )
- {
- return 0;
- }
- else
- {
- return 1;
- }
- }
-
- private int ordinalOfUpdatePolicy( String policy )
- {
- if ( ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY.equals( policy ) )
- {
- return 1440;
- }
- else if ( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( policy ) )
- {
- return 0;
- }
- else if ( policy != null && policy.startsWith( ArtifactRepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
- {
- return 60;
- }
- else
- {
- return Integer.MAX_VALUE;
- }
- }
-
public Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors )
{
return mirrorSelector.getMirror( repository, mirrors );
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java Thu Apr 8 21:29:56 2010
@@ -27,6 +27,7 @@ import java.io.Writer;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
import org.codehaus.plexus.util.IOUtil;
@@ -214,4 +215,29 @@ public abstract class AbstractRepository
return buffer.toString();
}
+
+ public int getNature()
+ {
+ return RELEASE;
+ }
+
+ public ArtifactRepositoryPolicy getPolicy( ArtifactRepository repository )
+ {
+ int nature = getNature();
+ if ( ( nature & RepositoryMetadata.RELEASE_OR_SNAPSHOT ) == RepositoryMetadata.RELEASE_OR_SNAPSHOT )
+ {
+ ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy( repository.getReleases() );
+ policy.merge( repository.getSnapshots() );
+ return policy;
+ }
+ else if ( ( nature & RepositoryMetadata.SNAPSHOT ) != 0 )
+ {
+ return repository.getSnapshots();
+ }
+ else
+ {
+ return repository.getReleases();
+ }
+ }
+
}
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java Thu Apr 8 21:29:56 2010
@@ -20,7 +20,11 @@ package org.apache.maven.artifact.reposi
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.Restriction;
+import org.apache.maven.artifact.versioning.VersionRange;
/**
* Metadata for the artifact directory of the repository.
@@ -82,6 +86,33 @@ public class ArtifactRepositoryMetadata
return false;
}
+ public int getNature()
+ {
+ if ( artifact.getVersion() != null )
+ {
+ return artifact.isSnapshot() ? SNAPSHOT : RELEASE;
+ }
+
+ VersionRange range = artifact.getVersionRange();
+ if ( range != null )
+ {
+ for ( Restriction restriction : range.getRestrictions() )
+ {
+ if ( isSnapshot( restriction.getLowerBound() ) || isSnapshot( restriction.getUpperBound() ) )
+ {
+ return RELEASE_OR_SNAPSHOT;
+ }
+ }
+ }
+
+ return RELEASE;
+ }
+
+ private boolean isSnapshot( ArtifactVersion version )
+ {
+ return version != null && ArtifactUtils.isSnapshot( version.getQualifier() );
+ }
+
public ArtifactRepository getRepository()
{
return null;
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadata.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadata.java?rev=932128&r1=932127&r2=932128&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadata.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadata.java Thu Apr 8 21:29:56 2010
@@ -21,6 +21,7 @@ package org.apache.maven.artifact.reposi
//import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
/**
* Describes repository directory metadata.
@@ -31,7 +32,14 @@ import org.apache.maven.artifact.reposit
*/
public interface RepositoryMetadata
extends org.apache.maven.artifact.metadata.ArtifactMetadata
-{
+{
+
+ int RELEASE = 1;
+
+ int SNAPSHOT = 2;
+
+ int RELEASE_OR_SNAPSHOT = RELEASE | SNAPSHOT;
+
/**
* Get the repository the metadata was located in.
*
@@ -66,4 +74,21 @@ public interface RepositoryMetadata
* @return if it is a snapshot
*/
boolean isSnapshot();
+
+ /**
+ * Gets the artifact quality this metadata refers to. One of {@link #RELEASE}, {@link #SNAPSHOT} or
+ * {@link #RELEASE_OR_SNAPSHOT}.
+ *
+ * @return The artifact qualitiy this metadata refers to.
+ */
+ int getNature();
+
+ /**
+ * Gets the policy that applies to this metadata regarding the specified repository.
+ *
+ * @param repository The repository for which to determine the policy, must not be {@code null}.
+ * @return The policy, never {@code null}.
+ */
+ ArtifactRepositoryPolicy getPolicy( ArtifactRepository repository );
+
}