Author: lcorneliussen
Date: Fri Apr 27 19:06:52 2012
New Revision: 1331545

URL: http://svn.apache.org/viewvc?rev=1331545&view=rev
Log:
[NPANDAY-556] Importer for Nuget Packages
               
o now only installs or deploys once to a repo
o after clean, it'll install everything again

Modified:
    
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
    
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
    
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
    
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
    
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java

Modified: 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
--- 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
 (original)
+++ 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
 Fri Apr 27 19:06:52 2012
@@ -115,10 +115,11 @@ public abstract class AbstractDeployMojo
      *
      * @param source   the file to deploy
      * @param artifact the artifact definition
+     * @param deploymentRepo
      * @throws ArtifactDeploymentException if an error occurred deploying the 
artifact
      */
     protected void deploy(
-        File source, Artifact artifact ) throws MojoExecutionException, 
MojoFailureException
+        File source, Artifact artifact, ArtifactRepository deploymentRepo ) 
throws MojoExecutionException, MojoFailureException
     {
         int retryFailedDeploymentCount = Math.max( 1, Math.min( 10, 
this.retryFailedDeploymentCount ) );
         ArtifactDeploymentException exception = null;
@@ -133,7 +134,8 @@ public abstract class AbstractDeployMojo
                             + retryFailedDeploymentCount
                     );
                 }
-                deployer.deploy( source, artifact, getDeploymentRepository(), 
getLocalArtifactRepository() );
+                deployer.deploy( source, artifact, deploymentRepo, 
getLocalArtifactRepository() );
+
                 exception = null;
                 break;
             }

Modified: 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
--- 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
 (original)
+++ 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
 Fri Apr 27 19:06:52 2012
@@ -19,20 +19,11 @@
 
 package npanday.plugin.libraryimporter.deploy;
 
-import com.google.common.base.Strings;
-import npanday.plugin.libraryimporter.model.NugetPackage;
 import npanday.plugin.libraryimporter.model.NugetPackageLibrary;
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.installer.ArtifactInstallationException;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-
-import java.io.File;
 
 /**
  * Mojo for deploying the resolved libraries to the local repository.
@@ -46,7 +37,27 @@ public class DeployLibraries
     @Override
     protected void handleGeneratedArtifacts( NugetPackageLibrary lib, Artifact 
artifact ) throws MojoExecutionException, MojoFailureException
     {
-       deploy( artifact.getFile(), artifact );
+        ArtifactRepository repo = getDeploymentRepository();
+        if (lib.getMarkerFileFor( artifact, repo ).exists()){
+            if ( getLog().isDebugEnabled() )
+            {
+                getLog().debug(
+                    "NPANDAY-152-002: artifact " + artifact.getId() + " has 
yet been deployed to " + repo.getUrl()
+                );
+            }
+        }
+
+        if ( getLog().isDebugEnabled() )
+        {
+            getLog().debug(
+                "NPANDAY-152-001: deploying artifact " + artifact.getId() + " 
to " + repo.getUrl()
+            );
+        }
+
+
+        deploy( artifact.getFile(), artifact, repo );
+
+        markDeployed( lib, artifact, repo );
     }
 
 }

Modified: 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
--- 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
 (original)
+++ 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
 Fri Apr 27 19:06:52 2012
@@ -24,6 +24,7 @@ import npanday.plugin.libraryimporter.mo
 import npanday.plugin.libraryimporter.skeletons.AbstractHandleEachLibraryMojo;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.installer.ArtifactInstallationException;
 import org.apache.maven.artifact.installer.ArtifactInstaller;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -125,7 +126,9 @@ public abstract class AbstractInstallMoj
      */
     protected File getLocalRepoFile( ArtifactMetadata metadata )
     {
-        String path = 
getLocalArtifactRepository().pathOfLocalRepositoryMetadata( metadata, 
getLocalArtifactRepository() );
+        String path = 
getLocalArtifactRepository().pathOfLocalRepositoryMetadata(
+            metadata, getLocalArtifactRepository()
+        );
         return new File( getLocalArtifactRepository().getBasedir(), path );
     }
 
@@ -140,8 +143,7 @@ public abstract class AbstractInstallMoj
      * @param artifact The artifact for which to create checksums, must not be 
<code>null</code>.
      * @throws MojoExecutionException If the checksums could not be installed.
      */
-    protected void installChecksums( Artifact artifact )
-        throws MojoExecutionException
+    protected void installChecksums( Artifact artifact ) throws 
MojoExecutionException
     {
         if ( !createChecksums )
         {
@@ -167,11 +169,10 @@ public abstract class AbstractInstallMoj
      * Installs the checksums for the specified file (if it exists).
      *
      * @param installedFile The path to the already installed file in the 
local repo for which to generate checksums,
-     *            must not be <code>null</code>.
+     *                      must not be <code>null</code>.
      * @throws MojoExecutionException If the checksums could not be installed.
      */
-    private void installChecksums( File installedFile )
-        throws MojoExecutionException
+    private void installChecksums( File installedFile ) throws 
MojoExecutionException
     {
         boolean signatureFile = installedFile.getName().endsWith( ".asc" );
         if ( installedFile.isFile() && !signatureFile )
@@ -184,16 +185,16 @@ public abstract class AbstractInstallMoj
     /**
      * Installs a checksum for the specified file.
      *
-     * @param originalFile The path to the file from which the checksum is 
generated, must not be <code>null</code>.
+     * @param originalFile  The path to the file from which the checksum is 
generated, must not be <code>null</code>.
      * @param installedFile The base path from which the path to the checksum 
files is derived by appending the given
-     *            file extension, must not be <code>null</code>.
-     * @param digester The checksum algorithm to use, must not be 
<code>null</code>.
-     * @param ext The file extension (including the leading dot) to use for 
the checksum file, must not be
-     *            <code>null</code>.
+     *                      file extension, must not be <code>null</code>.
+     * @param digester      The checksum algorithm to use, must not be 
<code>null</code>.
+     * @param ext           The file extension (including the leading dot) to 
use for the checksum file, must not be
+     *                      <code>null</code>.
      * @throws MojoExecutionException If the checksum could not be installed.
      */
-    private void installChecksum( File originalFile, File installedFile, 
Digester digester, String ext )
-        throws MojoExecutionException
+    private void installChecksum( File originalFile, File installedFile, 
Digester digester, String ext ) throws
+        MojoExecutionException
     {
         String checksum;
         getLog().debug( "Calculating " + digester.getAlgorithm() + " checksum 
for " + originalFile );
@@ -203,8 +204,9 @@ public abstract class AbstractInstallMoj
         }
         catch ( DigesterException e )
         {
-            throw new MojoExecutionException( "Failed to calculate " + 
digester.getAlgorithm() + " checksum for "
-                + originalFile, e );
+            throw new MojoExecutionException(
+                "Failed to calculate " + digester.getAlgorithm() + " checksum 
for " + originalFile, e
+            );
         }
 
         File checksumFile = new File( installedFile.getAbsolutePath() + ext );
@@ -223,12 +225,15 @@ public abstract class AbstractInstallMoj
     protected ArtifactRepository getLocalArtifactRepository()
     {
         ArtifactRepositoryLayout layout = new DefaultRepositoryLayout();
-        if (!Strings.isNullOrEmpty( localRepository )) {
+        if ( !Strings.isNullOrEmpty( localRepository ) )
+        {
             String localRepoUrl = new File( localRepository 
).toURI().toString();
 
             getLog().info( "NPANDAY-146-002: Using alternate local repository 
" + localRepository );
 
-            localArtifactRepository = 
artifactRepositoryFactory.createArtifactRepository( "library-importer-local", 
localRepoUrl, layout, null, null );
+            localArtifactRepository = 
artifactRepositoryFactory.createArtifactRepository(
+                "library-importer-local", localRepoUrl, layout, null, null
+            );
         }
         return localArtifactRepository;
     }
@@ -247,6 +252,32 @@ public abstract class AbstractInstallMoj
         handleGeneratedArtifacts( lib, artifact );
     }
 
-    protected abstract void handleGeneratedArtifacts( NugetPackageLibrary lib, 
Artifact artifact ) throws MojoExecutionException,
+    protected void install( NugetPackageLibrary lib, Artifact artifact, 
ArtifactRepository localRepository ) throws
+        ArtifactInstallationException,
+        MojoExecutionException
+    {
+
+        installer.install( lib.getMavenArtifactFile(), artifact, 
localRepository );
+    }
+
+    protected void markDeployed( NugetPackageLibrary lib, Artifact artifact, 
ArtifactRepository repo ) throws
+        MojoExecutionException
+    {
+        File markerFile = lib.getMarkerFileFor( artifact, repo );
+
+        try
+        {
+            markerFile.createNewFile();
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException(
+                "NPANDAY-146-003: Error creating marker file for " + 
repo.getUrl() + ": " + markerFile.toPath()
+            );
+        }
+    }
+
+    protected abstract void handleGeneratedArtifacts( NugetPackageLibrary lib, 
Artifact artifact ) throws
+        MojoExecutionException,
         MojoFailureException;
 }

Modified: 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
--- 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
 (original)
+++ 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
 Fri Apr 27 19:06:52 2012
@@ -22,6 +22,7 @@ package npanday.plugin.libraryimporter.i
 import npanday.plugin.libraryimporter.model.NugetPackageLibrary;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.installer.ArtifactInstallationException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.MojoExecutionException;
 
 /**
@@ -36,6 +37,18 @@ public class InstallLibraries
     @Override
     protected void handleGeneratedArtifacts( NugetPackageLibrary lib, Artifact 
artifact ) throws MojoExecutionException
     {
+        ArtifactRepository repo = getLocalArtifactRepository();
+
+        if (lib.getMarkerFileFor( artifact, repo ).exists()){
+            if ( getLog().isDebugEnabled() )
+            {
+                getLog().debug(
+                    "NPANDAY-146-002: artifact has yet been installed to local 
repository: " + artifact.getId()
+                );
+            }
+            return;
+        }
+
         if ( getLog().isDebugEnabled() )
         {
             getLog().debug(
@@ -45,7 +58,9 @@ public class InstallLibraries
 
         try
         {
-            installer.install( lib.getMavenArtifactFile(), artifact, 
getLocalArtifactRepository() );
+            install( lib, artifact, repo );
+
+            markDeployed( lib, artifact, repo);
         }
         catch ( ArtifactInstallationException e )
         {

Modified: 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
--- 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
 (original)
+++ 
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
 Fri Apr 27 19:06:52 2012
@@ -27,10 +27,15 @@ import npanday.plugin.libraryimporter.As
 import npanday.plugin.libraryimporter.LibImporterPathUtils;
 import npanday.plugin.libraryimporter.ManifestInfoParser;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.MojoExecutionException;
 
 import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.Collection;
 import java.util.List;
 
@@ -262,4 +267,30 @@ public class NugetPackageLibrary
         String folderName = getMavenGroupId() + "_" + getMavenArtifactId() + 
"_" + getMavenPackaging() + "_" + getMavenVersion();
         return new File( mavenProjectsCacheDirectory, folderName);
     }
+
+    public File getMarkerFileFor( Artifact artifact, ArtifactRepository repo )
+        throws MojoExecutionException
+    {
+        try
+        {
+            byte[] bytesOfMessage = (artifact.getId() + 
repo.getUrl()).getBytes("UTF-8");
+            MessageDigest md = MessageDigest.getInstance( "MD5" );
+            byte[] digest = md.digest(bytesOfMessage);
+            BigInteger bigInt = new BigInteger(1,digest);
+            String hashtext = bigInt.toString(16);
+            while(hashtext.length() < 32 ){
+                hashtext = "0"+hashtext;
+            }
+            return new File( getMavenProjectFolder(),  hashtext + 
".deploy-marker");
+        }
+        catch ( UnsupportedEncodingException e )
+        {
+            throw new MojoExecutionException("NPANDAY-145-005: Couldn't get 
the UTF-8 bytes", e);
+
+        }
+        catch ( NoSuchAlgorithmException e )
+        {
+            throw new MojoExecutionException("NPANDAY-145-006: Couldn't find 
MD5 algorithm", e);
+        }
+    }
 }


Reply via email to