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/25 11:51:57 UTC

svn commit: r224707 [1/2] - in /maven/components/trunk: ./ maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/ maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/ maven-artifact-manager/src/main/java/org/apache/maven/ar...

Author: brett
Date: Mon Jul 25 02:51:12 2005
New Revision: 224707

URL: http://svn.apache.org/viewcvs?rev=224707&view=rev
Log:
PR: MNG-456
allow separate snapshot and release repositories
deprecate existing snapshotPolicy and checksumPolicy in favour of updatePolicy and checksumPolicy within the <releases> and <snapshots> elements in the <repository> element.


Added:
    maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java   (with props)
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java   (with props)
Modified:
    maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
    maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DeployTask.java
    maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RemoteRepository.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
    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/SnapshotArtifactMetadata.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.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/LatestArtifactTransformation.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
    maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.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/ArtifactUtils.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/AbstractArtifactMetadata.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
    maven/components/trunk/maven-model/maven.mdo
    maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java
    maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
    maven/components/trunk/maven-plugins/pom.xml
    maven/components/trunk/maven-profile/profiles.mdo
    maven/components/trunk/maven-profile/src/main/java/org/apache/maven/profiles/ProfilesConversionUtils.java
    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/MavenProject.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectUtils.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
    maven/components/trunk/maven-settings/settings.mdo
    maven/components/trunk/maven-settings/src/main/java/org/apache/maven/settings/SettingsUtils.java
    maven/components/trunk/pom.xml

Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java (original)
+++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java Mon Jul 25 02:51:12 2005
@@ -21,6 +21,7 @@
 import org.apache.maven.artifact.manager.WagonManager;
 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.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.model.Model;
@@ -34,7 +35,6 @@
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
-import org.codehaus.classworlds.ClassRealm;
 import org.codehaus.classworlds.ClassWorld;
 import org.codehaus.classworlds.DuplicateRealmException;
 import org.codehaus.plexus.PlexusContainerException;
@@ -113,12 +113,15 @@
         {
             repositoryFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
 
-            String snapshotPolicy = repository.getSnapshotPolicy();
-            String checksumPolicy = repository.getChecksumPolicy();
+            ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repository.getSnapshots(),
+                                                                                repository.getSnapshotPolicy(),
+                                                                                repository.getChecksumPolicy() );
+            ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repository.getReleases(),
+                                                                               repository.getSnapshotPolicy(),
+                                                                               repository.getChecksumPolicy() );
 
             artifactRepository = repositoryFactory.createArtifactRepository( "remote", repository.getUrl(),
-                                                                             repositoryLayout, snapshotPolicy,
-                                                                             checksumPolicy );
+                                                                             repositoryLayout, snapshots, releases );
         }
         finally
         {
@@ -135,6 +138,29 @@
         return artifactRepository;
     }
 
+    private static ArtifactRepositoryPolicy buildArtifactRepositoryPolicy(
+        RepositoryPolicy policy, String defaultUpdatePolicy, String defaultChecksumPolicy )
+    {
+        boolean enabled = true;
+        String updatePolicy = defaultUpdatePolicy;
+        String checksumPolicy = defaultChecksumPolicy;
+
+        if ( policy != null )
+        {
+            enabled = policy.isEnabled();
+            if ( policy.getUpdatePolicy() != null )
+            {
+                updatePolicy = policy.getUpdatePolicy();
+            }
+            if ( policy.getChecksumPolicy() != null )
+            {
+                checksumPolicy = policy.getChecksumPolicy();
+            }
+        }
+
+        return new ArtifactRepositoryPolicy( enabled, updatePolicy, checksumPolicy );
+    }
+
     protected LocalRepository getDefaultLocalRepository()
     {
         Settings settings = getSettings();
@@ -193,13 +219,30 @@
 
     protected RemoteRepository createAntRemoteRepository( org.apache.maven.model.Repository pomRepository )
     {
+        RemoteRepository r = createAntRemoteRepositoryBase( pomRepository );
+
+        r.setSnapshotPolicy( pomRepository.getSnapshotPolicy() );
+
+        if ( pomRepository.getSnapshots() != null )
+        {
+            r.setSnapshots( convertRepositoryPolicy( pomRepository.getSnapshots() ) );
+        }
+        if ( pomRepository.getReleases() != null )
+        {
+            r.setReleases( convertRepositoryPolicy( pomRepository.getReleases() ) );
+        }
+
+        return r;
+    }
+
+    protected RemoteRepository createAntRemoteRepositoryBase( org.apache.maven.model.RepositoryBase pomRepository )
+    {
         // TODO: actually, we need to not funnel this through the ant repository - we should pump settings into wagon
         // manager at the start like m2 does, and then match up by repository id
-        // As is, this could potentially cause a problem with 2 remote repositories with different authentication info  
+        // As is, this could potentially cause a problem with 2 remote repositories with different authentication info
 
         RemoteRepository r = new RemoteRepository();
         r.setUrl( pomRepository.getUrl() );
-        r.setSnapshotPolicy( pomRepository.getSnapshotPolicy() );
         r.setLayout( pomRepository.getLayout() );
 
         Server server = getSettings().getServer( pomRepository.getId() );
@@ -219,7 +262,6 @@
         {
             r.setUrl( mirror.getUrl() );
         }
-
         return r;
     }
 
@@ -360,6 +402,15 @@
     {
         ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
         // TODO: maybe not strictly correct, while we should enfore that packaging has a type handler of the same id, we don't
-        return factory.createBuildArtifact( pom.getGroupId(), pom.getArtifactId(), pom.getVersion(), pom.getPackaging() );
+        return factory.createBuildArtifact( pom.getGroupId(), pom.getArtifactId(), pom.getVersion(),
+                                            pom.getPackaging() );
+    }
+
+    private static RepositoryPolicy convertRepositoryPolicy( org.apache.maven.model.RepositoryPolicy pomRepoPolicy )
+    {
+        RepositoryPolicy policy = new RepositoryPolicy();
+        policy.setEnabled( pomRepoPolicy.isEnabled() );
+        policy.setUpdatePolicy( pomRepoPolicy.getUpdatePolicy() );
+        return policy;
     }
 }

Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DeployTask.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DeployTask.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DeployTask.java (original)
+++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DeployTask.java Mon Jul 25 02:51:12 2005
@@ -17,7 +17,6 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.deployer.ArtifactDeployer;
 import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
@@ -39,6 +38,8 @@
 {
     private RemoteRepository remoteRepository;
 
+    private RemoteRepository remoteSnapshotRepository;
+
     private File file;
 
     public void execute()
@@ -60,11 +61,26 @@
                 throw new BuildException( "A distributionManagement element is required in your POM to deploy" );
             }
 
-            remoteRepository = createAntRemoteRepository( pom.getDistributionManagement().getRepository() );
+            remoteRepository = createAntRemoteRepositoryBase( pom.getDistributionManagement().getRepository() );
+        }
+
+        if ( remoteSnapshotRepository == null )
+        {
+            if ( pom.getDistributionManagement().getSnapshotRepository() != null )
+            {
+                remoteSnapshotRepository = createAntRemoteRepositoryBase(
+                    pom.getDistributionManagement().getSnapshotRepository() );
+            }
         }
 
         ArtifactRepository deploymentRepository = createRemoteArtifactRepository( remoteRepository );
 
+        ArtifactRepository snapshotRepository = null;
+        if ( remoteSnapshotRepository != null )
+        {
+            snapshotRepository = createRemoteArtifactRepository( remoteSnapshotRepository );
+        }
+
         // Deploy the POM
         Artifact artifact = createArtifact( pom );
 
@@ -98,6 +114,11 @@
     public RemoteRepository getRemoteRepository()
     {
         return remoteRepository;
+    }
+
+    public void addRemoteSnapshotRepository( RemoteRepository remoteSnapshotRepository )
+    {
+        this.remoteSnapshotRepository = remoteSnapshotRepository;
     }
 
     public void addRemoteRepository( RemoteRepository remoteRepository )

Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RemoteRepository.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RemoteRepository.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RemoteRepository.java (original)
+++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RemoteRepository.java Mon Jul 25 02:51:12 2005
@@ -29,12 +29,18 @@
 
     private Authentication authentication;
 
+    /** @deprecated use &lt;snapshots/&gt; and &lt;updatePolicy&gt; instead. */
     private String snapshotPolicy;
     
+    /** @deprecated use &lt;snapshots/&gt; and &lt;checksumPolicy&gt; instead. */
     private String checksumPolicy;
     
     private Proxy proxy;
 
+    private RepositoryPolicy snapshots;
+
+    private RepositoryPolicy releases;
+
     public String getUrl()
     {
         return ( (RemoteRepository) getInstance() ).url;
@@ -83,5 +89,25 @@
     public void setChecksumPolicy( String checksumPolicy )
     {
         this.checksumPolicy = checksumPolicy;
+    }
+
+    public RepositoryPolicy getSnapshots()
+    {
+        return snapshots;
+    }
+
+    public void setSnapshots( RepositoryPolicy snapshots )
+    {
+        this.snapshots = snapshots;
+    }
+
+    public RepositoryPolicy getReleases()
+    {
+        return releases;
+    }
+
+    public void setReleases( RepositoryPolicy releases )
+    {
+        this.releases = releases;
     }
 }

Added: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java?rev=224707&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java (added)
+++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java Mon Jul 25 02:51:12 2005
@@ -0,0 +1,65 @@
+package org.apache.maven.artifact.ant;
+
+/*
+ * 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.tools.ant.ProjectComponent;
+
+/**
+ * Base class for a repository.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public class RepositoryPolicy
+    extends ProjectComponent
+{
+    private String updatePolicy;
+
+    private String checksumPolicy;
+
+    private boolean enabled = true;
+
+    public String getUpdatePolicy()
+    {
+        return updatePolicy;
+    }
+
+    public void setUpdatePolicy( String updatePolicy )
+    {
+        this.updatePolicy = updatePolicy;
+    }
+
+    public boolean isEnabled()
+    {
+        return enabled;
+    }
+
+    public void setEnabled( boolean enabled )
+    {
+        this.enabled = enabled;
+    }
+
+    public String getChecksumPolicy()
+    {
+        return checksumPolicy;
+    }
+
+    public void setChecksumPolicy( String checksumPolicy )
+    {
+        this.checksumPolicy = checksumPolicy;
+    }
+}

Propchange: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/RepositoryPolicy.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java Mon Jul 25 02:51:12 2005
@@ -43,10 +43,8 @@
                         ArtifactRepository localRepository )
         throws ArtifactDeploymentException
     {
-        File source = null;
-
         String extension = artifact.getArtifactHandler().getExtension();
-        source = new File( basedir, finalName + "." + extension );
+        File source = new File( basedir, finalName + "." + extension );
         deploy( source, artifact, deploymentRepository, localRepository );
     }
 

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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -19,6 +19,7 @@
 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.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
 import org.apache.maven.wagon.ConnectionException;
@@ -238,16 +239,26 @@
     {
         String remotePath = repository.pathOf( artifact );
 
-        getRemoteFile( repository, destination, remotePath, downloadMonitor );
+        ArtifactRepositoryPolicy policy = artifact.isSnapshot() ? repository.getSnapshots() : repository.getReleases();
+
+        if ( policy.isEnabled() )
+        {
+            getRemoteFile( repository, destination, remotePath, downloadMonitor, policy.getUpdatePolicy() );
+        }
+        else
+        {
+            getLogger().info( "Skipping disabled repository " + repository.getId() );
+        }
     }
 
-    public void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination )
+    public void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository repository, File destination,
+                                     String updatePolicy )
         throws TransferFailedException, ResourceDoesNotExistException
     {
-        String remotePath = remoteRepository.pathOfMetadata( metadata );
+        String remotePath = repository.pathOfMetadata( metadata );
 
         getLogger().info( "Retrieving " + metadata );
-        getRemoteFile( remoteRepository, destination, remotePath, null );
+        getRemoteFile( repository, destination, remotePath, null, updatePolicy );
     }
 
     public void getRepositoryMetadata( RepositoryMetadata metadata, ArtifactRepository remoteRepository,
@@ -258,11 +269,11 @@
 
         getLogger().info( "Retrieving " + metadata );
 
-        getRemoteFile( remoteRepository, destination, remotePath, null );
+        getRemoteFile( remoteRepository, destination, remotePath, null, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
     }
 
     private void getRemoteFile( ArtifactRepository repository, File destination, String remotePath,
-                                TransferListener downloadMonitor )
+                                TransferListener downloadMonitor, String updatePolicy )
         throws TransferFailedException, ResourceDoesNotExistException, ChecksumFailedException
     {
         // TODO: better excetpions - transfer failed is not enough?
@@ -272,7 +283,8 @@
         ArtifactRepository mirror = getMirror( repository.getId() );
         if ( mirror != null )
         {
-            repository = mirror;
+            repository = new DefaultArtifactRepository( mirror.getId(), mirror.getUrl(), repository.getLayout(),
+                                                        repository.getSnapshots(), repository.getReleases() );
         }
 
         String protocol = repository.getProtocol();
@@ -351,7 +363,7 @@
                     }
                     else
                     {
-                        handleChecksumFailure( repository, e.getMessage(), e.getCause() );
+                        handleChecksumFailure( updatePolicy, e.getMessage(), e.getCause() );
                     }
                 }
                 catch ( ResourceDoesNotExistException sha1TryException )
@@ -374,13 +386,13 @@
                         }
                         else
                         {
-                            handleChecksumFailure( repository, e.getMessage(), e.getCause() );
+                            handleChecksumFailure( updatePolicy, e.getMessage(), e.getCause() );
                         }
                     }
                     catch ( ResourceDoesNotExistException md5TryException )
                     {
                         // this was a failed transfer, and we don't want to retry.
-                        handleChecksumFailure( repository, "Error retrieving checksum file for " + remotePath,
+                        handleChecksumFailure( updatePolicy, "Error retrieving checksum file for " + remotePath,
                                                md5TryException );
                     }
                 }
@@ -440,10 +452,10 @@
         }
     }
 
-    private void handleChecksumFailure( ArtifactRepository repository, String message, Throwable cause )
+    private void handleChecksumFailure( String updatePolicy, String message, Throwable cause )
         throws ChecksumFailedException
     {
-        if ( repository.failOnChecksumMismatch() )
+        if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( updatePolicy ) )
         {
             throw new ChecksumFailedException( message, cause );
         }

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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -54,7 +54,8 @@
     void putArtifactMetadata( File source, ArtifactMetadata artifactMetadata, ArtifactRepository repository )
         throws TransferFailedException;
 
-    void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination )
+    void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination,
+                              String updatePolicy )
         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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -39,7 +39,7 @@
 {
     protected static final String SNAPSHOT_VERSION_FILE = "version.txt";
 
-    protected long lastModified = 0;
+    protected long lastModified;
 
     public AbstractVersionArtifactMetadata( Artifact artifact, String filename )
     {
@@ -82,7 +82,8 @@
         }
     }
 
-    public void retrieveFromRemoteRepository( ArtifactRepository remoteRepository, WagonManager wagonManager )
+    public void retrieveFromRemoteRepository( ArtifactRepository remoteRepository, WagonManager wagonManager,
+                                              String updatePolicy )
         throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
     {
         try
@@ -91,7 +92,7 @@
             File destination = File.createTempFile( "maven-artifact", null );
             destination.deleteOnExit();
 
-            wagonManager.getArtifactMetadata( this, remoteRepository, destination );
+            wagonManager.getArtifactMetadata( this, remoteRepository, destination, updatePolicy );
 
             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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -13,7 +13,7 @@
 
     public LatestArtifactMetadata( Artifact artifact )
     {
-        super( artifact, artifact.getArtifactId() + "-" + LatestArtifactTransformation.LATEST_VERSION + "." + SNAPSHOT_VERSION_FILE );
+        super( artifact, artifact.getArtifactId() + "-" + Artifact.LATEST_VERSION + "." + SNAPSHOT_VERSION_FILE );
     }
 
     public String constructVersion()
@@ -74,7 +74,7 @@
 
     public String getBaseVersion()
     {
-        return LatestArtifactTransformation.LATEST_VERSION;
+        return Artifact.LATEST_VERSION;
     }
     
     public boolean storedInArtifactDirectory()

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java Mon Jul 25 02:51:12 2005
@@ -25,7 +25,6 @@
 import java.util.Date;
 import java.util.TimeZone;
 import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * Contains the information stored for a snapshot.
@@ -36,16 +35,14 @@
 public class SnapshotArtifactMetadata
     extends AbstractVersionArtifactMetadata
 {
-    private String timestamp = null;
+    private String timestamp;
 
-    private int buildNumber = 0;
+    private int buildNumber;
 
     private static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" );
 
     private static final String UTC_TIMESTAMP_PATTERN = "yyyyMMdd.HHmmss";
 
-    public static final Pattern VERSION_FILE_PATTERN = Pattern.compile( "^(.*)-([0-9]{8}.[0-9]{6})-([0-9]+)$" );
-
     // TODO: very quick and nasty hack to get the same timestamp across a build - not embedder friendly
     private static String sessionTimestamp = null;
 
@@ -74,7 +71,7 @@
 
     protected void setContent( String content )
     {
-        Matcher matcher = VERSION_FILE_PATTERN.matcher( content );
+        Matcher matcher = Artifact.VERSION_FILE_PATTERN.matcher( content );
         if ( matcher.matches() )
         {
             timestamp = matcher.group( 2 );
@@ -159,7 +156,7 @@
         if ( timestamp != null )
         {
             String fileTimestamp = getUtcDateFormatter().format( new Date( fileTime ) );
-            return ( fileTimestamp.compareTo( timestamp ) < 0 );
+            return fileTimestamp.compareTo( timestamp ) < 0;
         }
         return false;
     }

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java Mon Jul 25 02:51:12 2005
@@ -32,26 +32,43 @@
     extends Repository
     implements ArtifactRepository
 {
-    private final String snapshotPolicy;
-    
-    private final String checksumPolicy;
-
     private final ArtifactRepositoryLayout layout;
 
+    private ArtifactRepositoryPolicy snapshots;
+
+    private ArtifactRepositoryPolicy releases;
+
+    /**
+     * Create a local repository or a deployment repository.
+     *
+     * @param id the unique identifier of the repository
+     * @param url the URL of the repository
+     * @param layout the layout of the repository
+     */
     public DefaultArtifactRepository( String id, String url, ArtifactRepositoryLayout layout )
     {
-        this( id, url, layout, SNAPSHOT_POLICY_NEVER, CHECKSUM_POLICY_WARN );
+        this( id, url, layout, null, null );
     }
 
-    public DefaultArtifactRepository( String id, String url, ArtifactRepositoryLayout layout, String snapshotPolicy, String checksumPolicy )
+    /**
+     * Create a remote download repository.
+     *
+     * @param id the unique identifier of the repository
+     * @param url the URL of the repository
+     * @param layout the layout of the repository
+     * @param snapshots the policies to use for snapshots
+     * @param releases the policies to use for releases
+     */
+    public DefaultArtifactRepository( String id, String url, ArtifactRepositoryLayout layout,
+                                      ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases )
     {
         super( id, url );
 
         this.layout = layout;
 
-        this.snapshotPolicy = snapshotPolicy;
-        
-        this.checksumPolicy = checksumPolicy;
+        this.snapshots = snapshots;
+
+        this.releases = releases;
     }
 
     public String pathOf( Artifact artifact )
@@ -63,7 +80,7 @@
     {
         return layout.pathOfMetadata( artifactMetadata );
     }
-    
+
     public String formatAsDirectory( String directory )
     {
         return layout.formatAsDirectory( directory );
@@ -74,19 +91,18 @@
         return layout.formatAsFile( file );
     }
 
-    public String getSnapshotPolicy()
+    public ArtifactRepositoryLayout getLayout()
     {
-        return snapshotPolicy;
+        return layout;
     }
-    
-    public String getChecksumPolicy()
+
+    public ArtifactRepositoryPolicy getSnapshots()
     {
-        return checksumPolicy;
+        return snapshots;
     }
-    
-    public boolean failOnChecksumMismatch()
+
+    public ArtifactRepositoryPolicy getReleases()
     {
-        return CHECKSUM_POLICY_FAIL.equals( checksumPolicy );
+        return releases;
     }
-
-}
\ No newline at end of file
+}

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java Mon Jul 25 02:51:12 2005
@@ -25,52 +25,67 @@
     implements ArtifactRepositoryFactory
 {
     // TODO: use settings?
-    private String globalSnapshotPolicy = null;
+    private String globalUpdatePolicy;
 
-    private String globalChecksumPolicy = null;
+    private String globalChecksumPolicy;
+
+    private boolean globalEnable = true;
 
     public ArtifactRepository createArtifactRepository( String id, String url,
-                                                        ArtifactRepositoryLayout repositoryLayout,
-                                                        String snapshotPolicy, String checksumPolicy )
+                                                        ArtifactRepositoryLayout repositoryLayout )
     {
-        ArtifactRepository repo = null;
-
-        String snapPolicy = snapshotPolicy;
+        return new DefaultArtifactRepository( id, url, repositoryLayout );
+    }
 
-        if ( globalSnapshotPolicy != null )
+    public ArtifactRepository createArtifactRepository( String id, String url,
+                                                        ArtifactRepositoryLayout repositoryLayout,
+                                                        ArtifactRepositoryPolicy snapshots,
+                                                        ArtifactRepositoryPolicy releases )
+    {
+        if ( snapshots == null )
         {
-            snapPolicy = globalSnapshotPolicy;
+            snapshots = new ArtifactRepositoryPolicy();
         }
 
-        if ( snapPolicy == null )
+        if ( releases == null )
         {
-            snapPolicy = ArtifactRepository.SNAPSHOT_POLICY_NEVER;
+            releases = new ArtifactRepositoryPolicy();
         }
 
-        String csumPolicy = checksumPolicy;
+        if ( globalUpdatePolicy != null )
+        {
+            snapshots.setUpdatePolicy( globalUpdatePolicy );
+            releases.setUpdatePolicy( globalUpdatePolicy );
+        }
 
         if ( globalChecksumPolicy != null )
         {
-            csumPolicy = globalChecksumPolicy;
+            snapshots.setChecksumPolicy( globalChecksumPolicy );
+            releases.setChecksumPolicy( globalChecksumPolicy );
         }
 
-        if ( csumPolicy == null )
+        // TODO: needed, or can offline cover it?
+        if ( !globalEnable )
         {
-            csumPolicy = ArtifactRepository.CHECKSUM_POLICY_WARN;
+            snapshots.setEnabled( false );
+            releases.setEnabled( false );
         }
 
-        repo = new DefaultArtifactRepository( id, url, repositoryLayout, snapPolicy, csumPolicy );
-
-        return repo;
+        return new DefaultArtifactRepository( id, url, repositoryLayout, snapshots, releases );
     }
 
-    public void setGlobalSnapshotPolicy( String snapshotPolicy )
+    public void setGlobalUpdatePolicy( String updatePolicy )
     {
-        this.globalSnapshotPolicy = snapshotPolicy;
+        this.globalUpdatePolicy = updatePolicy;
     }
 
     public void setGlobalChecksumPolicy( String checksumPolicy )
     {
         this.globalChecksumPolicy = checksumPolicy;
+    }
+
+    public void setGlobalEnable( boolean enable )
+    {
+        this.globalEnable = enable;
     }
 }

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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
@@ -69,62 +70,74 @@
             boolean checkedUpdates = false;
             for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
             {
-                ArtifactRepository remoteRepository = (ArtifactRepository) i.next();
+                ArtifactRepository repository = (ArtifactRepository) i.next();
 
-                String snapshotPolicy = remoteRepository.getSnapshotPolicy();
-                // TODO: should be able to calculate this less often
-                boolean checkForUpdates = false;
-                if ( ArtifactRepository.SNAPSHOT_POLICY_ALWAYS.equals( snapshotPolicy ) )
+                ArtifactRepositoryPolicy policy = artifact.isSnapshot() ? repository.getSnapshots()
+                    : repository.getReleases();
+
+                if ( !policy.isEnabled() )
                 {
-                    checkForUpdates = true;
+                    getLogger().info( "Skipping disabled repository " + repository.getId() );
                 }
-                else if ( ArtifactRepository.SNAPSHOT_POLICY_DAILY.equals( snapshotPolicy ) )
+                else
                 {
-                    if ( !localMetadata.checkedSinceDate( getMidnightBoundary() ) )
+                    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 ( snapshotPolicy.startsWith( ArtifactRepository.SNAPSHOT_POLICY_INTERVAL ) )
-                {
-                    String s = snapshotPolicy.substring( ArtifactRepository.SNAPSHOT_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"
-
-                if ( checkForUpdates )
-                {
-                    getLogger().info(
-                        artifact.getArtifactId() + ": checking for updates from " + remoteRepository.getId() );
-
-                    VersionArtifactMetadata remoteMetadata;
-
-                    checkedUpdates = true;
-
-                    try
-                    {
-                        remoteMetadata = retrieveFromRemoteRepository( artifact, remoteRepository, localMetadata );
-                    }
-                    catch ( ResourceDoesNotExistException e )
-                    {
-                        getLogger().debug( "Error resolving artifact version from metadata.", e );
-
-                        continue;
-                    }
-
-                    int difference = remoteMetadata.compareTo( localMetadata );
-                    if ( difference > 0 )
+                    else if ( ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY.equals( updatePolicy ) )
                     {
-                        // remote is newer
-                        artifact.setRepository( remoteRepository );
+                        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"
+
+                    if ( checkForUpdates )
+                    {
+                        getLogger().info(
+                            artifact.getArtifactId() + ": checking for updates from " + repository.getId() );
+
+                        VersionArtifactMetadata remoteMetadata;
+
+                        checkedUpdates = true;
+
+                        try
+                        {
+                            remoteMetadata = retrieveFromRemoteRepository( artifact, repository, localMetadata,
+                                                                           updatePolicy );
+                        }
+                        catch ( ResourceDoesNotExistException e )
+                        {
+                            getLogger().debug( "Error resolving artifact version from metadata.", e );
+
+                            continue;
+                        }
+
+                        int difference = remoteMetadata.compareTo( localMetadata );
+                        if ( difference > 0 )
+                        {
+                            // remote is newer
+                            artifact.setRepository( repository );
 
-                        localMetadata = remoteMetadata;
+                            localMetadata = remoteMetadata;
+                        }
                     }
                 }
             }
@@ -174,12 +187,13 @@
 
     protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
                                                                     ArtifactRepository remoteRepository,
-                                                                    VersionArtifactMetadata localMetadata )
+                                                                    VersionArtifactMetadata localMetadata,
+                                                                    String updatePolicy )
         throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
     {
         AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
 
-        metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager );
+        metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager, updatePolicy );
 
         return metadata;
     }

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java Mon Jul 25 02:51:12 2005
@@ -27,12 +27,10 @@
 public class LatestArtifactTransformation
     extends AbstractVersionTransformation
 {
-    public static final String LATEST_VERSION = "LATEST";
-
     public void transformForResolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
-        if ( LATEST_VERSION.equals( artifact.getVersion() ) )
+        if ( Artifact.LATEST_VERSION.equals( artifact.getVersion() ) )
         {
             String version = resolveVersion( artifact, localRepository, remoteRepositories );
             if ( version != null && !version.equals( artifact.getVersion() ) )

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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -21,10 +21,10 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.SnapshotArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 
 import java.util.List;
-import java.util.regex.Matcher;
 
 /**
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
@@ -35,18 +35,10 @@
 public class SnapshotTransformation
     extends AbstractVersionTransformation
 {
-    public static final String SNAPSHOT_VERSION = "SNAPSHOT";
-
     public void transformForResolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
-        Matcher m = SnapshotArtifactMetadata.VERSION_FILE_PATTERN.matcher( artifact.getBaseVersion() );
-        if ( m.matches() )
-        {
-            // This corrects the base version, but ensure it is not resolved again
-            artifact.setBaseVersion( m.group( 1 ) + "-" + SNAPSHOT_VERSION );
-        }
-        else if ( isSnapshot( artifact ) )
+        if ( artifact.isSnapshot() )
         {
             String version = resolveVersion( artifact, localRepository, remoteRepositories );
             artifact.updateVersion( version, localRepository );
@@ -56,12 +48,7 @@
     public void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
-        Matcher m = SnapshotArtifactMetadata.VERSION_FILE_PATTERN.matcher( artifact.getBaseVersion() );
-        if ( m.matches() )
-        {
-            artifact.setBaseVersion( m.group( 1 ) + "-" + SNAPSHOT_VERSION );
-        }
-        else if ( isSnapshot( artifact ) )
+        if ( artifact.isSnapshot() )
         {
             SnapshotArtifactMetadata metadata = new SnapshotArtifactMetadata( artifact );
             metadata.storeInLocalRepository( localRepository );
@@ -71,19 +58,14 @@
     public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
         throws ArtifactMetadataRetrievalException
     {
-        Matcher m = SnapshotArtifactMetadata.VERSION_FILE_PATTERN.matcher( artifact.getBaseVersion() );
-        if ( m.matches() )
-        {
-            // This corrects the base version, but ensure it is not updated again
-            artifact.setBaseVersion( m.group( 1 ) + "-" + SNAPSHOT_VERSION );
-        }
-        else if ( isSnapshot( artifact ) )
+        if ( artifact.isSnapshot() )
         {
             SnapshotArtifactMetadata metadata;
 
             try
             {
-                metadata = (SnapshotArtifactMetadata) retrieveFromRemoteRepository( artifact, remoteRepository, null );
+                metadata = (SnapshotArtifactMetadata) retrieveFromRemoteRepository( artifact, remoteRepository, null,
+                                                                                    ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
             }
             catch ( ResourceDoesNotExistException e )
             {
@@ -97,11 +79,6 @@
 
             artifact.addMetadata( metadata );
         }
-    }
-
-    private static boolean isSnapshot( Artifact artifact )
-    {
-        return artifact.getVersion().endsWith( SNAPSHOT_VERSION );
     }
 
     protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )

Modified: maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.java Mon Jul 25 02:51:12 2005
@@ -18,6 +18,7 @@
 
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.codehaus.plexus.PlexusTestCase;
@@ -56,7 +57,7 @@
         ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
                                                                                  "legacy" );
 
-        return (ArtifactRepository) new DefaultArtifactRepository( "test", "file://" + f.getPath(), repoLayout );
+        return new DefaultArtifactRepository( "test", "file://" + f.getPath(), repoLayout );
     }
 
     protected String getRepositoryLayout()
@@ -74,7 +75,7 @@
         ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
                                                                                  "legacy" );
 
-        return (ArtifactRepository) new DefaultArtifactRepository( "local", "file://" + f.getPath(), repoLayout );
+        return new DefaultArtifactRepository( "local", "file://" + f.getPath(), repoLayout );
     }
 
     protected ArtifactRepository remoteRepository()
@@ -87,9 +88,8 @@
         ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
                                                                                  "legacy" );
 
-        return (ArtifactRepository) new DefaultArtifactRepository( "test", "file://" + f.getPath(), repoLayout,
-                                                                   ArtifactRepository.SNAPSHOT_POLICY_NEVER,
-                                                                   ArtifactRepository.CHECKSUM_POLICY_WARN );
+        return new DefaultArtifactRepository( "test", "file://" + f.getPath(), repoLayout,
+                                              new ArtifactRepositoryPolicy(), new ArtifactRepositoryPolicy() );
     }
 
     protected ArtifactRepository badRemoteRepository()
@@ -98,7 +98,7 @@
         ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
                                                                                  "legacy" );
 
-        return (ArtifactRepository) new DefaultArtifactRepository( "test", "http://foo.bar/repository", repoLayout );
+        return new DefaultArtifactRepository( "test", "http://foo.bar/repository", repoLayout );
     }
 
     protected void assertRemoteArtifactPresent( Artifact artifact )

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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -24,6 +24,8 @@
 
 import java.io.File;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * Description of an artifact.
@@ -33,6 +35,12 @@
 public interface Artifact
     extends Comparable
 {
+    String LATEST_VERSION = "LATEST";
+
+    String SNAPSHOT_VERSION = "SNAPSHOT";
+
+    Pattern VERSION_FILE_PATTERN = Pattern.compile( "^(.*)-([0-9]{8}.[0-9]{6})-([0-9]+)$" );
+
     // TODO: into scope handler
     String SCOPE_COMPILE = "compile";
 
@@ -118,4 +126,6 @@
     void setGroupId( String groupId );
 
     void setArtifactId( String artifactId );
+
+    boolean isSnapshot();
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java Mon Jul 25 02:51:12 2005
@@ -1,5 +1,21 @@
 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.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -7,11 +23,11 @@
 
 public final class ArtifactUtils
 {
-    
+
     private ArtifactUtils()
     {
     }
-    
+
     public static String versionlessKey( Artifact artifact )
     {
         return versionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
@@ -21,42 +37,44 @@
     {
         return groupId + ":" + artifactId;
     }
-    
+
     public static String artifactId( String groupId, String artifactId, String type, String version )
     {
-        return artifactId( groupId, artifactId, type, version, null, version );
+        return artifactId( groupId, artifactId, type, null, version );
     }
-    
-    public static String artifactId( String groupId, String artifactId, String type, String version, String classifier, String baseVersion )
+
+    public static String artifactId( String groupId, String artifactId, String type, String classifier,
+                                     String baseVersion )
     {
-        return groupId + ":" + artifactId + ":" + type + ( ( classifier != null ) ? ( ":" + classifier ) : ( "" ) ) + ":" + baseVersion;
+        return groupId + ":" + artifactId + ":" + type + ( classifier != null ? ":" + classifier : "" ) + ":" +
+            baseVersion;
     }
-    
+
     public static Map artifactMapByVersionlessId( Collection artifacts )
     {
         Map artifactMap = new HashMap();
-        
+
         for ( Iterator it = artifacts.iterator(); it.hasNext(); )
         {
             Artifact artifact = (Artifact) it.next();
-            
+
             artifactMap.put( versionlessKey( artifact ), artifact );
         }
-        
+
         return artifactMap;
     }
 
     public static Map artifactMapByArtifactId( Collection artifacts )
     {
         Map artifactMap = new HashMap();
-        
+
         for ( Iterator it = artifacts.iterator(); it.hasNext(); )
         {
             Artifact artifact = (Artifact) it.next();
-            
+
             artifactMap.put( artifact.getId(), artifact );
         }
-        
+
         return artifactMap;
     }
 

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=224707&r1=224706&r2=224707&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 Mon Jul 25 02:51:12 2005
@@ -27,6 +27,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.regex.Matcher;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
@@ -419,5 +420,19 @@
     public void setArtifactId( String artifactId )
     {
         this.artifactId = artifactId;
+    }
+
+    public boolean isSnapshot()
+    {
+        Matcher m = VERSION_FILE_PATTERN.matcher( getBaseVersion() );
+        if ( m.matches() )
+        {
+            setBaseVersion( m.group( 1 ) + "-" + SNAPSHOT_VERSION );
+            return true;
+        }
+        else
+        {
+            return getVersion().endsWith( SNAPSHOT_VERSION ) || getVersion().equals( LATEST_VERSION );
+        }
     }
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java Mon Jul 25 02:51:12 2005
@@ -37,11 +37,6 @@
         this.filename = filename;
     }
 
-    public void setArtifact( Artifact artifact )
-    {
-        this.artifact = artifact;
-    }
-
     public String getFilename()
     {
         return filename;
@@ -71,4 +66,5 @@
     {
         return artifact.getBaseVersion();
     }
+
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java Mon Jul 25 02:51:12 2005
@@ -46,14 +46,6 @@
     String getFilename();
 
     /**
-     * Set the associated artifact.
-     *
-     * @param artifact the artifact
-     * @todo prefer not to have this, and just modify the artifacts as they are transformed
-     */
-    void setArtifact( Artifact artifact );
-
-    /**
      * Whether the artifact metadata exists.
      * @return true or false
      */
@@ -71,4 +63,5 @@
     String getVersion();
 
     String getBaseVersion();
+
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java Mon Jul 25 02:51:12 2005
@@ -17,31 +17,17 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 
 /**
- * TODO: describe
+ * Specifies the repository used for artifact handling.
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
  */
 public interface ArtifactRepository
 {
-    String SNAPSHOT_POLICY_NEVER = "never";
-
-    String SNAPSHOT_POLICY_ALWAYS = "always";
-
-    String SNAPSHOT_POLICY_DAILY = "daily";
-
-    String SNAPSHOT_POLICY_INTERVAL = "interval";
-
-    String CHECKSUM_POLICY_FAIL = "fail";
-
-    String CHECKSUM_POLICY_WARN = "warn";
-
-    String CHECKSUM_ALGORITHM_SHA1 = "SHA-1";
-
-    String CHECKSUM_ALGORITHM_MD5 = "MD5";
 
     String pathOf( Artifact artifact );
 
@@ -55,13 +41,13 @@
 
     String getBasedir();
 
-    String getSnapshotPolicy();
-
     String getProtocol();
 
     String getId();
 
-    String getChecksumPolicy();
+    ArtifactRepositoryPolicy getSnapshots();
+
+    ArtifactRepositoryPolicy getReleases();
 
-    boolean failOnChecksumMismatch();
+    ArtifactRepositoryLayout getLayout();
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java Mon Jul 25 02:51:12 2005
@@ -23,14 +23,17 @@
  */
 public interface ArtifactRepositoryFactory
 {
+    String ROLE = ArtifactRepositoryFactory.class.getName();
 
-    public static final String ROLE = ArtifactRepositoryFactory.class.getName();
+    ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout );
 
-    public ArtifactRepository createArtifactRepository( String id, String url,
-                                                        ArtifactRepositoryLayout repositoryLayout,
-                                                        String snapshotPolicy, String checksumPolicy );
+    ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout,
+                                                 ArtifactRepositoryPolicy snapshots,
+                                                 ArtifactRepositoryPolicy releases );
+
+    void setGlobalUpdatePolicy( String snapshotPolicy );
 
-    void setGlobalSnapshotPolicy( String snapshotPolicy );
-    
     void setGlobalChecksumPolicy( String checksumPolicy );
+
+    void setGlobalEnable( boolean enable );
 }

Added: 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=224707&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java (added)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java Mon Jul 25 02:51:12 2005
@@ -0,0 +1,94 @@
+package org.apache.maven.artifact.repository;/*
+ * 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.
+ */
+
+/**
+ * Describes a set of policies for a repository to use under certain conditions.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public class ArtifactRepositoryPolicy
+{
+    public static final String UPDATE_POLICY_NEVER = "never";
+
+    public static final String UPDATE_POLICY_ALWAYS = "always";
+
+    public static final String UPDATE_POLICY_DAILY = "daily";
+
+    public static final String UPDATE_POLICY_INTERVAL = "interval";
+
+    public static final String CHECKSUM_POLICY_FAIL = "fail";
+
+    public static final String CHECKSUM_POLICY_WARN = "warn";
+
+    private boolean enabled;
+
+    private String updatePolicy;
+
+    private String checksumPolicy;
+
+    public ArtifactRepositoryPolicy()
+    {
+        this( true, null, null );
+    }
+
+    public ArtifactRepositoryPolicy( boolean enabled, String updatePolicy, String checksumPolicy )
+    {
+        this.enabled = enabled;
+
+        if ( updatePolicy == null )
+        {
+            updatePolicy = UPDATE_POLICY_DAILY;
+        }
+        this.updatePolicy = updatePolicy;
+
+        if ( checksumPolicy == null )
+        {
+            checksumPolicy = CHECKSUM_POLICY_WARN;
+        }
+        this.checksumPolicy = checksumPolicy;
+    }
+
+    public void setEnabled( boolean enabled )
+    {
+        this.enabled = enabled;
+    }
+
+    public void setUpdatePolicy( String updatePolicy )
+    {
+        this.updatePolicy = updatePolicy;
+    }
+
+    public void setChecksumPolicy( String checksumPolicy )
+    {
+        this.checksumPolicy = checksumPolicy;
+    }
+
+    public boolean isEnabled()
+    {
+        return enabled;
+    }
+
+    public String getUpdatePolicy()
+    {
+        return updatePolicy;
+    }
+
+    public String getChecksumPolicy()
+    {
+        return checksumPolicy;
+    }
+}

Propchange: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java Mon Jul 25 02:51:12 2005
@@ -29,24 +29,24 @@
  */
 public interface ArtifactTransformation
 {
-    static String ROLE = ArtifactTransformation.class.getName();
+    String ROLE = ArtifactTransformation.class.getName();
 
     /**
      * Take in a artifact and return the transformed artifact for locating in the remote repository. If no
      * transformation has occured the original artifact is returned.
      *
-     * @param artifact           Artifact to be transformed.
+     * @param artifact Artifact to be transformed.
      * @param remoteRepositories the repositories to check
-     * @param localRepository    the local repository
+     * @param localRepository the local repository
      */
-    public void transformForResolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
+    void transformForResolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException;
 
     /**
      * Take in a artifact and return the transformed artifact for locating in the local repository. If no
      * transformation has occured the original artifact is returned.
      *
-     * @param artifact        Artifact to be transformed.
+     * @param artifact Artifact to be transformed.
      * @param localRepository the local repository it will be stored in
      */
     void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
@@ -56,7 +56,7 @@
      * Take in a artifact and return the transformed artifact for distributing toa remote repository. If no
      * transformation has occured the original artifact is returned.
      *
-     * @param artifact         Artifact to be transformed.
+     * @param artifact Artifact to be transformed.
      * @param remoteRepository the repository to deploy to
      */
     void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java Mon Jul 25 02:51:12 2005
@@ -28,6 +28,7 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -401,27 +402,26 @@
         {
             settings.setOffline( true );
 
-            // TODO: this will still check to download if the artifact does not exist locally, instead of failing as it should in offline mode
-            artifactRepositoryFactory.setGlobalSnapshotPolicy( ArtifactRepository.SNAPSHOT_POLICY_NEVER );
+            artifactRepositoryFactory.setGlobalEnable( false );
             snapshotPolicySet = true;
         }
 
         if ( !snapshotPolicySet && commandLine.hasOption( CLIManager.UPDATE_SNAPSHOTS ) )
         {
-            artifactRepositoryFactory.setGlobalSnapshotPolicy( ArtifactRepository.SNAPSHOT_POLICY_ALWAYS );
+            artifactRepositoryFactory.setGlobalUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
         }
 
         if ( commandLine.hasOption( CLIManager.CHECKSUM_FAILURE_POLICY ) )
         {
             System.out.println( "+ Enabling strict checksum verification on all artifact downloads." );
 
-            artifactRepositoryFactory.setGlobalChecksumPolicy( ArtifactRepository.CHECKSUM_POLICY_FAIL );
+            artifactRepositoryFactory.setGlobalChecksumPolicy( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL );
         }
         else if ( commandLine.hasOption( CLIManager.CHECKSUM_WARNING_POLICY ) )
         {
             System.out.println( "+ Disabling strict checksum verification on all artifact downloads." );
 
-            artifactRepositoryFactory.setGlobalChecksumPolicy( ArtifactRepository.CHECKSUM_POLICY_WARN );
+            artifactRepositoryFactory.setGlobalChecksumPolicy( ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
         }
 
         return localRepository;

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java Mon Jul 25 02:51:12 2005
@@ -158,7 +158,7 @@
         {
             // 1. resolve the version to be used
             version = resolveMetaVersion( groupId, artifactId, project.getPluginArtifactRepositories(), localRepository,
-                                          LatestArtifactTransformation.LATEST_VERSION );
+                                          Artifact.LATEST_VERSION );
 
             if ( version != null )
             {

Modified: maven/components/trunk/maven-model/maven.mdo
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Mon Jul 25 02:51:12 2005
@@ -28,10 +28,8 @@
     <p>This is a reference for the Maven project descriptor used in Maven.</p>
     <p>An XSD is available at:</p>
     <ul>
-      <li><a href="http://maven.apache.org/maven-v3_0_0.xsd">http://maven.apache.org/maven-v3_0_0.xsd</a> for Maven 1.1
-.</li>
-      <li><a href="http://maven.apache.org/maven-v4_0_0.xsd">http://maven.apache.org/maven-v4_0_0.xsd</a> for Maven 2.0
-.</li>
+      <li><a href="http://maven.apache.org/maven-v3_0_0.xsd">http://maven.apache.org/maven-v3_0_0.xsd</a> for Maven 1.1.</li>
+      <li><a href="http://maven.apache.org/maven-v4_0_0.xsd">http://maven.apache.org/maven-v4_0_0.xsd</a> for Maven 2.0.</li>
     </ul>
   ]]></description>
   <defaults>
@@ -1411,11 +1409,21 @@
           <name>repository</name>
           <version>4.0.0</version>
           <description><![CDATA[
-            Information needed for deploying to remote repository artifacts 
+            Information needed for deploying to remote repository artifacts
             generated by the project
           ]]></description>
           <association>
-            <type>Repository</type>
+            <type>RepositoryBase</type>
+          </association>
+        </field>
+        <field>
+          <name>snapshotRepository</name>
+          <version>4.0.0</version>
+          <description>
+            Where to deploy snapshots of artifacts to. If not given, it defaults to the repository.
+          </description>
+          <association>
+            <type>RepositoryBase</type>
           </association>
         </field>
         <field>
@@ -1974,7 +1982,7 @@
     </class>
 
     <class>
-      <name>Repository</name>
+      <name>RepositoryBase</name>
       <version>4.0.0</version>
       <description><![CDATA[
          Repository contains the information needed
@@ -2006,16 +2014,6 @@
           <type>String</type>
         </field>
         <field>
-          <name>snapshotPolicy</name>
-          <version>4.0.0</version>
-          <description>
-            The policy for downloading snapshots - can be "always", "daily" (default), "interval:XXX" (in minutes) or
-            "never".
-          </description>
-          <type>String</type>
-          <defaultValue>daily</defaultValue>
-        </field>
-        <field>
           <name>layout</name>
           <version>4.0.0</version>
           <description>The type of layout this repository uses for locating and storing artifacts - can be "legacy" or
@@ -2023,14 +2021,6 @@
           <type>String</type>
           <defaultValue>default</defaultValue>
         </field>
-        <field>
-          <name>checksumPolicy</name>
-          <version>4.0.0</version>
-          <description>What to do when verification of an artifact checksum fails - warn, fail, etc. Valid values are
-            "fail" or "warn"</description>
-          <type>String</type>
-          <defaultValue>warn</defaultValue>
-        </field>
       </fields>
       <codeSegments>
         <codeSegment>
@@ -2038,7 +2028,7 @@
           <code><![CDATA[
             public boolean equals( Object obj )
             {
-                Repository other =  ( Repository ) obj;
+                RepositoryBase other =  (RepositoryBase) obj;
 
                 boolean retValue = false;
 
@@ -2053,6 +2043,95 @@
         </codeSegment>
       </codeSegments>
     </class>
+
+    <class>
+      <name>Repository</name>
+      <superClass>RepositoryBase</superClass>
+      <version>4.0.0</version>
+      <description>
+        Repository contains the information needed for establishing connections with remote repoistory
+      </description>
+      <fields>
+        <!-- TODO: deprecated -->
+        <field>
+          <name>snapshotPolicy</name>
+          <version>4.0.0</version>
+          <description>
+            The policy for downloading snapshots - can be "always", "daily" (default), "interval:XXX" (in minutes) or
+            "never" (repository is not checked, even if the snapshot is not present locally).
+          </description>
+          <type>String</type>
+        </field>
+        <!-- TODO: deprecated -->
+        <field>
+          <name>checksumPolicy</name>
+          <version>4.0.0</version>
+          <description>What to do when verification of an artifact checksum fails - warn, fail, etc. Valid values are
+            "fail" or "warn"</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>releases</name>
+          <version>4.0.0</version>
+          <description>How to handle downloading of releases from this repository</description>
+          <association>
+            <type>RepositoryPolicy</type>
+          </association>
+        </field>
+        <field>
+          <name>snapshots</name>
+          <version>4.0.0</version>
+          <description>How to handle downloading of snapshots from this repository</description>
+          <association>
+            <type>RepositoryPolicy</type>
+          </association>
+        </field>
+      </fields>
+      <!-- prevent modello generation of an incorrect equals method. Could be avoided by using <identity/> tags to mark ID as the only identity field -->
+      <codeSegments>
+        <codeSegment>
+          <version>4.0.0</version>
+          <code><![CDATA[
+            public boolean equals( Object obj )
+            {
+                return super.equals( obj );
+            }
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
+    </class>
+
+    <class>
+      <name>RepositoryPolicy</name>
+      <version>4.0.0</version>
+      <description>Download policy</description>
+      <fields>
+        <field>
+          <name>enabled</name>
+          <version>4.0.0</version>
+          <description>Whether to use this repository for downloading this type of artifact</description>
+          <type>boolean</type>
+          <defaultValue>true</defaultValue>
+        </field>
+        <field>
+          <name>updatePolicy</name>
+          <version>4.0.0</version>
+          <description>
+            The frequency for downloading updates - can be "always", "daily" (default), "interval:XXX" (in minutes) or
+            "never" (only if it doesn't exist locally).
+          </description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>checksumPolicy</name>
+          <version>4.0.0</version>
+          <description>What to do when verification of an artifact checksum fails - warn, fail, etc. Valid values are
+            "fail" or "warn"</description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+
     <!--@todo find better solution for management of site deployments -->
     <class>
       <name>Site</name>
@@ -2390,7 +2469,7 @@
         <field>
           <name>activation</name>
           <version>4.0.0</version>
-          <description><![CDATA[The conditional logic which will automatically 
+          <description><![CDATA[The conditional logic which will automatically
             trigger the inclusion of this profile.]]></description>
           <association>
             <type>Activation</type>

Modified: maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java Mon Jul 25 02:51:12 2005
@@ -32,6 +32,7 @@
 
 /**
  * Deploys an artifact to remote repository.
+ *
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @author <a href="mailto:jdcasey@apache.org">John Casey (refactoring only)</a>
  * @version $Id$
@@ -105,17 +106,17 @@
     private List attachedArtifacts;
 
     /**
-     * @parameter expression="${updateReleaseInfo}"
+     * @parameter expression="${updateReleaseInfo}" default-value="false"
      */
-    private boolean updateReleaseInfo = false;
+    private boolean updateReleaseInfo;
 
     public void execute()
         throws MojoExecutionException
     {
         if ( deploymentRepository == null )
         {
-            String msg = "Deployment failed: repository element was not specified in the pom inside"
-                + " distributionManagement element";
+            String msg = "Deployment failed: repository element was not specified in the pom inside" +
+                " distributionManagement element";
             throw new MojoExecutionException( msg );
         }
 
@@ -151,7 +152,7 @@
                 Artifact attached = (Artifact) i.next();
                 deployer.deploy( attached.getFile(), attached, deploymentRepository, localRepository );
             }
-       }
+        }
         catch ( ArtifactDeploymentException e )
         {
             // TODO: deployment exception that does not give a trace

Modified: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java?rev=224707&r1=224706&r2=224707&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java Mon Jul 25 02:51:12 2005
@@ -34,12 +34,13 @@
         throws MojoExecutionException
     {
         RepositoryMetadata metadata = new PluginMappingMetadata( getProject().getGroupId() );
-        
+
         ArtifactRepository distributionRepository = getProject().getDistributionManagementArtifactRepository();
-        
+
         if ( distributionRepository == null )
         {
-            throw new MojoExecutionException( "No distribution repository specified. You must specify a <distributionManagement/> section with a valid <repository/> specified within." );
+            throw new MojoExecutionException(
+                "No distribution repository specified. You must specify a <distributionManagement/> section with a valid <repository/> specified within." );
         }
 
         try



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org