You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2019/06/07 16:43:35 UTC

[sling-slingfeature-maven-plugin] 01/01: SLING-8421: Allow artifact providers that work with URLs instead of Files

This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch issues/SLING-8421
in repository https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git

commit daf5fe16ea9c11caf7a8a4142f85cdcba6b4d068
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Fri Jun 7 18:43:20 2019 +0200

    SLING-8421: Allow artifact providers that work with URLs instead of Files
---
 pom.xml                                            |  6 +++---
 .../apache/sling/feature/maven/Preprocessor.java   | 20 +++++++++++++----
 .../feature/maven/mojos/AggregateFeaturesMojo.java | 18 ++++++++++++----
 .../feature/maven/mojos/AnalyseFeaturesMojo.java   | 14 ++++++++++--
 .../sling/feature/maven/mojos/ApisJarMojo.java     | 25 +++++++++++++++-------
 5 files changed, 62 insertions(+), 21 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7d9f48a..b171561 100644
--- a/pom.xml
+++ b/pom.xml
@@ -159,17 +159,17 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
-            <version>1.0.2</version>
+            <version>1.0.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature.io</artifactId>
-            <version>1.0.2</version>
+            <version>1.0.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature.analyser</artifactId>
-            <version>1.0.2</version>
+            <version>1.0.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>
diff --git a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
index a1661e1..9562877 100644
--- a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
+++ b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
@@ -23,6 +23,7 @@ import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.Formatter;
 import java.util.HashMap;
@@ -218,10 +219,21 @@ public class Preprocessor {
     		                config.isSkipAddDependencies(),
                                     config.getScope(), null))
                                             .setArtifactProvider(
-                                                    aid -> ProjectHelper
-                                                            .getOrResolveArtifact(info.project, env.session,
-                                                                    env.artifactHandlerManager, env.resolver, aid)
-                                                            .getFile()));
+                                                    aid ->
+                                                    {
+                                                        try
+                                                        {
+                                                            return ProjectHelper
+                                                                    .getOrResolveArtifact(info.project, env.session,
+                                                                            env.artifactHandlerManager, env.resolver, aid)
+                                                                    .getFile().toURI().toURL();
+                                                        }
+                                                        catch (Exception e)
+                                                        {
+                                                            env.logger.error(e.getMessage(), e);
+                                                            return null;
+                                                        }
+                                                    }));
     	            aggregatedFeatures.put(entry.getKey(), assembledFeature);
     	            break;
         		}
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java
index c600d02..6ba448b 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java
@@ -34,6 +34,8 @@ import org.apache.sling.feature.maven.FeatureConstants;
 import org.apache.sling.feature.maven.ProjectHelper;
 
 import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -117,7 +119,7 @@ public class AggregateFeaturesMojo extends AbstractIncludingFeatureMojo {
             }).setArtifactProvider(new ArtifactProvider() {
 
                 @Override
-                public File provide(final ArtifactId id) {
+                public URL provide(final ArtifactId id) {
                     if (ProjectHelper.isLocalProjectArtifact(project, id)) {
                         for (final Map.Entry<String, Feature> entry : ProjectHelper.getAssembledFeatures(project)
                                 .entrySet()) {
@@ -128,9 +130,17 @@ public class AggregateFeaturesMojo extends AbstractIncludingFeatureMojo {
                             }
                         }
                     }
-                    return ProjectHelper
-                            .getOrResolveArtifact(project, mavenSession, artifactHandlerManager, artifactResolver, id)
-                            .getFile();
+                    try
+                    {
+                        return ProjectHelper
+                                .getOrResolveArtifact(project, mavenSession, artifactHandlerManager, artifactResolver, id)
+                                .getFile().toURI().toURL();
+                    }
+                    catch (Exception e)
+                    {
+                        getLog().error(e);
+                        return null;
+                    }
                 }
             }).addArtifactsOverrides(artifactsOverrides)
                 .addVariablesOverrides(variablesOverwrites)
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java
index f04c7b5..613d256 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java
@@ -34,6 +34,8 @@ import org.apache.sling.feature.scanner.Scanner;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -73,8 +75,16 @@ public class AnalyseFeaturesMojo extends AbstractIncludingFeatureMojo {
         final ArtifactProvider am = new ArtifactProvider() {
 
             @Override
-            public File provide(final ArtifactId id) {
-                return ProjectHelper.getOrResolveArtifact(project, mavenSession, artifactHandlerManager, artifactResolver, id).getFile();
+            public URL provide(final ArtifactId id) {
+                try
+                {
+                    return ProjectHelper.getOrResolveArtifact(project, mavenSession, artifactHandlerManager, artifactResolver, id).getFile().toURI().toURL();
+                }
+                catch (Exception e)
+                {
+                    getLog().error(e);
+                    return null;
+                }
             }
         };
 
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
index e23e5ae..18caf5a 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
@@ -19,6 +19,8 @@ package org.apache.sling.feature.maven.mojos;
 import java.io.File;
 import java.io.IOException;
 import java.io.StringReader;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -168,10 +170,17 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo implements Artifac
         artifactProvider = new ArtifactProvider() {
 
             @Override
-            public File provide(final ArtifactId id) {
-                return ProjectHelper.getOrResolveArtifact(project, mavenSession, artifactHandlerManager, artifactResolver, id).getFile();
+            public URL provide(final ArtifactId id) {
+                try
+                {
+                    return ProjectHelper.getOrResolveArtifact(project, mavenSession, artifactHandlerManager, artifactResolver, id).getFile().toURI().toURL();
+                }
+                catch (Exception e)
+                {
+                    getLog().error(e);
+                    return null;
+                }
             }
-
         };
 
         getLog().debug("Retrieving Feature files...");
@@ -263,7 +272,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo implements Artifac
                             File deflatedSourcesDir,
                             File checkedOutSourcesDir) throws MojoExecutionException {
         ArtifactId artifactId = artifact.getId();
-        File bundleFile = retrieve(artifactId);
+        File bundleFile = new File(retrieve(artifactId).getPath());
 
         Manifest manifest;
         if (wrappingBundleManifest == null) {
@@ -466,9 +475,9 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo implements Artifac
         }
     }
 
-    private File retrieve(ArtifactId artifactId) {
+    private URL retrieve(ArtifactId artifactId) {
         getLog().debug("Retrieving artifact " + artifactId + "...");
-        File sourceFile = artifactProvider.provide(artifactId);
+        URL sourceFile = artifactProvider.provide(artifactId);
         getLog().debug("Artifact " + artifactId + " successfully retrieved");
         return sourceFile;
     }
@@ -541,7 +550,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo implements Artifac
                                                     "sources",
                                                     "jar");
         try {
-            File sourcesBundle = retrieve(sourcesArtifactId);
+            File sourcesBundle = new File(retrieve(sourcesArtifactId).getPath());
             deflate(deflatedSourcesDir, sourcesBundle, exportedPackages);
         } catch (Throwable t) {
             getLog().warn("Impossible to download -sources bundle "
@@ -558,7 +567,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo implements Artifac
             ArtifactId pomArtifactId = newArtifacId(artifactId, null, "pom");
             getLog().debug("Falling back to SCM checkout, retrieving POM " + pomArtifactId + "...");
             // POM file must exist, let the plugin fail otherwise
-            File pomFile = retrieve(pomArtifactId);
+            File pomFile = new File(retrieve(pomArtifactId).getPath());
             getLog().debug("POM " + pomArtifactId + " successfully retrieved, reading the model...");
 
             // read model