Author: bentmann
Date: Thu Mar 25 21:55:08 2010
New Revision: 927604

URL: http://svn.apache.org/viewvc?rev=927604&view=rev
Log:
o Aligned version resolver with prefix resolver and made it support a model as 
additional input

Modified:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionRequest.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResult.java

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java?rev=927604&r1=927603&r2=927604&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionRequest.java
 Thu Mar 25 21:55:08 2010
@@ -26,6 +26,7 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.repository.ArtifactTransferListener;
@@ -43,6 +44,8 @@ public class DefaultPluginVersionRequest
 
     private String artifactId;
 
+    private Model pom;
+
     private RepositoryRequest repositoryRequest;
 
     /**
@@ -126,6 +129,18 @@ public class DefaultPluginVersionRequest
         return this;
     }
 
+    public Model getPom()
+    {
+        return pom;
+    }
+
+    public DefaultPluginVersionRequest setPom( Model pom )
+    {
+        this.pom = pom;
+
+        return this;
+    }
+
     public RepositoryCache getCache()
     {
         return repositoryRequest.getCache();

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionRequest.java?rev=927604&r1=927603&r2=927604&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionRequest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionRequest.java
 Thu Mar 25 21:55:08 2010
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.artifact.repository.RepositoryRequest;
+import org.apache.maven.model.Model;
 import org.apache.maven.repository.ArtifactTransferListener;
 
 /**
@@ -66,6 +67,23 @@ public interface PluginVersionRequest
     PluginVersionRequest setArtifactId( String artifactId );
 
     /**
+     * Gets the POM whose build plugins are to be scanned for the version.
+     * 
+     * @return The POM whose build plugins are to be scanned for the verion or 
{...@code null} to only search the plugin
+     *         repositories.
+     */
+    Model getPom();
+
+    /**
+     * Sets the POM whose build plugins are to be scanned for the version.
+     * 
+     * @param pom The POM whose build plugins are to be scanned for the 
version, may be {...@code null} to only search the
+     *            plugin repositories.
+     * @return This request, never {...@code null}.
+     */
+    PluginVersionRequest setPom( Model pom );
+
+    /**
      * Indicates whether network access to remote repositories has been 
disabled.
      * 
      * @return {...@code true} if remote access has been disabled, {...@code 
false} otherwise.

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java?rev=927604&r1=927603&r2=927604&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
 Thu Mar 25 21:55:08 2010
@@ -22,11 +22,14 @@ package org.apache.maven.plugin.version.
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.Metadata;
 import org.apache.maven.artifact.repository.metadata.io.MetadataReader;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.version.PluginVersionRequest;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
 import org.apache.maven.plugin.version.PluginVersionResolver;
@@ -63,6 +66,38 @@ public class DefaultPluginVersionResolve
     {
         logger.debug( "Resolving plugin version for " + request.getGroupId() + 
":" + request.getArtifactId() );
 
+        PluginVersionResult result = resolveFromProject( request );
+
+        if ( result == null )
+        {
+            result = resolveFromRepository( request );
+
+            if ( StringUtils.isEmpty( result.getVersion() ) )
+            {
+                throw new PluginVersionResolutionException( 
request.getGroupId(), request.getArtifactId(),
+                                                            
request.getLocalRepository(),
+                                                            
request.getRemoteRepositories(),
+                                                            "Plugin not found 
in any plugin repository" );
+            }
+            else if ( logger.isDebugEnabled() )
+            {
+                logger.debug( "Resolved plugin version for " + 
request.getGroupId() + ":" + request.getArtifactId()
+                    + " to " + result.getVersion() + " from repository "
+                    + ( result.getRepository() != null ? 
result.getRepository().getId() : "null" ) );
+            }
+        }
+        else if ( logger.isDebugEnabled() )
+        {
+            logger.debug( "Resolved plugin version for " + 
request.getGroupId() + ":" + request.getArtifactId()
+                + " to " + result.getVersion() + " from POM " + 
request.getPom() );
+        }
+
+        return result;
+    }
+
+    private PluginVersionResult resolveFromRepository( PluginVersionRequest 
request )
+        throws PluginVersionResolutionException
+    {
         DefaultPluginVersionResult result = new DefaultPluginVersionResult();
 
         Metadata mergedMetadata = new Metadata();
@@ -155,13 +190,6 @@ public class DefaultPluginVersionResolve
                                                         "Plugin not found in 
any plugin repository" );
         }
 
-        if ( logger.isDebugEnabled() )
-        {
-            logger.debug( "Resolved plugin version for " + 
request.getGroupId() + ":" + request.getArtifactId()
-                + " to " + result.getVersion() + " from repository "
-                + ( result.getRepository() != null ? 
result.getRepository().getId() : "null" ) );
-        }
-
         return result;
     }
 
@@ -209,4 +237,43 @@ public class DefaultPluginVersionResolve
         return target.merge( source );
     }
 
+    private PluginVersionResult resolveFromProject( PluginVersionRequest 
request )
+    {
+        PluginVersionResult result = null;
+
+        if ( request.getPom() != null && request.getPom().getBuild() != null )
+        {
+            Build build = request.getPom().getBuild();
+
+            result = resolveFromProject( request, build.getPlugins() );
+
+            if ( result == null && build.getPluginManagement() != null )
+            {
+                result = resolveFromProject( request, 
build.getPluginManagement().getPlugins() );
+            }
+        }
+
+        return result;
+    }
+
+    private PluginVersionResult resolveFromProject( PluginVersionRequest 
request, List<Plugin> plugins )
+    {
+        for ( Plugin plugin : plugins )
+        {
+            if ( request.getGroupId().equals( plugin.getGroupId() )
+                && request.getArtifactId().equals( plugin.getArtifactId() ) )
+            {
+                if ( plugin.getVersion() != null )
+                {
+                    return new DefaultPluginVersionResult( plugin.getVersion() 
);
+                }
+                else
+                {
+                    return null;
+                }
+            }
+        }
+        return null;
+    }
+
 }

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResult.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResult.java?rev=927604&r1=927603&r2=927604&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResult.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResult.java
 Thu Mar 25 21:55:08 2010
@@ -35,6 +35,16 @@ class DefaultPluginVersionResult
 
     private ArtifactRepository repository;
 
+    public DefaultPluginVersionResult()
+    {
+        // does nothing
+    }
+
+    public DefaultPluginVersionResult( String version )
+    {
+        this.version = version;
+    }
+
     public String getVersion()
     {
         return version;


Reply via email to