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/09/06 01:13:46 UTC

svn commit: r278881 [1/2] - in /maven/components/trunk: maven-artifact-ant/src/main/resources/META-INF/plexus/ maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/ maven-artifact-manager/src/main/java/org/apache/maven/artifact/manag...

Author: brett
Date: Mon Sep  5 16:12:55 2005
New Revision: 278881

URL: http://svn.apache.org/viewcvs?rev=278881&view=rev
Log:
PR: MNG-613
changes versioning to use repository metadata

Added:
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LegacyArtifactMetadata.java   (with props)
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java   (with props)
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java   (with props)
Removed:
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java
Modified:
    maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml
    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/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/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/metadata/DefaultRepositoryMetadataManager.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.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/DefaultArtifactTransformationManager.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/ReleaseArtifactTransformation.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
    maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DependencyResolutionRequiredException.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.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/metadata/RepositoryMetadataManager.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java
    maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
    maven/components/trunk/maven-mboot2/src/main/java/download/ArtifactDownloader.java
    maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java
    maven/components/trunk/maven-plugins/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java
    maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java

Modified: maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml Mon Sep  5 16:12:55 2005
@@ -154,6 +154,9 @@
         <requirement>
           <role>org.apache.maven.artifact.manager.WagonManager</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
+        </requirement>
       </requirements>
     </component>
 
@@ -165,6 +168,9 @@
         <requirement>
           <role>org.apache.maven.artifact.manager.WagonManager</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
+        </requirement>
       </requirements>
     </component>
 
@@ -175,6 +181,9 @@
       <requirements>
         <requirement>
           <role>org.apache.maven.artifact.manager.WagonManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
         </requirement>
       </requirements>
     </component>

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -56,7 +56,7 @@
     {
         try
         {
-            transformationManager.transformForDeployment( artifact, deploymentRepository );
+            transformationManager.transformForDeployment( artifact, deploymentRepository, localRepository );
 
             // Copy the original file to the new one if it was transformed
             File artifactFile = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -215,7 +215,8 @@
                 // This one we will eat when looking through remote repositories
                 // because we want to cycle through them all before squawking.
 
-                getLogger().warn( "Unable to get resource from repository " + repository.getId() + " (" + repository.getUrl() + ")" );
+                getLogger().warn(
+                    "Unable to get resource from repository " + repository.getId() + " (" + repository.getUrl() + ")" );
             }
         }
 
@@ -236,7 +237,7 @@
         {
             getLogger().debug( "Trying repository " + repository.getId() );
             getRemoteFile( repository, artifact.getFile(), remotePath, downloadMonitor, policy.getChecksumPolicy() );
-            getLogger().debug( "  Artifact resolved");
+            getLogger().debug( "  Artifact resolved" );
 
             artifact.setResolved( true );
         }
@@ -252,7 +253,6 @@
     {
         String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata );
 
-        getLogger().info( "Retrieving " + metadata );
         getRemoteFile( repository, destination, remotePath, null, checksumPolicy );
     }
 

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -35,7 +35,7 @@
  */
 public abstract class AbstractVersionArtifactMetadata
     extends AbstractArtifactMetadata
-    implements VersionArtifactMetadata
+    implements LegacyArtifactMetadata
 {
     protected static final String SNAPSHOT_VERSION_FILE = "version.txt";
 
@@ -46,13 +46,7 @@
         super( artifact );
     }
 
-    protected File getLocalRepositoryLocation( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
-    {
-        return new File( localRepository.getBasedir(),
-                         localRepository.pathOfLocalRepositoryMetadata( this, remoteRepository ) );
-    }
-
-    private void readFromFile( File file )
+    public void readFromFile( File file )
         throws IOException
     {
         setContent( FileUtils.fileRead( file ) );
@@ -61,26 +55,6 @@
 
     protected abstract void setContent( String content );
 
-    public boolean exists()
-    {
-        return lastModified > 0;
-    }
-
-    public Date getLastModified()
-    {
-        return new Date( lastModified );
-    }
-
-    public void readFromLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
-        throws IOException
-    {
-        File f = getLocalRepositoryLocation( localRepository, remoteRepository );
-        if ( f.exists() )
-        {
-            readFromFile( f );
-        }
-    }
-
     public void retrieveFromRemoteRepository( ArtifactRepository remoteRepository, WagonManager wagonManager,
                                               String checksumPolicy )
         throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
@@ -105,7 +79,7 @@
         }
     }
 
-    public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
+    public void storeInLocalRepository( ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
         String version = constructVersion();
@@ -113,11 +87,10 @@
         {
             try
             {
-                String path = getLocalRepositoryLocation( localRepository, remoteRepository ).getPath();
-                File file = new File( path );
-                // TODO: this should be centralised before the resolution of the artifact
+                File file = new File( localRepository.getBasedir(),
+                                      localRepository.pathOfLocalRepositoryMetadata( this, null ) );
                 file.getParentFile().mkdirs();
-                FileUtils.fileWrite( path, version );
+                FileUtils.fileWrite( file.getPath(), version );
                 lastModified = file.lastModified();
             }
             catch ( IOException e )
@@ -125,5 +98,16 @@
                 throw new ArtifactMetadataRetrievalException( "Unable to retrieve metadata", e );
             }
         }
+    }
+
+    public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
+        throws ArtifactMetadataRetrievalException
+    {
+        throw new IllegalStateException( "This code should no longer be called" );
+    }
+
+    public Date getLastModified()
+    {
+        return new Date( lastModified );
     }
 }

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -55,7 +55,6 @@
     {
         LatestArtifactMetadata metadata = (LatestArtifactMetadata) o;
 
-        // TODO: we need some more complicated version comparison
         if ( version == null )
         {
             if ( metadata.version == null )

Added: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LegacyArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LegacyArtifactMetadata.java?rev=278881&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LegacyArtifactMetadata.java (added)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LegacyArtifactMetadata.java Mon Sep  5 16:12:55 2005
@@ -0,0 +1,50 @@
+package org.apache.maven.artifact.metadata;
+
+import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+/*
+ * 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.
+ */
+
+/**
+ * Methods used by the old artifact metadata. To be removed in beta-2.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public interface LegacyArtifactMetadata
+    extends ArtifactMetadata, Comparable
+{
+    void readFromFile( File file )
+        throws IOException;
+
+    void retrieveFromRemoteRepository( ArtifactRepository repository, WagonManager wagonManager, String checksumPolicy )
+        throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException;
+
+    void storeInLocalRepository( ArtifactRepository localRepository )
+        throws ArtifactMetadataRetrievalException;
+
+    boolean newerThanFile( File file );
+
+    String constructVersion();
+
+    Date getLastModified();
+}

Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LegacyArtifactMetadata.java
------------------------------------------------------------------------------
    svn:eol-style = native

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

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=278881&r1=278880&r2=278881&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 Mon Sep  5 16:12:55 2005
@@ -30,7 +30,6 @@
  */
 public class ReleaseArtifactMetadata
     extends AbstractVersionArtifactMetadata
-    implements Comparable
 {
     private String version;
 
@@ -63,7 +62,6 @@
     {
         ReleaseArtifactMetadata metadata = (ReleaseArtifactMetadata) o;
 
-        // TODO: we need some more complicated version comparison
         if ( version == null )
         {
             if ( metadata.version == null )

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -97,12 +97,6 @@
         }
     }
 
-    public void setVersion( String timestamp, int buildNumber )
-    {
-        this.timestamp = timestamp;
-        this.buildNumber = buildNumber;
-    }
-
     public String getTimestamp()
     {
         return timestamp;
@@ -123,9 +117,6 @@
     public int compareTo( Object o )
     {
         SnapshotArtifactMetadata metadata = (SnapshotArtifactMetadata) o;
-
-        // TODO: probably shouldn't test timestamp - except that it may be used do differentiate for a build number of 0
-        //  in the local repository. check, then remove from here and just compare the build numbers
 
         if ( buildNumber > metadata.buildNumber )
         {

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -66,7 +66,19 @@
 
         this.layout = layout;
 
+        if ( snapshots == null )
+        {
+            snapshots = new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
+                                                      ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
+        }
+
         this.snapshots = snapshots;
+
+        if ( releases == null )
+        {
+            releases = new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
+                                                     ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
+        }
 
         this.releases = releases;
     }

Added: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java?rev=278881&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java (added)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java Mon Sep  5 16:12:55 2005
@@ -0,0 +1,60 @@
+package org.apache.maven.artifact.repository.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.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import java.io.IOException;
+
+/**
+ * Shared methods of the repository metadata handling.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public abstract class AbstractRepositoryMetadata
+    implements ArtifactMetadata
+{
+    public String getRemoteFilename()
+    {
+        return "maven-metadata.xml";
+    }
+
+    public String getLocalFilename( ArtifactRepository repository )
+    {
+        return "maven-metadata-" + repository.getKey() + ".xml";
+    }
+
+    public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
+        throws ArtifactMetadataRetrievalException
+    {
+        try
+        {
+            updateRepositoryMetadata( localRepository, remoteRepository );
+        }
+        catch ( IOException e )
+        {
+            throw new ArtifactMetadataRetrievalException( "Error updating group repository metadata", e );
+        }
+    }
+
+    protected abstract void updateRepositoryMetadata( ArtifactRepository localRepository,
+                                                      ArtifactRepository remoteRepository )
+        throws IOException;
+}

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

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

Added: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java?rev=278881&view=auto
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java (added)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/ArtifactRepositoryMetadata.java Mon Sep  5 16:12:55 2005
@@ -0,0 +1,220 @@
+package org.apache.maven.artifact.repository.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.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * Metadata for the artifact directory of the repository.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ * @todo split instantiation (versioning, plugin mappings) from definition
+ */
+public class ArtifactRepositoryMetadata
+    extends AbstractRepositoryMetadata
+{
+    private Versioning versioning;
+
+    private Artifact artifact;
+
+    public ArtifactRepositoryMetadata( Artifact artifact )
+    {
+        this.artifact = artifact;
+    }
+
+    public ArtifactRepositoryMetadata( Artifact artifact, Versioning versioning )
+    {
+        this.versioning = versioning;
+        this.artifact = artifact;
+    }
+
+    public String toString()
+    {
+        return "repository metadata for artifact: \'" + artifact + "\'";
+    }
+
+    public boolean storedInGroupDirectory()
+    {
+        return false;
+    }
+
+    public boolean storedInArtifactVersionDirectory()
+    {
+        return false;
+    }
+
+    public String getGroupId()
+    {
+        return artifact.getGroupId();
+    }
+
+    public String getArtifactId()
+    {
+        return artifact.getArtifactId();
+    }
+
+    public String getBaseVersion()
+    {
+        return artifact.getBaseVersion();
+    }
+
+    protected void updateRepositoryMetadata( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
+        throws IOException
+    {
+        MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
+
+        Metadata metadata = null;
+
+        File metadataFile = new File( localRepository.getBasedir(),
+                                      localRepository.pathOfLocalRepositoryMetadata( this, remoteRepository ) );
+
+        if ( metadataFile.exists() )
+        {
+            Reader reader = null;
+
+            try
+            {
+                reader = new FileReader( metadataFile );
+
+                metadata = mappingReader.read( reader );
+            }
+            catch ( FileNotFoundException e )
+            {
+                // TODO: Log a warning
+            }
+            catch ( IOException e )
+            {
+                // TODO: Log a warning
+            }
+            catch ( XmlPullParserException e )
+            {
+                // TODO: Log a warning
+            }
+            finally
+            {
+                IOUtil.close( reader );
+            }
+        }
+
+        boolean changed = false;
+
+        // If file could not be found or was not valid, start from scratch
+        if ( metadata == null )
+        {
+            metadata = new Metadata();
+
+            metadata.setGroupId( artifact.getGroupId() );
+            metadata.setArtifactId( artifact.getArtifactId() );
+            changed = true;
+        }
+
+        if ( versioning != null )
+        {
+            Versioning v = metadata.getVersioning();
+            if ( v != null )
+            {
+                // TODO: merge versioning (reuse code from transformation)
+                Snapshot s = v.getSnapshot();
+                Snapshot snapshot = versioning.getSnapshot();
+                if ( snapshot != null )
+                {
+                    if ( s == null )
+                    {
+                        v.setSnapshot( snapshot );
+                        changed = true;
+                    }
+                    else if ( s.getTimestamp() != null && !s.getTimestamp().equals( snapshot.getTimestamp() ) )
+                    {
+                        s.setTimestamp( snapshot.getTimestamp() );
+                        changed = true;
+                    }
+                    else if ( s.getBuildNumber() != snapshot.getBuildNumber() )
+                    {
+                        s.setBuildNumber( snapshot.getBuildNumber() );
+                        changed = true;
+                    }
+                }
+            }
+            else
+            {
+                metadata.setVersioning( versioning );
+                changed = true;
+            }
+        }
+
+        if ( changed )
+        {
+            Writer writer = null;
+            try
+            {
+                metadataFile.getParentFile().mkdirs();
+                writer = new FileWriter( metadataFile );
+
+                MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
+
+                mappingWriter.write( writer, metadata );
+            }
+            finally
+            {
+                IOUtil.close( writer );
+            }
+        }
+        else
+        {
+            metadataFile.setLastModified( System.currentTimeMillis() );
+        }
+    }
+
+    public Object getKey()
+    {
+        return artifact.getGroupId() + ":" + artifact.getArtifactId();
+    }
+
+    public boolean isSnapshot()
+    {
+        return artifact.isSnapshot();
+    }
+
+    public Snapshot getSnapshot()
+    {
+        return versioning != null ? versioning.getSnapshot() : null;
+    }
+
+    public String getLatestVersion()
+    {
+        return versioning.getLatest();
+    }
+
+    public String getReleaseVersion()
+    {
+        return versioning.getRelease();
+    }
+}

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

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

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Mon Sep  5 16:12:55 2005
@@ -57,7 +57,7 @@
                 ArtifactRepositoryPolicy policy = metadata.isSnapshot() ? repository.getSnapshots()
                     : repository.getReleases();
 
-                if ( policy == null || !policy.isEnabled() )
+                if ( !policy.isEnabled() )
                 {
                     getLogger().debug( "Skipping disabled repository " + repository.getId() );
                 }
@@ -66,42 +66,62 @@
                     File file = new File( localRepository.getBasedir(),
                                           localRepository.pathOfLocalRepositoryMetadata( metadata, repository ) );
 
-                    // TODO: should be able to calculate this less often
                     boolean checkForUpdates = policy.checkOutOfDate( new Date( file.lastModified() ) );
 
                     if ( checkForUpdates )
                     {
-
                         getLogger().info( metadata.getKey() + ": checking for updates from " + repository.getId() );
 
-                        try
-                        {
-                            wagonManager.getArtifactMetadata( metadata, repository, file, policy.getChecksumPolicy() );
-
-                            // TODO: ???
-//                            metadata.setRepository( repository );
-
-                            // touch file so that this is not checked again until interval has passed
-                            if ( file.exists() )
-                            {
-                                file.setLastModified( System.currentTimeMillis() );
-                            }
-                        }
-                        catch ( ResourceDoesNotExistException e )
-                        {
-                            getLogger().info( "Repository metadata " + metadata +
-                                " could not be found on repository: " + repository.getId() );
-                            getLogger().debug( "Cause", e );
-                        }
-                        catch ( TransferFailedException e )
-                        {
-                            throw new ArtifactMetadataRetrievalException( "Unable to retrieve metadata", e );
-                        }
+                        resolveAlways( metadata, repository, file, policy.getChecksumPolicy() );
+                    }
+
+                    // touch file so that this is not checked again until interval has passed
+                    if ( file.exists() )
+                    {
+                        file.setLastModified( System.currentTimeMillis() );
+                    }
+                    else
+                    {
+                        metadata.storeInLocalRepository( localRepository, repository );
                     }
                 }
             }
 
             cachedMetadata.add( metadata.getKey() );
+        }
+    }
+
+    public void resolveAlways( ArtifactMetadata metadata, ArtifactRepository localRepository,
+                               ArtifactRepository remoteRepository )
+        throws ArtifactMetadataRetrievalException
+    {
+        File file = new File( localRepository.getBasedir(),
+                              localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) );
+
+        resolveAlways( metadata, localRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+    }
+
+    private void resolveAlways( ArtifactMetadata metadata, ArtifactRepository repository, File file,
+                                String checksumPolicy )
+        throws ArtifactMetadataRetrievalException
+    {
+        try
+        {
+            wagonManager.getArtifactMetadata( metadata, repository, file, checksumPolicy );
+        }
+        catch ( ResourceDoesNotExistException e )
+        {
+            getLogger().debug( metadata + " could not be found on repository: " + repository.getId() );
+
+            // delete the local copy so the old details aren't used.
+            if ( file.exists() )
+            {
+                file.delete();
+            }
+        }
+        catch ( TransferFailedException e )
+        {
+            throw new ArtifactMetadataRetrievalException( "Unable to retrieve metadata", e );
         }
     }
 

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java Mon Sep  5 16:12:55 2005
@@ -16,8 +16,6 @@
  * limitations under the License.
  */
 
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
@@ -42,7 +40,7 @@
  * @version $Id$
  */
 public class GroupRepositoryMetadata
-    implements ArtifactMetadata
+    extends AbstractRepositoryMetadata
 {
     private final String groupId;
 
@@ -58,32 +56,6 @@
         return "repository metadata for group: \'" + groupId + "\'";
     }
 
-    public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
-        throws ArtifactMetadataRetrievalException
-    {
-        if ( !pluginMappings.isEmpty() )
-        {
-            try
-            {
-                updateRepositoryMetadata( localRepository, remoteRepository );
-            }
-            catch ( IOException e )
-            {
-                throw new ArtifactMetadataRetrievalException( "Error updating group repository metadata", e );
-            }
-        }
-    }
-
-    public String getRemoteFilename()
-    {
-        return "maven-metadata.xml";
-    }
-
-    public String getLocalFilename( ArtifactRepository repository )
-    {
-        return "maven-metadata-" + repository.getKey() + ".xml";
-    }
-
     public boolean storedInGroupDirectory()
     {
         return true;
@@ -114,7 +86,7 @@
         pluginMappings.put( goalPrefix, artifactId );
     }
 
-    private void updateRepositoryMetadata( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
+    protected void updateRepositoryMetadata( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
         throws IOException
     {
         MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
@@ -152,12 +124,16 @@
             }
         }
 
+        boolean changed = false;
+
         // If file could not be found or was not valid, start from scratch
         if ( pluginMap == null )
         {
             pluginMap = new Metadata();
 
             pluginMap.setGroupId( groupId );
+
+            changed = true;
         }
 
         for ( Iterator i = pluginMappings.keySet().iterator(); i.hasNext(); )
@@ -187,21 +163,30 @@
                 mappedPlugin.setPrefix( prefix );
 
                 pluginMap.addPlugin( mappedPlugin );
+
+                changed = true;
             }
         }
 
-        Writer writer = null;
-        try
+        if ( changed )
         {
-            writer = new FileWriter( metadataFile );
+            Writer writer = null;
+            try
+            {
+                writer = new FileWriter( metadataFile );
 
-            MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
+                MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
 
-            mappingWriter.write( writer, pluginMap );
+                mappingWriter.write( writer, pluginMap );
+            }
+            finally
+            {
+                IOUtil.close( writer );
+            }
         }
-        finally
+        else
         {
-            IOUtil.close( writer );
+            metadataFile.setLastModified( System.currentTimeMillis() );
         }
     }
 

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=278881&r1=278880&r2=278881&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 Mon Sep  5 16:12:55 2005
@@ -131,15 +131,6 @@
                                 "Failed to resolve artifact, possibly due to a repository list that is not appropriately equipped for this artifact's metadata.",
                                 artifact, remoteRepositories );
                         }
-
-/* TODO: pretty sure this can be removed. No metadata on resolved artifacts
-                        // must be after the artifact is downloaded
-                        for ( Iterator i = artifact.getMetadataList().iterator(); i.hasNext(); )
-                        {
-                            ArtifactMetadata metadata = (ArtifactMetadata) i.next();
-                            metadata.storeInLocalRepository( localRepository );
-                        }
-*/
                     }
                     catch ( ResourceDoesNotExistException e )
                     {

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -18,16 +18,27 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.manager.WagonManager;
-import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
-import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
+import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
+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.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
 import java.io.IOException;
+import java.io.Reader;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -38,33 +49,82 @@
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
+ * @todo try and refactor to remove abstract methods - not particular happy about current design
  */
 public abstract class AbstractVersionTransformation
     extends AbstractLogEnabled
     implements ArtifactTransformation
 {
+    protected RepositoryMetadataManager repositoryMetadataManager;
+
     protected WagonManager wagonManager;
 
     /**
-     * @todo very primitve. Probably we can cache artifacts themselves in a central location, as well as reset the flag over time in a long running process.
+     * @todo remove in beta-2 - used for legacy handling
      */
     private static Set resolvedArtifactCache = new HashSet();
 
     protected String resolveVersion( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
-        ArtifactMetadata localMetadata = resolveMetadata( artifact, localRepository, remoteRepositories );
+        // TODO: can we improve on this?
+        ArtifactMetadata metadata = new ArtifactRepositoryMetadata( artifact );
 
-        String version;
+        repositoryMetadataManager.resolve( metadata, remoteRepositories, localRepository );
 
-        if ( localMetadata == null )
+/*
+        // TODO: can this go directly into the manager? At least share with DefaultPluginMappingManager
+        // TODO: use this, cache the output, select from that list instead of the next set
+        Versioning versioning = new Versioning();
+        for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
         {
-            version = artifact.getVersion();
+            ArtifactRepository repository = (ArtifactRepository) i.next();
+
+            mergeVersioning( versioning, loadVersioningInformation( metadata, repository, localRepository ) );
         }
-        else
+        mergeVersioning( versioning, loadVersioningInformation( metadata, localRepository, localRepository ) );
+
+        String version = selectVersion( versioning, artifact.getVersion() );
+*/
+        ArtifactRepositoryMetadata localMetadata = null;
+        for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
         {
-            VersionArtifactMetadata versionMetadata = (VersionArtifactMetadata) localMetadata;
-            version = versionMetadata.constructVersion();
+            ArtifactRepository repository = (ArtifactRepository) i.next();
+
+            localMetadata = loadVersioningInformation( metadata, repository, localRepository, artifact );
+            if ( localMetadata != null )
+            {
+                artifact.setRepository( repository );
+                // TODO: merge instead (see above)
+                break;
+            }
+        }
+        ArtifactRepositoryMetadata m = loadVersioningInformation( metadata, localRepository, localRepository,
+                                                                  artifact );
+        if ( m != null )
+        {
+            localMetadata = m;
+            // TODO: figure out way to avoid duplicated message
+            if ( getLogger().isDebugEnabled() /*&& !alreadyResolved*/ )
+            {
+                // Locally installed file is newer, don't use the resolved version
+                getLogger().debug( artifact.getArtifactId() + ": using locally installed snapshot" );
+            }
+        }
+
+        String version = null;
+        if ( localMetadata != null )
+        {
+            version = constructVersion( localMetadata );
+        }
+
+        if ( version == null )
+        {
+            version = resolveLegacyVersion( artifact, localRepository, remoteRepositories );
+            if ( version == null )
+            {
+                version = artifact.getVersion();
+            }
         }
 
         // TODO: also do this logging for other metadata?
@@ -87,28 +147,95 @@
         return version;
     }
 
-    /**
-     * @param artifact
-     * @param localRepository
-     * @param remoteRepositories
-     * @return
-     * @throws ArtifactMetadataRetrievalException
-     * @todo share with DefaultRepositoryMetadataManager
-     */
-    private ArtifactMetadata resolveMetadata( Artifact artifact, ArtifactRepository localRepository,
-                                              List remoteRepositories )
+    protected Snapshot resolveLatestSnapshotVersion( Artifact artifact, ArtifactRepository localRepository,
+                                                     ArtifactRepository remoteRepository )
         throws ArtifactMetadataRetrievalException
     {
-        getLogger().debug( "resolveMetaData(" + artifact.getId()+ "): repositories: " + remoteRepositories);
+        // TODO: can we improve on this?
+        ArtifactMetadata metadata = new ArtifactRepositoryMetadata( artifact );
 
-        VersionArtifactMetadata localMetadata;
-        try
+        repositoryMetadataManager.resolveAlways( metadata, localRepository, remoteRepository );
+
+        ArtifactRepositoryMetadata m = loadVersioningInformation( metadata, remoteRepository, localRepository,
+                                                                  artifact );
+        Snapshot snapshot;
+        if ( m == null )
         {
-            localMetadata = readFromLocalRepository( artifact, localRepository );
+            snapshot = new Snapshot();
+
+            try
+            {
+                SnapshotArtifactMetadata snapshotMetadata = new SnapshotArtifactMetadata( artifact );
+                snapshotMetadata.retrieveFromRemoteRepository( remoteRepository, wagonManager,
+                                                               ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+                getLogger().warn( "Using old-style versioning metadata from remote repo for " + artifact );
+
+                snapshot.setTimestamp( snapshotMetadata.getTimestamp() );
+                snapshot.setBuildNumber( snapshotMetadata.getBuildNumber() );
+            }
+            catch ( ResourceDoesNotExistException e1 )
+            {
+                // safe to ignore, use default snapshot data
+                getLogger().debug( "Unable to find legacy metadata - ignoring" );
+            }
         }
-        catch ( IOException e )
+        else
+        {
+            snapshot = m.getSnapshot();
+        }
+        return snapshot;
+    }
+
+    protected abstract String constructVersion( ArtifactRepositoryMetadata metadata );
+
+/* TODO
+    private void mergeVersioning( Versioning dest, Versioning source )
+    {
+        // TODO: currently, it is first wins. We should probably compare the versions, or check timestamping?
+        // This could also let us choose the newer of the locally installed version and the remotely built version
+        if ( dest.getLatest() == null )
+        {
+            dest.setLatest( source.getLatest() );
+        }
+        if ( dest.getRelease() == null )
+        {
+            dest.setRelease( source.getRelease() );
+        }
+        if ( dest.getSnapshot() == null )
         {
-            throw new ArtifactMetadataRetrievalException( "Error reading local metadata", e );
+            dest.setSnapshot( source.getSnapshot() );
+        }
+        for ( Iterator i = source.getVersions().iterator(); i.hasNext(); )
+        {
+            String version = (String) i.next();
+            if ( !dest.getVersions().contains( version ) )
+            {
+                dest.getVersions().add( version );
+            }
+        }
+    }
+*/
+
+    /**
+     * @todo remove in beta-2 - used for legacy handling
+     */
+    private String resolveLegacyVersion( Artifact artifact, ArtifactRepository localRepository,
+                                         List remoteRepositories )
+        throws ArtifactMetadataRetrievalException
+    {
+        LegacyArtifactMetadata localMetadata = createLegacyMetadata( artifact );
+        File f = new File( localRepository.getBasedir(),
+                           localRepository.pathOfLocalRepositoryMetadata( localMetadata, null ) );
+        if ( f.exists() )
+        {
+            try
+            {
+                localMetadata.readFromFile( f );
+            }
+            catch ( IOException e )
+            {
+                throw new ArtifactMetadataRetrievalException( "Error reading local metadata", e );
+            }
         }
 
         boolean alreadyResolved = alreadyResolved( artifact );
@@ -122,69 +249,63 @@
                 ArtifactRepositoryPolicy policy = artifact.isSnapshot() ? repository.getSnapshots()
                     : repository.getReleases();
 
-                if ( policy == null || !policy.isEnabled() )
+                if ( !policy.isEnabled() )
                 {
                     getLogger().debug( "resolveMetaData: " + artifact.getId() + ": Skipping disabled repository " +
                         repository.getId() + " (" + repository.getUrl() + ")" );
                 }
                 else
                 {
-                    // TODO: should be able to calculate this less often
                     boolean checkForUpdates = policy.checkOutOfDate( localMetadata.getLastModified() );
 
                     if ( checkForUpdates )
                     {
                         checkedUpdates = true;
 
-                        getLogger().info(
-                            artifact.getId() + ": checking for updates from " + repository.getId() +
-                            " (" + repository.getUrl() + ")" );
-
-                        VersionArtifactMetadata remoteMetadata;
+                        LegacyArtifactMetadata remoteMetadata;
 
                         try
                         {
-                            remoteMetadata = retrieveFromRemoteRepository( artifact, repository, localMetadata,
-                                                                           policy.getChecksumPolicy() );
-                        }
-                        catch ( ResourceDoesNotExistException e )
-                        {
-                            getLogger().debug( "resolveMetaData: Artifact version metadata for: " +
-                                artifact.getId() + " could not be found on repository: " + repository.getId(), e );
+                            remoteMetadata = createLegacyMetadata( artifact );
 
-                            continue;
-                        }
+                            remoteMetadata.retrieveFromRemoteRepository( repository, wagonManager,
+                                                                         policy.getChecksumPolicy() );
 
-                        int difference = remoteMetadata.compareTo( localMetadata );
-                        if ( difference > 0 )
-                        {
-                            // remote is newer
-                            artifact.setRepository( repository );
+                            getLogger().warn( "Using old-style versioning metadata from remote repo for " + artifact );
+
+                            int difference = remoteMetadata.compareTo( localMetadata );
+                            if ( difference > 0 )
+                            {
+                                // remote is newer
+                                artifact.setRepository( repository );
 
-                            localMetadata = remoteMetadata;
+                                localMetadata = remoteMetadata;
+                            }
+                        }
+                        catch ( ResourceDoesNotExistException e )
+                        {
+                            getLogger().debug( "resolveMetaData: Artifact version metadata for: " + artifact.getId() +
+                                " could not be found on repository: " + repository.getId(), e );
                         }
                     }
                     else
                     {
-                        getLogger().debug( "resolveMetaData: " + artifact.getId() +
-                            ": NOT checking for updates from " + repository.getId() +
-                            " (" + repository.getUrl() + ")" );
+                        getLogger().debug( "resolveMetaData: " + artifact.getId() + ": NOT checking for updates from " +
+                            repository.getId() + " (" + repository.getUrl() + ")" );
                     }
                 }
             }
 
-            // touch the file if it was checked for updates, but don't create it if it doesn't exist remotely to avoid
+            // touch the file if it was checked for updates, but don't create it if it did't exist to avoid
             // storing SNAPSHOT as the actual version which doesn't exist remotely.
             if ( checkedUpdates && localMetadata.getLastModified().getTime() > 0 )
             {
-                localMetadata.storeInLocalRepository( localRepository,
-                                                      null ); // TODO: fix artifact repository - but this will be removed anyway
+                localMetadata.storeInLocalRepository( localRepository );
             }
 
             resolvedArtifactCache.add( getCacheKey( artifact ) );
         }
 
-        // TODO: if the POM and JAR are inconsistent, this might mean that different version of each are used
         if ( artifact.getFile().exists() && !localMetadata.newerThanFile( artifact.getFile() ) )
         {
             if ( getLogger().isDebugEnabled() && !alreadyResolved )
@@ -194,42 +315,90 @@
             }
             localMetadata = null;
         }
-        return localMetadata;
-    }
-
-    protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
-                                                                    ArtifactRepository remoteRepository,
-                                                                    ArtifactMetadata localMetadata,
-                                                                    String checksumPolicy )
-        throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
-    {
-        AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
-
-        metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager, checksumPolicy );
-
-        return metadata;
+        return localMetadata != null ? localMetadata.constructVersion() : null;
     }
 
-    protected abstract AbstractVersionArtifactMetadata createMetadata( Artifact artifact );
-
-    private VersionArtifactMetadata readFromLocalRepository( Artifact artifact, ArtifactRepository localRepository )
-        throws IOException
-    {
-        // TODO: we could cache the results of this, perhaps inside the artifact repository?
-        AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
-        metadata.readFromLocalRepository( localRepository,
-                                          null ); // TODO: fix artifact repository - but this will be removed anyway
-        return metadata;
-    }
+    /**
+     * Select the version to use based on a merged versioning element.
+     *
+     * @param versioning the versioning element
+     * @param defaultVersion the version to select if none is selected from versioning
+     * @return the version selected
+     */
+//    protected abstract String selectVersion( Versioning versioning, String defaultVersion );
+    protected abstract LegacyArtifactMetadata createLegacyMetadata( Artifact artifact );
 
+    /**
+     * @todo remove in beta-2 - used for legacy handling
+     */
     private boolean alreadyResolved( Artifact artifact )
     {
         return resolvedArtifactCache.contains( getCacheKey( artifact ) );
     }
 
+    /**
+     * @todo remove in beta-2 - used for legacy handling
+     */
     private static String getCacheKey( Artifact artifact )
     {
         // No type - one per POM
         return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getBaseVersion();
+    }
+
+    private ArtifactRepositoryMetadata loadVersioningInformation( ArtifactMetadata repoMetadata,
+                                                                  ArtifactRepository remoteRepository,
+                                                                  ArtifactRepository localRepository,
+                                                                  Artifact artifact )
+        throws ArtifactMetadataRetrievalException
+    {
+        File metadataFile = new File( localRepository.getBasedir(),
+                                      localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) );
+
+        ArtifactRepositoryMetadata newMetadata = null;
+        if ( metadataFile.exists() )
+        {
+            Metadata metadata = readMetadata( metadataFile );
+            if ( metadata.getVersioning() != null )
+            {
+                newMetadata = new ArtifactRepositoryMetadata( artifact, metadata.getVersioning() );
+            }
+        }
+        return newMetadata;
+    }
+
+    /**
+     * @todo share with DefaultPluginMappingManager.
+     */
+    private static Metadata readMetadata( File mappingFile )
+        throws ArtifactMetadataRetrievalException
+    {
+        Metadata result;
+
+        Reader fileReader = null;
+        try
+        {
+            fileReader = new FileReader( mappingFile );
+
+            MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
+
+            result = mappingReader.read( fileReader );
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new ArtifactMetadataRetrievalException( "Cannot read version information from: " + mappingFile, e );
+        }
+        catch ( IOException e )
+        {
+            throw new ArtifactMetadataRetrievalException( "Cannot read version information from: " + mappingFile, e );
+        }
+        catch ( XmlPullParserException e )
+        {
+            throw new ArtifactMetadataRetrievalException( "Cannot parse version information from: " + mappingFile, e );
+        }
+        finally
+        {
+            IOUtil.close( fileReader );
+        }
+        return result;
     }
 }

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java Mon Sep  5 16:12:55 2005
@@ -48,13 +48,14 @@
         }
     }
 
-    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
+    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
+                                        ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
         for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
         {
             ArtifactTransformation transform = (ArtifactTransformation) i.next();
-            transform.transformForDeployment( artifact, remoteRepository );
+            transform.transformForDeployment( artifact, remoteRepository, localRepository );
         }
     }
 

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -17,10 +17,13 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.LatestArtifactMetadata;
+import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
 
 import java.util.List;
 
@@ -47,15 +50,27 @@
         // metadata is added at install time
     }
 
-    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
+    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
+                                        ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
         // metadata is added at deploy time
     }
 
-    protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )
+    protected LegacyArtifactMetadata createLegacyMetadata( Artifact artifact )
     {
         return new LatestArtifactMetadata( artifact );
     }
 
+    protected ArtifactMetadata createMetadata( Artifact artifact, Versioning versioning )
+    {
+        LatestArtifactMetadata metadata = new LatestArtifactMetadata( artifact );
+        metadata.setVersion( versioning.getLatest() );
+        return metadata;
+    }
+
+    protected String constructVersion( ArtifactRepositoryMetadata metadata )
+    {
+        return metadata.getLatestVersion();
+    }
 }

Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java Mon Sep  5 16:12:55 2005
@@ -17,10 +17,11 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
 import org.apache.maven.artifact.metadata.ReleaseArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
 
 import java.util.List;
 
@@ -41,7 +42,7 @@
         if ( RELEASE_VERSION.equals( artifact.getVersion() ) )
         {
             String version = resolveVersion( artifact, localRepository, remoteRepositories );
-            
+
             if ( version != null && !version.equals( artifact.getVersion() ) )
             {
                 artifact.setBaseVersion( version );
@@ -56,15 +57,20 @@
         // metadata is added at install time
     }
 
-    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
+    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
+                                        ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
         // metadata is added at deploy time
     }
 
-    protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )
+    protected LegacyArtifactMetadata createLegacyMetadata( Artifact artifact )
     {
         return new ReleaseArtifactMetadata( artifact );
     }
 
+    protected String constructVersion( ArtifactRepositoryMetadata metadata )
+    {
+        return metadata.getReleaseVersion();
+    }
 }

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -17,12 +17,15 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
 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 org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.codehaus.plexus.util.StringUtils;
 
 import java.util.Date;
 import java.util.List;
@@ -53,36 +56,35 @@
     {
         if ( artifact.isSnapshot() )
         {
-            SnapshotArtifactMetadata metadata = new SnapshotArtifactMetadata( artifact );
+            // TODO: Better way to create this - should have to construct Versioning
+            Versioning versioning = new Versioning();
+            Snapshot snapshot = new Snapshot();
+            versioning.setSnapshot( snapshot );
 
+            ArtifactMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
+
+            // TODO: should merge with other repository metadata sitting on the same level?
             artifact.addMetadata( metadata );
         }
     }
 
-    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
+    public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
+                                        ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException
     {
         if ( artifact.isSnapshot() )
         {
-            SnapshotArtifactMetadata metadata;
-
-            try
-            {
-                metadata = (SnapshotArtifactMetadata) retrieveFromRemoteRepository( artifact, remoteRepository, null,
-                                                                                    ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
-            }
-            catch ( ResourceDoesNotExistException e )
-            {
-                getLogger().debug( "Snapshot version metadata for: " + artifact.getId() +
-                    " not found. Creating a new metadata instance.", e );
+            Snapshot snapshot = resolveLatestSnapshotVersion( artifact, localRepository, remoteRepository );
+            snapshot.setTimestamp( getDeploymentTimestamp() );
+            snapshot.setBuildNumber( snapshot.getBuildNumber() + 1 );
 
-                // ignore. We'll be creating this metadata if it doesn't exist...
-                metadata = (SnapshotArtifactMetadata) createMetadata( artifact );
-            }
+            // TODO: Better way to create this - should have to construct Versioning
+            Versioning versioning = new Versioning();
+            versioning.setSnapshot( snapshot );
 
-            metadata.setVersion( getDeploymentTimestamp(), metadata.getBuildNumber() + 1 );
+            ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
 
-            artifact.setResolvedVersion( metadata.constructVersion() );
+            artifact.setResolvedVersion( constructVersion( metadata ) );
 
             artifact.addMetadata( metadata );
         }
@@ -97,9 +99,30 @@
         return deploymentTimestamp;
     }
 
-    protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )
+    protected LegacyArtifactMetadata createLegacyMetadata( Artifact artifact )
     {
         return new SnapshotArtifactMetadata( artifact );
     }
 
-}
\ No newline at end of file
+    protected String constructVersion( ArtifactRepositoryMetadata metadata )
+    {
+        String version = metadata.getBaseVersion();
+        Snapshot snapshot = metadata.getSnapshot();
+        if ( snapshot != null )
+        {
+            if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 )
+            {
+                String newVersion = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber();
+                if ( version != null )
+                {
+                    version = StringUtils.replace( version, "SNAPSHOT", newVersion );
+                }
+                else
+                {
+                    version = newVersion;
+                }
+            }
+        }
+        return version;
+    }
+}

Modified: maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml Mon Sep  5 16:12:55 2005
@@ -23,6 +23,9 @@
         <requirement>
           <role>org.apache.maven.artifact.manager.WagonManager</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
+        </requirement>
       </requirements>
     </component>
 
@@ -34,6 +37,9 @@
         <requirement>
           <role>org.apache.maven.artifact.manager.WagonManager</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
+        </requirement>
       </requirements>
     </component>
 
@@ -44,6 +50,9 @@
       <requirements>
         <requirement>
           <role>org.apache.maven.artifact.manager.WagonManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
         </requirement>
       </requirements>
     </component>

Modified: maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java Mon Sep  5 16:12:55 2005
@@ -247,7 +247,6 @@
     {
         ArtifactFactory artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
 
-        // TODO: used to be SCOPE_COMPILE, check
         return artifactFactory.createBuildArtifact( groupId, artifactId, version, type );
     }
 

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DependencyResolutionRequiredException.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DependencyResolutionRequiredException.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DependencyResolutionRequiredException.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DependencyResolutionRequiredException.java Mon Sep  5 16:12:55 2005
@@ -21,7 +21,7 @@
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
- * @todo it may be better for this to move to maven-artifact, and artifact.getFile() to throw it - perhaps it is a runtime exception?
+ * @todo it may be better for artifact.getFile() to throw it - perhaps it is a runtime exception?
  */
 public class DependencyResolutionRequiredException
     extends Exception

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java Mon Sep  5 16:12:55 2005
@@ -36,7 +36,7 @@
     {
         return createArtifact( groupId, artifactId, version, scope, type, null, null );
     }
-    
+
     public Artifact createArtifactWithClassifier( String groupId, String artifactId, String version, String scope,
                                                   String type, String classifier )
     {
@@ -100,7 +100,6 @@
     private Artifact createArtifact( String groupId, String artifactId, String version, String scope, String type,
                                      String classifier, String inheritedScope )
     {
-        // TODO: better constructor
         VersionRange versionRange = null;
         if ( version != null )
         {

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -17,7 +17,6 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 
 /**
  * Common elements of artifact metadata.
@@ -30,8 +29,6 @@
 {
     protected Artifact artifact;
 
-    protected ArtifactRepository repository;
-
     protected AbstractArtifactMetadata( Artifact artifact )
     {
         this.artifact = artifact;
@@ -62,8 +59,4 @@
         return artifact.getGroupId() + ":" + artifact.getArtifactId();
     }
 
-    public void setRepository( ArtifactRepository repository )
-    {
-        this.repository = repository;
-    }
 }

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -56,9 +56,6 @@
 
     Object getKey();
 
-    /**
-     * @todo delete?
-     */
     boolean isSnapshot();
 
     /**

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java Mon Sep  5 16:12:55 2005
@@ -26,4 +26,8 @@
 {
     void resolve( ArtifactMetadata repositoryMetadata, List repositories, ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException;
+
+    void resolveAlways( ArtifactMetadata metadata, ArtifactRepository localRepository,
+                        ArtifactRepository remoteRepository )
+        throws ArtifactMetadataRetrievalException;
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/filter/ArtifactFilter.java Mon Sep  5 16:12:55 2005
@@ -24,7 +24,5 @@
  */
 public interface ArtifactFilter
 {
-    //TODO(JVZ): change the signature of this to filter(Artifact) where the meaning of filter is
-    // to exclude. I did this backward and it's confusing.
     boolean include( Artifact artifact );
 }

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=278881&r1=278880&r2=278881&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 Sep  5 16:12:55 2005
@@ -58,8 +58,10 @@
      *
      * @param artifact Artifact to be transformed.
      * @param remoteRepository the repository to deploy to
+     * @param localRepository the local repository
      */
-    void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
+    void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
+                                 ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException;
 
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java Mon Sep  5 16:12:55 2005
@@ -56,8 +56,10 @@
      *
      * @param artifact Artifact to be transformed.
      * @param remoteRepository the repository to deploy to
+     * @param localRepository the local repository the metadata is stored in
      */
-    void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
+    void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
+                                 ArtifactRepository localRepository )
         throws ArtifactMetadataRetrievalException;
 
 }

Modified: maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java (original)
+++ maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java Mon Sep  5 16:12:55 2005
@@ -24,7 +24,6 @@
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
@@ -178,7 +177,7 @@
                         continue;
                     }
 
-                    lines.addAll( replaceArtifacts( line ) );
+                    lines.add( replaceArtifacts( line ) );
                 }
 
                 reader.close();
@@ -192,7 +191,7 @@
         return lines;
     }
 
-    private static List replaceArtifacts( String line )
+    private static String replaceArtifacts( String line )
     {
         String MARKER = "${artifact:";
         int index = line.indexOf( MARKER );
@@ -209,22 +208,11 @@
             newLine += convertArtifact( artifact );
             newLine += line.substring( index + 1 );
 
-            index = newLine.lastIndexOf( "SNAPSHOT" );
-            if ( index >= 0 )
-            {
-                List l = new ArrayList();
-                l.add( newLine );
-                l.add( newLine.substring( 0, index ) + "SNAPSHOT.version.txt" );
-                return l;
-            }
-            else
-            {
-                return Collections.singletonList( newLine );
-            }
+            return newLine;
         }
         else
         {
-            return Collections.singletonList( line );
+            return line;
         }
     }
 

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=278881&r1=278880&r2=278881&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Mon Sep  5 16:12:55 2005
@@ -600,7 +600,6 @@
                     String goal = tok.nextToken().trim();
 
                     // Not from the CLI, don't use prefix
-                    // TODO: [MNG-608] this needs to be false
                     MojoDescriptor mojoDescriptor = getMojoDescriptor( goal, session, project, selectedPhase, false );
 
                     if ( mojoDescriptor.isDirectInvocationOnly() )



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