You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/07/28 08:36:14 UTC
svn commit: r225714 - in /maven/components/trunk:
maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/
maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/
maven-artifact-manager/src/main/java/org/apache/maven/art...
Author: brett
Date: Wed Jul 27 23:35:47 2005
New Revision: 225714
URL: http://svn.apache.org/viewcvs?rev=225714&view=rev
Log:
PR: MNG-615
implement repository confidence levels. currently updates poms daily if they are not deployed or verified
Added:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java (with props)
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/AbstractVersionArtifactMetadata.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
maven/components/trunk/maven-model/maven.mdo
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Wed Jul 27 23:35:47 2005
@@ -204,7 +204,7 @@
}
}
- public void getArtifact( Artifact artifact, List remoteRepositories, File destination )
+ public void getArtifact( Artifact artifact, List remoteRepositories )
throws TransferFailedException, ResourceDoesNotExistException
{
// TODO [BP]: The exception handling here needs some work
@@ -215,7 +215,7 @@
try
{
- getArtifact( artifact, repository, destination );
+ getArtifact( artifact, repository );
successful = true;
}
@@ -234,7 +234,7 @@
}
}
- public void getArtifact( Artifact artifact, ArtifactRepository repository, File destination )
+ public void getArtifact( Artifact artifact, ArtifactRepository repository )
throws TransferFailedException, ResourceDoesNotExistException
{
String remotePath = repository.pathOf( artifact );
@@ -243,7 +243,7 @@
if ( policy.isEnabled() )
{
- getRemoteFile( repository, destination, remotePath, downloadMonitor, policy.getUpdatePolicy() );
+ getRemoteFile( repository, artifact.getFile(), remotePath, downloadMonitor, policy.getChecksumPolicy() );
}
else
{
@@ -252,13 +252,13 @@
}
public void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository repository, File destination,
- String updatePolicy )
+ String checksumPolicy )
throws TransferFailedException, ResourceDoesNotExistException
{
String remotePath = repository.pathOfMetadata( metadata );
getLogger().info( "Retrieving " + metadata );
- getRemoteFile( repository, destination, remotePath, null, updatePolicy );
+ getRemoteFile( repository, destination, remotePath, null, checksumPolicy );
}
public void getRepositoryMetadata( RepositoryMetadata metadata, ArtifactRepository remoteRepository,
@@ -273,7 +273,7 @@
}
private void getRemoteFile( ArtifactRepository repository, File destination, String remotePath,
- TransferListener downloadMonitor, String updatePolicy )
+ TransferListener downloadMonitor, String checksumPolicy )
throws TransferFailedException, ResourceDoesNotExistException, ChecksumFailedException
{
// TODO: better excetpions - transfer failed is not enough?
@@ -363,7 +363,7 @@
}
else
{
- handleChecksumFailure( updatePolicy, e.getMessage(), e.getCause() );
+ handleChecksumFailure( checksumPolicy, e.getMessage(), e.getCause() );
}
}
catch ( ResourceDoesNotExistException sha1TryException )
@@ -386,13 +386,13 @@
}
else
{
- handleChecksumFailure( updatePolicy, e.getMessage(), e.getCause() );
+ handleChecksumFailure( checksumPolicy, e.getMessage(), e.getCause() );
}
}
catch ( ResourceDoesNotExistException md5TryException )
{
// this was a failed transfer, and we don't want to retry.
- handleChecksumFailure( updatePolicy, "Error retrieving checksum file for " + remotePath,
+ handleChecksumFailure( checksumPolicy, "Error retrieving checksum file for " + remotePath,
md5TryException );
}
}
@@ -452,17 +452,19 @@
}
}
- private void handleChecksumFailure( String updatePolicy, String message, Throwable cause )
+ private void handleChecksumFailure( String checksumPolicy, String message, Throwable cause )
throws ChecksumFailedException
{
- if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( updatePolicy ) )
+ if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( checksumPolicy ) )
{
throw new ChecksumFailedException( message, cause );
}
- else
+ else if ( !ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( checksumPolicy ) )
{
+ // warn if it is set to anything other than ignore
getLogger().warn( "*** CHECKSUM FAILED - " + message + " - IGNORING" );
}
+ // otherwise it is ignore
}
private void verifyChecksum( ChecksumObserver checksumObserver, File destination, String remotePath,
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java Wed Jul 27 23:35:47 2005
@@ -42,10 +42,10 @@
Wagon getWagon( String protocol )
throws UnsupportedProtocolException;
- void getArtifact( Artifact artifact, List remoteRepositories, File destination )
+ void getArtifact( Artifact artifact, List remoteRepositories )
throws TransferFailedException, ResourceDoesNotExistException;
- void getArtifact( Artifact artifact, ArtifactRepository repository, File destination )
+ void getArtifact( Artifact artifact, ArtifactRepository repository )
throws TransferFailedException, ResourceDoesNotExistException;
void putArtifact( File source, Artifact artifact, ArtifactRepository deploymentRepository )
@@ -55,7 +55,7 @@
throws TransferFailedException;
void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination,
- String updatePolicy )
+ String checksumPolicy )
throws TransferFailedException, ResourceDoesNotExistException;
void putRepositoryMetadata( File source, RepositoryMetadata metadata, ArtifactRepository repository )
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/AbstractVersionArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/AbstractVersionArtifactMetadata.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/AbstractVersionArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/AbstractVersionArtifactMetadata.java Wed Jul 27 23:35:47 2005
@@ -60,16 +60,14 @@
protected abstract void setContent( String content );
- // TODO: share
- public boolean checkedSinceDate( Date date )
+ public boolean exists()
{
- // Note that if last modified is 0, it didn't exist, so this will be true
- return !date.after( new Date( lastModified ) );
+ return lastModified > 0;
}
- public boolean exists()
+ public Date getLastModified()
{
- return lastModified > 0;
+ return new Date( lastModified );
}
public void readFromLocalRepository( ArtifactRepository localRepository )
@@ -83,7 +81,7 @@
}
public void retrieveFromRemoteRepository( ArtifactRepository remoteRepository, WagonManager wagonManager,
- String updatePolicy )
+ String checksumPolicy )
throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
{
try
@@ -92,7 +90,7 @@
File destination = File.createTempFile( "maven-artifact", null );
destination.deleteOnExit();
- wagonManager.getArtifactMetadata( this, remoteRepository, destination, updatePolicy );
+ wagonManager.getArtifactMetadata( this, remoteRepository, destination, checksumPolicy );
readFromFile( destination );
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java Wed Jul 27 23:35:47 2005
@@ -1,14 +1,28 @@
package org.apache.maven.artifact.metadata;
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.transform.LatestArtifactTransformation;
import java.io.File;
public class LatestArtifactMetadata
extends AbstractVersionArtifactMetadata
{
-
private String version;
public LatestArtifactMetadata( Artifact artifact )
@@ -54,7 +68,7 @@
{
long fileTime = file.lastModified();
- return ( lastModified > fileTime );
+ return lastModified > fileTime;
}
public String toString()
@@ -76,7 +90,7 @@
{
return Artifact.LATEST_VERSION;
}
-
+
public boolean storedInArtifactDirectory()
{
return false;
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java Wed Jul 27 23:35:47 2005
@@ -76,7 +76,7 @@
{
long fileTime = file.lastModified();
- return ( lastModified > fileTime );
+ return lastModified > fileTime;
}
public String toString()
@@ -98,7 +98,7 @@
{
return ReleaseArtifactTransformation.RELEASE_VERSION;
}
-
+
public boolean storedInArtifactDirectory()
{
return false;
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Wed Jul 27 23:35:47 2005
@@ -60,6 +60,19 @@
public void resolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
throws ArtifactResolutionException
{
+ resolve( artifact, remoteRepositories, localRepository, false );
+ }
+
+ public void resolveAlways( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
+ throws ArtifactResolutionException
+ {
+ resolve( artifact, remoteRepositories, localRepository, true );
+ }
+
+ private void resolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository,
+ boolean force )
+ throws ArtifactResolutionException
+ {
if ( artifact != null )
{
// ----------------------------------------------------------------------
@@ -87,18 +100,18 @@
}
File destination = artifact.getFile();
- if ( !destination.exists() )
+ if ( !destination.exists() || force )
{
try
{
if ( artifact.getRepository() != null )
{
// the transformations discovered the artifact - so use it exclusively
- wagonManager.getArtifact( artifact, artifact.getRepository(), destination );
+ wagonManager.getArtifact( artifact, artifact.getRepository() );
}
else
{
- wagonManager.getArtifact( artifact, remoteRepositories, destination );
+ wagonManager.getArtifact( artifact, remoteRepositories );
}
// must be after the artifact is downloaded
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java Wed Jul 27 23:35:47 2005
@@ -27,8 +27,6 @@
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.io.IOException;
-import java.util.Calendar;
-import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -81,33 +79,8 @@
}
else
{
- String updatePolicy = policy.getUpdatePolicy();
// TODO: should be able to calculate this less often
- boolean checkForUpdates = false;
- if ( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( updatePolicy ) )
- {
- checkForUpdates = true;
- }
- else if ( ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY.equals( updatePolicy ) )
- {
- if ( !localMetadata.checkedSinceDate( getMidnightBoundary() ) )
- {
- checkForUpdates = true;
- }
- }
- else if ( updatePolicy.startsWith( ArtifactRepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
- {
- String s = updatePolicy.substring(
- ArtifactRepositoryPolicy.UPDATE_POLICY_INTERVAL.length() + 1 );
- int minutes = Integer.valueOf( s ).intValue();
- Calendar cal = Calendar.getInstance();
- cal.add( Calendar.MINUTE, -minutes );
- if ( !localMetadata.checkedSinceDate( cal.getTime() ) )
- {
- checkForUpdates = true;
- }
- }
- // else assume "never"
+ boolean checkForUpdates = policy.checkOutOfDate( localMetadata.getLastModified() );
if ( checkForUpdates )
{
@@ -119,7 +92,7 @@
try
{
remoteMetadata = retrieveFromRemoteRepository( artifact, repository, localMetadata,
- updatePolicy );
+ policy.getChecksumPolicy() );
// we must only flag this after checking for updates, otherwise subsequent attempts will look
// for SNAPSHOT without checking the metadata
@@ -190,12 +163,12 @@
protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
ArtifactRepository remoteRepository,
VersionArtifactMetadata localMetadata,
- String updatePolicy )
+ String checksumPolicy )
throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
{
AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
- metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager, updatePolicy );
+ metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager, checksumPolicy );
return metadata;
}
@@ -208,16 +181,6 @@
AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
metadata.readFromLocalRepository( localRepository );
return metadata;
- }
-
- private Date getMidnightBoundary()
- {
- Calendar cal = Calendar.getInstance();
- cal.set( Calendar.HOUR_OF_DAY, 0 );
- cal.set( Calendar.MINUTE, 0 );
- cal.set( Calendar.SECOND, 0 );
- cal.set( Calendar.MILLISECOND, 0 );
- return cal.getTime();
}
private boolean alreadyResolved( Artifact artifact )
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java Wed Jul 27 23:35:47 2005
@@ -65,7 +65,7 @@
try
{
metadata = (SnapshotArtifactMetadata) retrieveFromRemoteRepository( artifact, remoteRepository, null,
- ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
+ ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
}
catch ( ResourceDoesNotExistException e )
{
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java Wed Jul 27 23:35:47 2005
@@ -24,7 +24,6 @@
import java.io.File;
import java.util.List;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
@@ -128,4 +127,5 @@
void setArtifactId( String artifactId );
boolean isSnapshot();
+
}
Added: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java?rev=225714&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java (added)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java Wed Jul 27 23:35:47 2005
@@ -0,0 +1,123 @@
+package org.apache.maven.artifact;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Type safe enumeration for the artifact status field.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public final class ArtifactStatus
+ implements Comparable
+{
+ /**
+ * No trust - no information about status.
+ */
+ public static final ArtifactStatus NONE = new ArtifactStatus( "none", 0 );
+
+ /**
+ * No trust - information was generated with defaults.
+ */
+ public static final ArtifactStatus GENERATED = new ArtifactStatus( "generated", 1 );
+
+ /**
+ * Low trust - was converted from the Maven 1.x repository.
+ */
+ public static final ArtifactStatus CONVERTED = new ArtifactStatus( "converted", 2 );
+
+ /**
+ * Moderate trust - it was deployed directly from a partner.
+ */
+ public static final ArtifactStatus PARTNER = new ArtifactStatus( "partner", 3 );
+
+ /**
+ * Moderate trust - it was deployed directly by a user.
+ */
+ public static final ArtifactStatus DEPLOYED = new ArtifactStatus( "deployed", 4 );
+
+ /**
+ * Trusted, as it has had its data verified by hand.
+ */
+ public static final ArtifactStatus VERIFIED = new ArtifactStatus( "verified", 5 );
+
+ private final int rank;
+
+ private final String key;
+
+ private static Map map = null;
+
+ private ArtifactStatus( String key, int rank )
+ {
+ this.rank = rank;
+ this.key = key;
+
+ if ( map == null )
+ {
+ map = new HashMap();
+ }
+ map.put( key, this );
+ }
+
+ public static ArtifactStatus valueOf( String status )
+ {
+ ArtifactStatus retVal = null;
+
+ if ( status != null )
+ {
+ retVal = (ArtifactStatus) map.get( status );
+ }
+
+ return retVal != null ? retVal : NONE;
+ }
+
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ final ArtifactStatus that = (ArtifactStatus) o;
+
+ return rank == that.rank;
+
+ }
+
+ public int hashCode()
+ {
+ return rank;
+ }
+
+ public String toString()
+ {
+ return key;
+ }
+
+ public int compareTo( Object o )
+ {
+ ArtifactStatus s = (ArtifactStatus) o;
+ return rank - s.rank;
+ }
+}
Propchange: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactStatus.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java Wed Jul 27 23:35:47 2005
@@ -435,4 +435,5 @@
return getVersion().endsWith( SNAPSHOT_VERSION ) || getVersion().equals( LATEST_VERSION );
}
}
+
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java Wed Jul 27 23:35:47 2005
@@ -28,21 +28,25 @@
public interface VersionArtifactMetadata
extends ArtifactMetadata, Comparable
{
- /**
- * Determine if the metadata is considered newer than a given date.
- * @return whether it is newer
- */
- boolean checkedSinceDate( Date date );
/**
* Determine if the metadata is considered newer than a given file.
+ *
* @return whether it is newer
*/
boolean newerThanFile( File file );
/**
* Get the resolved version from the metadata.
+ *
* @return the resolved version
*/
String constructVersion();
+
+ /**
+ * Determine when the metadata was last modified.
+ *
+ * @return the date the metadata was last modified.
+ */
+ Date getLastModified();
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java Wed Jul 27 23:35:47 2005
@@ -1,4 +1,6 @@
-package org.apache.maven.artifact.repository;/*
+package org.apache.maven.artifact.repository;
+
+/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,6 +16,9 @@
* limitations under the License.
*/
+import java.util.Calendar;
+import java.util.Date;
+
/**
* Describes a set of policies for a repository to use under certain conditions.
*
@@ -34,6 +39,8 @@
public static final String CHECKSUM_POLICY_WARN = "warn";
+ public static final String CHECKSUM_POLICY_IGNORE = "ignore";
+
private boolean enabled;
private String updatePolicy;
@@ -90,5 +97,41 @@
public String getChecksumPolicy()
{
return checksumPolicy;
+ }
+
+ public boolean checkOutOfDate( Date lastModified )
+ {
+ boolean checkForUpdates = false;
+
+ if ( UPDATE_POLICY_ALWAYS.equals( updatePolicy ) )
+ {
+ checkForUpdates = true;
+ }
+ else if ( UPDATE_POLICY_DAILY.equals( updatePolicy ) )
+ {
+ // Get midnight boundary
+ Calendar cal = Calendar.getInstance();
+ cal.set( Calendar.HOUR_OF_DAY, 0 );
+ cal.set( Calendar.MINUTE, 0 );
+ cal.set( Calendar.SECOND, 0 );
+ cal.set( Calendar.MILLISECOND, 0 );
+ if ( cal.getTime().after( lastModified ) )
+ {
+ checkForUpdates = true;
+ }
+ }
+ else if ( updatePolicy.startsWith( UPDATE_POLICY_INTERVAL ) )
+ {
+ String s = updatePolicy.substring( UPDATE_POLICY_INTERVAL.length() + 1 );
+ int minutes = Integer.valueOf( s ).intValue();
+ Calendar cal = Calendar.getInstance();
+ cal.add( Calendar.MINUTE, -minutes );
+ if ( cal.getTime().after( lastModified ) )
+ {
+ checkForUpdates = true;
+ }
+ }
+ // else assume "never"
+ return checkForUpdates;
}
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java Wed Jul 27 23:35:47 2005
@@ -35,7 +35,7 @@
*/
public interface ArtifactResolver
{
- static String ROLE = ArtifactResolver.class.getName();
+ String ROLE = ArtifactResolver.class.getName();
void resolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
throws ArtifactResolutionException;
@@ -62,5 +62,8 @@
ArtifactResolutionResult resolveTransitively( Set artifacts, Artifact originatingArtifact, Map managedVersions,
ArtifactRepository localRepository, List remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter )
+ throws ArtifactResolutionException;
+
+ void resolveAlways( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
throws ArtifactResolutionException;
}
Modified: maven/components/trunk/maven-model/maven.mdo
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Wed Jul 27 23:35:47 2005
@@ -1467,6 +1467,19 @@
<type>Relocation</type>
</association>
</field>
+ <field>
+ <name>status</name>
+ <version>4.0.0</version>
+ <description>
+ Gives the status of this artifact in the remote repository. This must not be set in your local
+ project, as it is updated by tools placing it in the reposiory. Valid values are: none (default),
+ converted (repository manager converted this from an Maven 1 POM), partner (directly synced from a partner
+ Maven 2 repository), deployed (was deployed from a Maven 2 instance), verified (has been hand verified as
+ correct and final).
+ </description>
+ <required>false</required>
+ <type>String</type>
+ </field>
</fields>
</class>
<class>
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Jul 27 23:35:47 2005
@@ -17,10 +17,12 @@
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactStatus;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
@@ -65,6 +67,7 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -235,6 +238,12 @@
Collections.EMPTY_LIST, externalProfiles,
projectDescriptor.getAbsoluteFile().getParentFile() );
+ if ( project.getDistributionManagement() != null && project.getDistributionManagement().getStatus() != null )
+ {
+ throw new ProjectBuildingException(
+ "Invalid project file: distribution status must not be specified for a project outside of the repository" );
+ }
+
// Only translate the base directory for files in the source tree
pathTranslator.alignToBaseDirectory( project.getModel(), projectDescriptor );
@@ -273,6 +282,50 @@
File file = artifact.getFile();
model = readModel( file );
+
+ String downloadUrl = null;
+ ArtifactStatus status = ArtifactStatus.NONE;
+
+ DistributionManagement distributionManagement = model.getDistributionManagement();
+ if ( distributionManagement != null )
+ {
+ downloadUrl = distributionManagement.getDownloadUrl();
+
+ status = ArtifactStatus.valueOf( distributionManagement.getStatus() );
+ }
+
+ // TODO: configurable actions dependant on status
+ if ( status.compareTo( ArtifactStatus.VERIFIED ) < 0 )
+ {
+ // use default policy (enabled, daily update, warn on bad checksum)
+ ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy();
+
+ if ( policy.checkOutOfDate( new Date( file.lastModified() ) ) )
+ {
+ getLogger().info(
+ artifact.getArtifactId() + ": updating metadata due to status of '" + status + "'" );
+ try
+ {
+ artifactResolver.resolveAlways( artifact, remoteArtifactRepositories, localRepository );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ getLogger().warn( "Error updating POM - using existing version", e );
+ }
+ }
+ }
+
+ // TODO: this is gross. Would like to give it the whole model, but maven-artifact shouldn't depend on that
+ // Can a maven-core implementation of the Artifact interface store it, and be used in the exceptions?
+ if ( downloadUrl != null )
+ {
+ artifact.setDownloadUrl( downloadUrl );
+ }
+ else
+ {
+ artifact.setDownloadUrl( model.getUrl() );
+ }
+
}
catch ( ArtifactResolutionException e )
{
@@ -289,23 +342,9 @@
model.setVersion( artifact.getVersion() );
// TODO: not correct in some instances
model.setPackaging( artifact.getType() );
- }
- }
- // TODO: this is gross. Would like to give it the whole model, but maven-artifact shouldn't depend on that
- // Can a maven-core implementation of the Artifact interface store it, and be used in the exceptions?
- String downloadUrl = null;
- if ( model.getDistributionManagement() != null )
- {
- downloadUrl = model.getDistributionManagement().getDownloadUrl();
- }
- if ( downloadUrl != null )
- {
- artifact.setDownloadUrl( downloadUrl );
- }
- else
- {
- artifact.setDownloadUrl( model.getUrl() );
+ // TODO: save to disk with a "generated" status
+ }
}
return model;
@@ -461,9 +500,9 @@
if ( parentProject != null )
{
- Artifact parentArtifact = artifactFactory.createProjectArtifact( parentProject.getGroupId(),
- parentProject.getArtifactId(),
- parentProject.getVersion() );
+ Artifact parentArtifact = artifactFactory.createParentArtifact( parentProject.getGroupId(),
+ parentProject.getArtifactId(),
+ parentProject.getVersion() );
project.setParentArtifact( parentArtifact );
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java Wed Jul 27 23:35:47 2005
@@ -27,11 +27,11 @@
{
String ROLE = MavenProjectBuilder.class.getName();
- static final String STANDALONE_SUPERPOM_GROUPID = "org.apache.maven";
+ String STANDALONE_SUPERPOM_GROUPID = "org.apache.maven";
- static final String STANDALONE_SUPERPOM_ARTIFACTID = "super-pom";
+ String STANDALONE_SUPERPOM_ARTIFACTID = "super-pom";
- static final String STANDALONE_SUPERPOM_VERSION = "2.0";
+ String STANDALONE_SUPERPOM_VERSION = "2.0";
MavenProject build( File project, ArtifactRepository localRepository, List profiles )
throws ProjectBuildingException;
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Wed Jul 27 23:35:47 2005
@@ -28,6 +28,7 @@
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Relocation;
import org.apache.maven.project.MavenProject;
@@ -85,9 +86,10 @@
Relocation relocation = null;
- if ( p.getDistributionManagement() != null )
+ DistributionManagement distMgmt = p.getDistributionManagement();
+ if ( distMgmt != null )
{
- relocation = p.getDistributionManagement().getRelocation();
+ relocation = distMgmt.getRelocation();
}
if ( relocation != null )
{
@@ -121,6 +123,7 @@
}
while ( !done );
+ // TODO: this could come straight from the project, negating the need to set it in the project itself?
artifact.setDownloadUrl( pomArtifact.getDownloadUrl() );
try
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java?rev=225714&r1=225713&r2=225714&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java Wed Jul 27 23:35:47 2005
@@ -17,9 +17,11 @@
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactStatus;
import org.apache.maven.artifact.metadata.AbstractArtifactMetadata;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
@@ -76,6 +78,14 @@
MavenXpp3Reader modelReader = new MavenXpp3Reader();
Model model = modelReader.read( reader );
model.setVersion( getVersion() );
+
+ DistributionManagement distributionManagement = model.getDistributionManagement();
+ if ( distributionManagement == null )
+ {
+ distributionManagement = new DistributionManagement();
+ model.setDistributionManagement( distributionManagement );
+ }
+ distributionManagement.setStatus( ArtifactStatus.DEPLOYED.toString() );
MavenXpp3Writer modelWriter = new MavenXpp3Writer();
modelWriter.write( writer, model );
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org