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/29 09:37:05 UTC

svn commit: r292401 - in /maven/components/trunk: maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/ maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/ maven-artifact-manager/src/main/java/org/apac...

Author: brett
Date: Thu Sep 29 00:36:55 2005
New Revision: 292401

URL: http://svn.apache.org/viewcvs?rev=292401&view=rev
Log:
PR: MNG-230
create a local copy of the snapshot

Modified:
    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/resolver/DefaultArtifactResolver.java
    maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
    maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo

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=292401&r1=292400&r2=292401&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 Thu Sep 29 00:36:55 2005
@@ -34,9 +34,11 @@
 import java.io.IOException;
 import java.io.Reader;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 public class DefaultRepositoryMetadataManager
@@ -100,6 +102,8 @@
         // TODO: this needs to be repeated here so the merging doesn't interfere with the written metadata
         //  - we'd be much better having a pristine input, and an ongoing metadata for merging instead
 
+        Map previousMetadata = new HashMap();
+        ArtifactRepository selected = null;
         for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
         {
             ArtifactRepository repository = (ArtifactRepository) i.next();
@@ -109,16 +113,68 @@
 
             if ( policy.isEnabled() )
             {
-                loadMetadata( metadata, repository, localRepository, true );
+                if ( loadMetadata( metadata, repository, localRepository, previousMetadata ) )
+                {
+                    metadata.setRepository( repository );
+                    selected = repository;
+                }
             }
         }
-        loadMetadata( metadata, localRepository, localRepository, false );
+        if ( loadMetadata( metadata, localRepository, localRepository, previousMetadata ) )
+        {
+            selected = localRepository;
+        }
+
+        // TODO: this could be a lot nicer... should really be in the snapshot transformation?
+        if ( metadata.isSnapshot() )
+        {
+            Metadata prevMetadata = metadata.getMetadata();
+
+            for ( Iterator i = previousMetadata.keySet().iterator(); i.hasNext(); )
+            {
+                ArtifactRepository repository = (ArtifactRepository) i.next();
+                Metadata m = (Metadata) previousMetadata.get( repository );
+                if ( repository.equals( selected ) )
+                {
+                    if ( m.getVersioning() == null )
+                    {
+                        m.setVersioning( new Versioning() );
+                    }
+
+                    if ( m.getVersioning().getSnapshot() == null )
+                    {
+                        m.getVersioning().setSnapshot( new Snapshot() );
+                    }
+
+                    if ( !m.getVersioning().getSnapshot().isLocalCopy() )
+                    {
+                        m.getVersioning().getSnapshot().setLocalCopy( true );
+                        metadata.setMetadata( m );
+                        metadata.storeInLocalRepository( localRepository, repository );
+                    }
+                }
+                else
+                {
+                    if ( m.getVersioning() != null && m.getVersioning().getSnapshot() != null &&
+                        m.getVersioning().getSnapshot().isLocalCopy() )
+                    {
+                        m.getVersioning().getSnapshot().setLocalCopy( false );
+                        metadata.setMetadata( m );
+                        metadata.storeInLocalRepository( localRepository, repository );
+                    }
+                }
+            }
+
+            metadata.setMetadata( prevMetadata );
+        }
     }
 
-    private void loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
-                               ArtifactRepository localRepository, boolean setRepository )
+    private boolean loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
+                                  ArtifactRepository localRepository, Map previousMetadata )
         throws ArtifactMetadataRetrievalException
     {
+        boolean setRepository = false;
+
         File metadataFile = new File( localRepository.getBasedir(),
                                       localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) );
 
@@ -126,25 +182,22 @@
         {
             Metadata metadata = readMetadata( metadataFile );
 
+            if ( repoMetadata.isSnapshot() && previousMetadata != null )
+            {
+                previousMetadata.put( remoteRepository, metadata );
+            }
+
             if ( repoMetadata.getMetadata() != null )
             {
-                if ( repoMetadata.getMetadata().merge( metadata ) )
-                {
-                    if ( setRepository )
-                    {
-                        repoMetadata.setRepository( remoteRepository );
-                    }
-                }
+                setRepository = repoMetadata.getMetadata().merge( metadata );
             }
             else
             {
                 repoMetadata.setMetadata( metadata );
-                if ( setRepository )
-                {
-                    repoMetadata.setRepository( remoteRepository );
-                }
+                setRepository = true;
             }
         }
+        return setRepository;
     }
 
     /**

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=292401&r1=292400&r2=292401&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 Thu Sep 29 00:36:55 2005
@@ -27,8 +27,10 @@
 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.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -116,10 +118,10 @@
                     if ( !wagonManager.isOnline() )
                     {
                         getLogger().debug( "System is offline. Cannot resolve artifact: " + artifact.getId() + "." );
-                        
+
                         return;
                     }
-                    
+
                     try
                     {
                         if ( artifact.getRepository() != null )
@@ -146,6 +148,23 @@
                     catch ( TransferFailedException e )
                     {
                         throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e );
+                    }
+
+                    if ( artifact.isSnapshot() && !artifact.getBaseVersion().equals( artifact.getVersion() ) )
+                    {
+                        String version = artifact.getVersion();
+                        artifact.selectVersion( artifact.getBaseVersion() );
+                        File copy = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+                        try
+                        {
+                            FileUtils.copyFile( destination, copy );
+                        }
+                        catch ( IOException e )
+                        {
+                            throw new ArtifactResolutionException( "Unable to copy resolved artifact for local use",
+                                                                   artifact, remoteRepositories, e );
+                        }
+                        artifact.selectVersion( version );
                     }
                 }
                 else if ( destination.exists() )

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=292401&r1=292400&r2=292401&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 Thu Sep 29 00:36:55 2005
@@ -107,14 +107,14 @@
         Snapshot snapshot = versioning.getSnapshot();
         if ( snapshot != null )
         {
-            if ( snapshot.isLocalCopy() )
-            {
-                version = baseVersion;
-            }
-            else if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 )
+            if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 )
             {
                 String newVersion = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber();
                 version = StringUtils.replace( baseVersion, "SNAPSHOT", newVersion );
+            }
+            else
+            {
+                version = baseVersion;
             }
         }
         return version;

Modified: maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo?rev=292401&r1=292400&r2=292401&view=diff
==============================================================================
--- maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo (original)
+++ maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo Thu Sep 29 00:36:55 2005
@@ -79,9 +79,9 @@
                 mappedPlugin.setArtifactId( plugin.getArtifactId() );
 
                 mappedPlugin.setPrefix( plugin.getPrefix() );
-                
+
                 mappedPlugin.setName( plugin.getName() );
-                
+
                 addPlugin( mappedPlugin );
 
                 changed = true;
@@ -142,30 +142,22 @@
                         changed = true;
                     }
 
-                    if ( snapshot.isLocalCopy() )
+                    // overwrite
+                    if ( s.getTimestamp() == null ? snapshot.getTimestamp() != null
+                        : !s.getTimestamp().equals( snapshot.getTimestamp() ) )
+                    {
+                        s.setTimestamp( snapshot.getTimestamp() );
+                        changed = true;
+                    }
+                    if ( s.getBuildNumber() != snapshot.getBuildNumber() )
                     {
-                        s.setLocalCopy( true );
-                        s.setTimestamp( null );
-                        s.setBuildNumber( 0 );
+                        s.setBuildNumber( snapshot.getBuildNumber() );
                         changed = true;
                     }
-                    else
+                    if ( s.isLocalCopy() != snapshot.isLocalCopy() )
                     {
-                        if ( snapshot.getTimestamp() != null && !snapshot.getTimestamp().equals( s.getTimestamp() ) )
-                        {
-                            s.setTimestamp( snapshot.getTimestamp() );
-                            changed = true;
-                        }
-                        if ( snapshot.getBuildNumber() > 0 && s.getBuildNumber() != snapshot.getBuildNumber() )
-                        {
-                            s.setBuildNumber( snapshot.getBuildNumber() );
-                            changed = true;
-                        }
-                        if ( s.isLocalCopy() )
-                        {
-                            s.setLocalCopy( false );
-                            changed = true;
-                        }
+                        s.setLocalCopy( snapshot.isLocalCopy() );
+                        changed = true;
                     }
                 }
             }



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