Author: brett
Date: Wed Jun 18 10:06:57 2008
New Revision: 669227

URL: http://svn.apache.org/viewvc?rev=669227&view=rev
Log:
[MARTIFACT-6] The deployer should detect previous deployments of the same 
version and die
This corrects the test case and implementation, utilising the previous changes 
made to ensure mirrors
and other repository metadata are not consulted for metadata

Modified:
    
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
    
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/ArtifactDeployerTest.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/TestArtifactResolver.java

Modified: 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
 (original)
+++ 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
 Wed Jun 18 10:06:57 2008
@@ -28,17 +28,27 @@
 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.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import 
org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
 import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataDeploymentException;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
+import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataReadException;
+import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
+import 
org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException;
 import org.apache.maven.artifact.transform.ArtifactTransformationManager;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.TransferFailedException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -83,7 +93,7 @@
             throw new ArtifactDeploymentException( "System is offline. Cannot 
deploy artifact: " + artifact + "." );
         }
 
-        if ( !artifactHasBeenDeployed( artifact, deploymentRepository ) )
+        if ( !artifactHasBeenDeployed( artifact, localRepository, 
deploymentRepository ) )
         {
             try
             {
@@ -117,9 +127,15 @@
                 throw new ArtifactDeploymentException( "Error installing 
artifact's metadata: " + e.getMessage(), e );
             }
         }
+        else
+        {
+            throw new ArtifactDeploymentException( "The artifact " + artifact 
+ " was already deployed to repository "
+                + deploymentRepository.getId() );
+        }
     }
 
-    private boolean artifactHasBeenDeployed( Artifact artifact, 
ArtifactRepository remoteRepository )
+    private boolean artifactHasBeenDeployed( Artifact artifact, 
ArtifactRepository localRepository,
+                                             ArtifactRepository 
remoteRepository )
         throws ArtifactDeploymentException
     {
         try
@@ -146,25 +162,11 @@
 
             ArtifactVersion artifactVersion = new DefaultArtifactVersion( 
artifact.getVersion() );
 
-            // We have to fake out the tools underneath as they always expect 
a local repository.
-            // This makes sure that we are checking for remote deployments not 
things cached locally
-            // as we don't care about things cached locally. In an embedded 
environment we have to
-            // deal with multiple deployments, and the same deployment by the 
same project so we
-            // just need to make sure we have a detached local repository each 
time as not to
-            // get contaminated results.
-
-            File detachedLocalRepository = File.createTempFile( "maven", 
"repo" );
-
-            ArtifactRepository localRepository =
-                new DefaultArtifactRepository( "id", "file://" + 
detachedLocalRepository, defaultLayout );
-
-            List<ArtifactRepository> remoteRepositories = new 
ArrayList<ArtifactRepository>();
-            remoteRepositories.add( remoteRepository );
-
+            // results in an unfortunate double-retrieval of this metadata 
file (later for the update)
+            // it would be better to atomically lock, retrieve, check, update, 
deploy, unlock 
             List<ArtifactVersion> versions =
-                metadataSource.retrieveAvailableVersions( artifact, 
localRepository, remoteRepositories );
-
-            detachedLocalRepository.delete();
+                
metadataSource.retrieveAvailableVersionsFromDeploymentRepository( artifact, 
localRepository,
+                                                                               
   remoteRepository );
 
             for ( ArtifactVersion deployedArtifactVersion : versions )
             {
@@ -178,18 +180,11 @@
                 }
             }
         }
-        catch ( IOException e )
-        {
-            getLogger().warn(
-                              "We cannot retrieve the artifact metadata, or it 
does not exist. We will assume this artifact needs to be deployed." );
-
-            return false;
-        }
         catch ( ArtifactMetadataRetrievalException e )
         {
             getLogger().warn(
-                              "We cannot retrieve the artifact metadata, or it 
does not exist. We will assume this artifact needs to be deployed." );
-
+                              "Cannot retrieve the artifact metadata, or it 
does not exist. Assuming this artifact needs to be deployed." );
+            getLogger().debug( e.getMessage(), e );
             return false;
         }
 

Modified: 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
 (original)
+++ 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
 Wed Jun 18 10:06:57 2008
@@ -57,4 +57,21 @@
                                     ArtifactRepository localRepository,
                                     List<ArtifactRepository> 
remoteRepositories )
         throws ArtifactMetadataRetrievalException;
+
+    /**
+     * Get a list of available versions for an artifact in the remote 
deployment repository. This ignores any update
+     * policy checks and mirrors and always retrieves the latest information 
from the given repository.
+     * 
+     * @param artifact artifact we are interested in. Only 
<code>groupid</code> and <code>artifactId</code> are
+     *            needed, for instance the following code will work
+     *            <code>artifactFactory.createProjectArtifact( 
"org.apache.maven", "maven", "" )</code>
+     * @param localRepository    local repository
+     * @param deploymentRepository remote repository
+     * @return [EMAIL PROTECTED] List} $lt; [EMAIL PROTECTED] ArtifactVersion} 
>
+     * @throws ArtifactMetadataRetrievalException
+     *          in case of error while retrieving repository metadata from the 
repository.
+     */
+    List<ArtifactVersion> retrieveAvailableVersionsFromDeploymentRepository( 
Artifact artifact,
+                                                                             
ArtifactRepository localRepository,
+                                                                             
ArtifactRepository remoteRepository ) throws ArtifactMetadataRetrievalException;
 }
\ No newline at end of file

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
 Wed Jun 18 10:06:57 2008
@@ -58,14 +58,14 @@
         f.createNewFile();
 
         ArtifactRepositoryLayout repoLayout =
-            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"legacy" );
+            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"default" );
 
         return new DefaultArtifactRepository( "test", "file://" + f.getPath(), 
repoLayout );
     }
 
     protected String getRepositoryLayout()
     {
-        return "legacy";
+        return "default";
     }
 
     protected ArtifactRepository localRepository()
@@ -76,7 +76,7 @@
         File f = new File( getBasedir(), path );
 
         ArtifactRepositoryLayout repoLayout =
-            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"legacy" );
+            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"default" );
 
         return new DefaultArtifactRepository( "local", "file://" + 
f.getPath(), repoLayout );
     }
@@ -89,7 +89,7 @@
         File f = new File( getBasedir(), path );
 
         ArtifactRepositoryLayout repoLayout =
-            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"legacy" );
+            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"default" );
 
         return new DefaultArtifactRepository( "test", "file://" + f.getPath(), 
repoLayout,
                                               new ArtifactRepositoryPolicy(), 
new ArtifactRepositoryPolicy() );
@@ -99,7 +99,7 @@
         throws Exception
     {
         ArtifactRepositoryLayout repoLayout =
-            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"legacy" );
+            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"default" );
 
         return new DefaultArtifactRepository( "test", 
"http://foo.bar/repository";, repoLayout );
     }

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/ArtifactDeployerTest.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/ArtifactDeployerTest.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/ArtifactDeployerTest.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/ArtifactDeployerTest.java
 Wed Jun 18 10:06:57 2008
@@ -21,6 +21,8 @@
 
 import org.apache.maven.artifact.AbstractArtifactComponentTestCase;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
 
@@ -54,10 +56,14 @@
         Artifact artifact = createArtifact( "artifact", "1.0" );
 
         File file = new File( artifactBasedir, "artifact-1.0.jar" );
+        assertEquals( "dummy\n", FileUtils.fileRead( file ) );
 
         artifactDeployer.deploy( file, artifact, remoteRepository(), 
localRepository() );
 
-        assertRemoteArtifactPresent( artifact );
+        ArtifactRepository remoteRepository = remoteRepository();
+        File deployedFile = new File( remoteRepository.getBasedir(), 
remoteRepository.pathOf( artifact ) );
+        assertTrue( deployedFile.exists() );
+        assertEquals( "dummy\n", FileUtils.fileRead( deployedFile ) );
     }
 
     public void testArtifactDeploymentForArtifactThatHasAlreadyBeenDeployed()
@@ -67,15 +73,25 @@
 
         Artifact artifact = createArtifact( "artifact", "10.1.3" );
 
-        File file = new File( artifactBasedir, "artifact-10.1.3.jar" );
+        File file = new File( artifactBasedir, "artifact-1.0.jar" );
+        assertEquals( "dummy\n", FileUtils.fileRead( file ) );
+
+        ArtifactRepository remoteRepository = remoteRepository();
+        createRemoteArtifact( artifact );
 
+        File deployedFile = new File( remoteRepository.getBasedir(), 
remoteRepository.pathOf( artifact ) );
+        assertTrue( deployedFile.exists() );
+        assertEquals( artifact.getId(), FileUtils.fileRead( deployedFile ) );
+        
         try
         {
-            artifactDeployer.deploy( file, artifact, remoteRepository(), 
localRepository() );
+            artifactDeployer.deploy( file, artifact, remoteRepository, 
localRepository() );
+            fail( "Should have failed due to previous deployment of artifact." 
);
         }
         catch( ArtifactDeploymentException e )
         {
-            fail( "Should have failed due to previous deployment of artifact." 
);
+            assertTrue( deployedFile.exists() );
+            assertEquals( artifact.getId(), FileUtils.fileRead( deployedFile ) 
);
         }
     }
 }
\ No newline at end of file

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
 Wed Jun 18 10:06:57 2008
@@ -1,5 +1,24 @@
 package org.apache.maven.artifact.deployer;
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
@@ -8,27 +27,32 @@
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /** @author Jason van Zyl */
 public class SimpleArtifactMetadataSource
     implements ArtifactMetadataSource
 {
-    public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository, List remoteRepositories )
+    public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository,
+                                     List<ArtifactRepository> 
remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
-        return new ResolutionGroup( null, null, null );
+        throw new UnsupportedOperationException( "Cannot retrieve metadata in 
this test case" );
     }
 
     public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
                                                             
List<ArtifactRepository> remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
-        List<ArtifactVersion> versions = new ArrayList<ArtifactVersion>();
-
-        versions.add( new DefaultArtifactVersion( "10.1.3" ) );
+        return Collections.<ArtifactVersion>singletonList( new 
DefaultArtifactVersion( "10.1.3" ) );
+    }
 
-        return versions;
+    public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository( Artifact artifact,
+                                                                               
     ArtifactRepository localRepository,
+                                                                               
     ArtifactRepository remoteRepository )
+        throws ArtifactMetadataRetrievalException
+    {
+        return Collections.<ArtifactVersion>singletonList( new 
DefaultArtifactVersion( "10.1.3" ) );
     }
 }

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
 Wed Jun 18 10:06:57 2008
@@ -25,6 +25,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -107,7 +108,7 @@
         ArtifactMetadataSource mds = new ArtifactMetadataSource()
         {
             public ResolutionGroup retrieve( Artifact artifact, 
ArtifactRepository localRepository,
-                                             List remoteRepositories )
+                                             List<ArtifactRepository> 
remoteRepositories )
                 throws ArtifactMetadataRetrievalException
             {
                 Set dependencies = new HashSet();
@@ -129,8 +130,19 @@
                 return new ResolutionGroup( artifact, dependencies, 
remoteRepositories );
             }
 
-            public List retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
-                                                   List remoteRepositories )
+            public List<ArtifactVersion> retrieveAvailableVersions( Artifact 
artifact,
+                                                                    
ArtifactRepository localRepository,
+                                                                    
List<ArtifactRepository> remoteRepositories )
+                throws ArtifactMetadataRetrievalException
+            {
+                throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
+            }
+
+            public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository(
+                                                                               
             Artifact artifact,
+                                                                               
             ArtifactRepository localRepository,
+                                                                               
             ArtifactRepository remoteRepository )
+                throws ArtifactMetadataRetrievalException
             {
                 throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
             }
@@ -163,7 +175,7 @@
         ArtifactMetadataSource mds = new ArtifactMetadataSource()
         {
             public ResolutionGroup retrieve( Artifact artifact, 
ArtifactRepository localRepository,
-                                             List remoteRepositories )
+                                             List<ArtifactRepository> 
remoteRepositories )
                 throws ArtifactMetadataRetrievalException
             {
                 Set dependencies = new HashSet();
@@ -185,8 +197,19 @@
                 return new ResolutionGroup( artifact, dependencies, 
remoteRepositories );
             }
 
-            public List retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
-                                                   List remoteRepositories )
+            public List<ArtifactVersion> retrieveAvailableVersions( Artifact 
artifact,
+                                                                    
ArtifactRepository localRepository,
+                                                                    
List<ArtifactRepository> remoteRepositories )
+                throws ArtifactMetadataRetrievalException
+            {
+                throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
+            }
+
+            public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository(
+                                                                               
             Artifact artifact,
+                                                                               
             ArtifactRepository localRepository,
+                                                                               
             ArtifactRepository remoteRepository )
+                throws ArtifactMetadataRetrievalException
             {
                 throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
             }
@@ -248,7 +271,7 @@
         ArtifactMetadataSource mds = new ArtifactMetadataSource()
         {
             public ResolutionGroup retrieve( Artifact artifact, 
ArtifactRepository localRepository,
-                                             List remoteRepositories )
+                                             List<ArtifactRepository> 
remoteRepositories )
                 throws ArtifactMetadataRetrievalException
             {
                 Set dependencies = new HashSet();
@@ -256,8 +279,19 @@
                 return new ResolutionGroup( artifact, dependencies, 
remoteRepositories );
             }
 
-            public List retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
-                                                   List remoteRepositories )
+            public List<ArtifactVersion> retrieveAvailableVersions( Artifact 
artifact,
+                                                                    
ArtifactRepository localRepository,
+                                                                    
List<ArtifactRepository> remoteRepositories )
+                throws ArtifactMetadataRetrievalException
+            {
+                throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
+            }
+
+            public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository(
+                                                                               
             Artifact artifact,
+                                                                               
             ArtifactRepository localRepository,
+                                                                               
             ArtifactRepository remoteRepository )
+                throws ArtifactMetadataRetrievalException
             {
                 throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
             }

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java
 Wed Jun 18 10:06:57 2008
@@ -40,6 +40,8 @@
     extends AbstractArtifactComponentTestCase
 {
 
+    private static final String PATH = 
"org/apache/maven/o/0.0.1-SNAPSHOT/o-0.0.1-SNAPSHOT.jar";
+
     private static final long TWO_SECONDS = 2 * 1000L;
 
     private static final long TWO_DAYS = 2 * 86400L * 1000L;
@@ -145,9 +147,8 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository 
);
 
-        assertTransfers( new String[] { "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
+        assertTransfers( new String[] { "get " + PATH, "getTransfer " + PATH, 
"get " + PATH + ".sha1",
+            "get " + PATH + ".md5" } );
     }
 
     public void testForceButNoNewUpdates()
@@ -158,7 +159,7 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository 
);
 
-        assertTransfers( new String[] { "getIfNewer 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
+        assertTransfers( new String[] { "getIfNewer " + PATH } );
     }
 
     public void testForceNewUpdate()
@@ -170,9 +171,8 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository 
);
 
-        assertTransfers( new String[] { "getIfNewer 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
+        assertTransfers( new String[] { "getIfNewer " + PATH, "getTransfer " + 
PATH, "get " + PATH + ".sha1",
+            "get " + PATH + ".md5" } );
     }
 
     public void testForceUpdateMissing()
@@ -200,8 +200,7 @@
             // expected
         }
 
-        assertTransfers( new String[] { "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
+        assertTransfers( new String[] { "get " + PATH, "get " + PATH } );
 
     }
 
@@ -214,9 +213,8 @@
 
         artifactResolver.resolve( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { "getIfNewer 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
+        assertTransfers( new String[] { "getIfNewer " + PATH, "getTransfer " + 
PATH, "get " + PATH + ".sha1",
+            "get " + PATH + ".md5" } );
     }
 
     public void testSnapshotNoUpdates()
@@ -230,7 +228,7 @@
 
         artifactResolver.resolve( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { "getIfNewer 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
+        assertTransfers( new String[] { "getIfNewer " + PATH } );
     }
 
     public void testSnapshotPolicyCheck()
@@ -270,9 +268,8 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository 
);
 
-        assertTransfers( new String[] { "getIfNewer 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
+        assertTransfers( new String[] { "getIfNewer " + PATH, "getTransfer " + 
PATH, "get " + PATH + ".sha1",
+            "get " + PATH + ".md5" } );
     }
 
     private void setLastModified( Artifact a, long timestamp, 
ArtifactRepository repository )
@@ -306,7 +303,7 @@
             // expected
         }
 
-        assertTransfers( new String[] { "get 
org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
+        assertTransfers( new String[] { "get 
org/apache/maven/o/0.0.1-SNAPSHOT/o-0.0.1-SNAPSHOT.jar" } );
     }
 
     public void testResolutionOfArtifactsDeletedFromLocalRepo()

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
 Wed Jun 18 10:06:57 2008
@@ -39,6 +39,7 @@
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
@@ -841,7 +842,8 @@
 
         private Map versions = new HashMap();
 
-        public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository, List remoteRepositories )
+        public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository,
+                                         List<ArtifactRepository> 
remoteRepositories )
             throws ArtifactMetadataRetrievalException
         {
             String key = getKey( artifact );
@@ -911,18 +913,6 @@
             return projectArtifacts;
         }
 
-        public List retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
-                                               List remoteRepositories )
-            throws ArtifactMetadataRetrievalException
-        {
-            List artifactVersions = (List) versions.get( 
artifact.getDependencyConflictId() );
-            if ( artifactVersions == null )
-            {
-                artifactVersions = Collections.EMPTY_LIST;
-            }
-            return artifactVersions;
-        }
-
         public void addArtifact( ArtifactSpec spec )
         {
             artifacts.put( getKey( spec.artifact ), spec );
@@ -939,5 +929,31 @@
                 artifactVersions.add( new DefaultArtifactVersion( 
spec.artifact.getVersion() ) );
             }
         }
+
+        public List<ArtifactVersion> retrieveAvailableVersions( Artifact 
artifact, ArtifactRepository localRepository,
+                                                                
List<ArtifactRepository> remoteRepositories )
+            throws ArtifactMetadataRetrievalException
+        {
+            return retrieveAvailableVersions( artifact );
+        }
+
+        public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository(
+                                                                               
         Artifact artifact,
+                                                                               
         ArtifactRepository localRepository,
+                                                                               
         ArtifactRepository remoteRepository )
+            throws ArtifactMetadataRetrievalException
+        {
+            return retrieveAvailableVersions( artifact );
+        }
+
+        private List<ArtifactVersion> retrieveAvailableVersions( Artifact 
artifact )
+        {
+            List artifactVersions = (List) versions.get( 
artifact.getDependencyConflictId() );
+            if ( artifactVersions == null )
+            {
+                artifactVersions = Collections.EMPTY_LIST;
+            }
+            return artifactVersions;
+        }
     }
 }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 Wed Jun 18 10:06:57 2008
@@ -33,6 +33,7 @@
 import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
@@ -441,8 +442,8 @@
         return projectArtifacts;
     }
 
-    public List retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
-                                           List remoteRepositories )
+    public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
+                                                            
List<ArtifactRepository> remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {
         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact 
);
@@ -455,21 +456,43 @@
             throw new ArtifactMetadataRetrievalException( e.getMessage(), e );
         }
 
-        List versions;
-        Metadata repoMetadata = metadata.getMetadata();
+        return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );
+    }
+
+    public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository(
+                                                                               
     Artifact artifact,
+                                                                               
     ArtifactRepository localRepository,
+                                                                               
     ArtifactRepository deploymentRepository )
+        throws ArtifactMetadataRetrievalException
+    {
+        RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact 
);
+        try
+        {
+            repositoryMetadataManager.resolveAlways( metadata, 
localRepository, deploymentRepository );
+        }
+        catch ( RepositoryMetadataResolutionException e )
+        {
+            throw new ArtifactMetadataRetrievalException( e.getMessage(), e );
+        }
+
+        return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );
+    }
+
+    private List<ArtifactVersion> retrieveAvailableVersionsFromMetadata( 
Metadata repoMetadata )
+    {
+        List<ArtifactVersion> versions;
         if ( ( repoMetadata != null ) && ( repoMetadata.getVersioning() != 
null ) )
         {
-            List metadataVersions = repoMetadata.getVersioning().getVersions();
-            versions = new ArrayList( metadataVersions.size() );
-            for ( Iterator i = metadataVersions.iterator(); i.hasNext(); )
+            List<String> metadataVersions = 
repoMetadata.getVersioning().getVersions();
+            versions = new ArrayList<ArtifactVersion>( metadataVersions.size() 
);
+            for ( String version : metadataVersions )
             {
-                String version = (String) i.next();
                 versions.add( new DefaultArtifactVersion( version ) );
             }
         }
         else
         {
-            versions = Collections.EMPTY_LIST;
+            versions = Collections.<ArtifactVersion> emptyList();
         }
 
         return versions;

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/TestArtifactResolver.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/TestArtifactResolver.java?rev=669227&r1=669226&r2=669227&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/TestArtifactResolver.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/TestArtifactResolver.java
 Wed Jun 18 10:06:57 2008
@@ -32,6 +32,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.DefaultArtifactResolver;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
@@ -82,7 +83,7 @@
         }
 
         public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository 
localRepository,
-                                         List remoteRepositories )
+                                         List<ArtifactRepository> 
remoteRepositories )
             throws ArtifactMetadataRetrievalException
         {
             Model model = null;
@@ -141,8 +142,18 @@
             return new ResolutionGroup( artifact, artifacts, 
artifactRepositories );
         }
 
-        public List retrieveAvailableVersions( Artifact artifact, 
ArtifactRepository localRepository,
-                                               List remoteRepositories )
+        public List<ArtifactVersion> retrieveAvailableVersions( Artifact 
artifact, ArtifactRepository localRepository,
+                                                                
List<ArtifactRepository> remoteRepositories )
+            throws ArtifactMetadataRetrievalException
+        {
+            throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
+        }
+
+        public List<ArtifactVersion> 
retrieveAvailableVersionsFromDeploymentRepository(
+                                                                               
         Artifact artifact,
+                                                                               
         ArtifactRepository localRepository,
+                                                                               
         ArtifactRepository remoteRepository )
+            throws ArtifactMetadataRetrievalException
         {
             throw new UnsupportedOperationException( "Cannot get available 
versions in this test case" );
         }


Reply via email to