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:41:53 UTC

[sling-org-apache-sling-feature-modelconverter] 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-org-apache-sling-feature-modelconverter.git

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

    SLING-8421: Allow artifact providers that work with URLs instead of Files
---
 pom.xml                                            |  4 ++--
 .../modelconverter/ProvisioningToFeature.java      | 25 ++++++++++++----------
 .../feature/modelconverter/ModelConverterTest.java | 18 +++++++++-------
 3 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/pom.xml b/pom.xml
index f695b50..77e9d15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,13 +69,13 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
-            <version>1.0.2</version>
+            <version>1.0.3-SNAPSHOT</version>
             <scope>provided</scope>
         </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>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
index 961b22a..02f27d3 100644
--- a/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
+++ b/src/main/java/org/apache/sling/feature/modelconverter/ProvisioningToFeature.java
@@ -20,6 +20,9 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -37,9 +40,9 @@ import org.apache.sling.feature.Configurations;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Extensions;
-import org.apache.sling.feature.io.file.ArtifactHandler;
-import org.apache.sling.feature.io.file.ArtifactManager;
-import org.apache.sling.feature.io.file.ArtifactManagerConfig;
+import org.apache.sling.feature.io.artifacts.ArtifactHandler;
+import org.apache.sling.feature.io.artifacts.ArtifactManager;
+import org.apache.sling.feature.io.artifacts.ArtifactManagerConfig;
 import org.apache.sling.feature.io.json.FeatureJSONWriter;
 import org.apache.sling.provisioning.model.Artifact;
 import org.apache.sling.provisioning.model.ArtifactGroup;
@@ -127,7 +130,7 @@ public class ProvisioningToFeature {
         Model model = null;
         for(final File initFile : files) {
             try {
-                model = processModel(model, initFile, includeModelInfo, variableResolver);
+                model = processModel(model, initFile.toURI().toURL(), includeModelInfo, variableResolver);
             } catch ( final IOException iae) {
                 LOGGER.error("Unable to read provisioning model {} : {}", initFile, iae.getMessage(), iae);
                 System.exit(1);
@@ -170,7 +173,7 @@ public class ProvisioningToFeature {
      * @throws IOException If reading fails
      */
     private static Model processModel(Model model,
-            File modelFile, boolean includeModelInfo) throws IOException {
+            URL modelFile, boolean includeModelInfo) throws IOException {
         return processModel(model, modelFile, includeModelInfo,
             new ResolverOptions().variableResolver(new VariableResolver() {
                 @Override
@@ -182,7 +185,7 @@ public class ProvisioningToFeature {
     }
 
     private static Model processModel(Model model,
-            File modelFile, boolean includeModelInfo, ResolverOptions options) throws IOException {
+            URL modelFile, boolean includeModelInfo, ResolverOptions options) throws IOException {
         LOGGER.info("- reading model {}", modelFile);
 
         final Model nextModel = readProvisioningModel(modelFile);
@@ -206,14 +209,14 @@ public class ProvisioningToFeature {
                                     "txt");
 
                             final ArtifactHandler handler = mgr.getArtifactHandler(correctedId.toMvnUrl());
-                            model = processModel(model, handler.getFile(), includeModelInfo);
+                            model = processModel(model, handler.getLocalURL(), includeModelInfo);
 
                             removeList.add(a);
                         } else {
                             final org.apache.sling.provisioning.model.Artifact realArtifact = nextModel.getFeature(feature.getName()).getRunMode(runMode.getNames()).getArtifactGroup(group.getStartLevel()).search(a);
 
                             if ( includeModelInfo ) {
-                                realArtifact.getMetadata().put("model-filename", modelFile.getName());
+                                realArtifact.getMetadata().put("model-filename", modelFile.getPath().substring(modelFile.getPath().lastIndexOf("/") + 1));
                             }
                             if ( runMode.getNames() != null ) {
                                 realArtifact.getMetadata().put("runmodes", String.join(",", runMode.getNames()));
@@ -238,10 +241,10 @@ public class ProvisioningToFeature {
     /**
      * Read the provisioning model
      */
-    private static Model readProvisioningModel(final File file)
+    private static Model readProvisioningModel(final URL file)
     throws IOException {
-        try (final FileReader is = new FileReader(file)) {
-            return ModelReader.read(is, file.getAbsolutePath());
+        try (final Reader is = new InputStreamReader(file.openStream(), "UTF-8")) {
+            return ModelReader.read(is, file.getPath());
         }
     }
 
diff --git a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
index 498cb2e..797ddf8 100644
--- a/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/modelconverter/ModelConverterTest.java
@@ -22,9 +22,9 @@ import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.builder.FeatureProvider;
-import org.apache.sling.feature.io.file.ArtifactHandler;
-import org.apache.sling.feature.io.file.ArtifactManager;
-import org.apache.sling.feature.io.file.ArtifactManagerConfig;
+import org.apache.sling.feature.io.artifacts.ArtifactHandler;
+import org.apache.sling.feature.io.artifacts.ArtifactManager;
+import org.apache.sling.feature.io.artifacts.ArtifactManagerConfig;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
 import org.apache.sling.provisioning.model.Artifact;
 import org.apache.sling.provisioning.model.ArtifactGroup;
@@ -50,9 +50,11 @@ import org.mockito.stubbing.Answer;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.UncheckedIOException;
 import java.net.URISyntaxException;
+import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -94,9 +96,9 @@ public class ModelConverterTest {
         featureProvider =
             id -> {
                 try {
-                    File file = artifactManager.getArtifactHandler(id.toMvnUrl()).getFile();
-                    try (Reader reader = new FileReader(file)) {
-                        return FeatureJSONReader.read(reader, file.toURI().toURL().toString());
+                    URL file = artifactManager.getArtifactHandler(id.toMvnUrl()).getLocalURL();
+                    try (Reader reader = new InputStreamReader(file.openStream(), "UTF-8")) {
+                        return FeatureJSONReader.read(reader, file.toString());
                     }
                 } catch (IOException e) {
                     throw new UncheckedIOException(e);
@@ -215,9 +217,9 @@ public class ModelConverterTest {
                 String url = in.getArgument(0).toString();
 
                 if (url.endsWith("simple_inherits.json")) {
-                    return new ArtifactHandler(url, new File(url));
+                    return new ArtifactHandler(url, new URL(url));
                 } else if ("mvn:generated/simple/1.0.0".equals(url)) {
-                    return new ArtifactHandler(url, new File(getClass().getResource("/simple.json").toURI()));
+                    return new ArtifactHandler(url, getClass().getResource("/simple.json"));
                 }
                 return null;
             }