You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/06/18 11:45:33 UTC

[sling-whiteboard] 03/05: [r2f] assemble right ArtifactId for runtime and diff Feature

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

simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit ce4c32a9f369ceffc9840e0b23240ab73ec56fc4
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Tue Jun 18 12:34:35 2019 +0200

    [r2f] assemble right ArtifactId for runtime and diff Feature
---
 ...ractRuntimeEnvironment2FeatureModelPrinter.java | 35 ++++++++++++++++-----
 .../impl/BaseFeature2CurrentRuntimePrinter.java    | 36 ++--------------------
 .../RuntimeEnvironment2FeatureModelPrinter.java    |  2 +-
 3 files changed, 31 insertions(+), 42 deletions(-)

diff --git a/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java b/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java
index cb7a1cb..c3df2e4 100644
--- a/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java
+++ b/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java
@@ -16,10 +16,16 @@
  */
 package org.apache.sling.feature.r2f.impl;
 
+import static java.nio.file.Files.newBufferedReader;
+import static org.apache.sling.feature.io.json.FeatureJSONReader.read;
 import static org.apache.sling.feature.io.json.FeatureJSONWriter.write;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.Reader;
+import java.net.URI;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
 import org.apache.felix.inventory.Format;
 import org.apache.felix.inventory.InventoryPrinter;
@@ -32,6 +38,8 @@ import org.osgi.framework.BundleContext;
 
 abstract class AbstractRuntimeEnvironment2FeatureModelPrinter implements InventoryPrinter {
 
+    private static final String SLING_FEATURE_PROPERTY_NAME = "sling.feature";
+
     private final RuntimeEnvironment2FeatureModel generator;
 
     private final BundleContext bundleContext;
@@ -48,18 +56,31 @@ abstract class AbstractRuntimeEnvironment2FeatureModelPrinter implements Invento
 
     @Override
     public final void print(PrintWriter printWriter, Format format, boolean isZip) {
-        // TODO
-        String groupId = bundleContext.getProperty(null);
-        String artifactId = bundleContext.getProperty(null);
-        String version = bundleContext.getProperty(null);
-        String classifier = bundleContext.getProperty(null);
+        String previousFeatureLocation = getBundleContext().getProperty(SLING_FEATURE_PROPERTY_NAME);
+        URI previousFeatureURI = URI.create(previousFeatureLocation);
+        Path previousFeaturePath = Paths.get(previousFeatureURI);
+        Feature previousFeature = null;
+
+        try (Reader reader = newBufferedReader(previousFeaturePath)) {
+            previousFeature = read(reader, previousFeatureLocation);
+        } catch (IOException e) {
+            throw new RuntimeException("An error occurred while reading 'sling.feature' framework-property "
+                    + previousFeatureLocation
+                    + ", see causing error(s):",
+                    e);
+        }
+
+        String groupId = previousFeature.getId().getGroupId();
+        String artifactId = previousFeature.getId().getArtifactId();
+        String version = previousFeature.getId().getArtifactId();
+        String classifier = previousFeature.getId().getArtifactId() + "-RUNTIME";
 
         ConversionRequest request = new DefaultConversionRequest()
                                     .setBundleContext(bundleContext)
                                     .setResultId(new ArtifactId(groupId, artifactId, version, classifier, null));
         Feature currentFeature = generator.scanAndAssemble(request);
 
-        Feature computedFeature = compute(currentFeature);
+        Feature computedFeature = compute(previousFeature, currentFeature);
 
         try {
             write(printWriter, computedFeature);
@@ -72,6 +93,6 @@ abstract class AbstractRuntimeEnvironment2FeatureModelPrinter implements Invento
         }
     }
 
-    protected abstract Feature compute(Feature currentFeature);
+    protected abstract Feature compute(Feature previousFeature, Feature currentFeature);
 
 }
diff --git a/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/BaseFeature2CurrentRuntimePrinter.java b/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/BaseFeature2CurrentRuntimePrinter.java
index 9e1fb82..f09e581 100644
--- a/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/BaseFeature2CurrentRuntimePrinter.java
+++ b/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/BaseFeature2CurrentRuntimePrinter.java
@@ -16,15 +16,7 @@
  */
 package org.apache.sling.feature.r2f.impl;
 
-import static java.nio.file.Files.newBufferedReader;
 import static org.apache.sling.feature.diff.FeatureDiff.compareFeatures;
-import static org.apache.sling.feature.io.json.FeatureJSONReader.read;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.net.URI;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
@@ -34,36 +26,12 @@ import org.osgi.framework.BundleContext;
 
 public class BaseFeature2CurrentRuntimePrinter extends AbstractRuntimeEnvironment2FeatureModelPrinter {
 
-    private static final String SLING_FEATURE_PROPERTY_NAME = "sling.feature";
-
     public BaseFeature2CurrentRuntimePrinter(RuntimeEnvironment2FeatureModel generator, BundleContext bundleContext) {
         super(generator, bundleContext);
     }
 
     @Override
-    protected Feature compute(Feature currentFeature) {
-        String previousFeatureLocation = getBundleContext().getProperty(SLING_FEATURE_PROPERTY_NAME);
-        URI previousFeatureURI = URI.create(previousFeatureLocation);
-        Path previousFeaturePath = Paths.get(previousFeatureURI);
-        Feature previousFeature = null;
-
-        try (Reader reader = newBufferedReader(previousFeaturePath)) {
-            previousFeature = read(reader, previousFeatureLocation);
-        } catch (IOException e) {
-            throw new RuntimeException("An error occurred while reading 'sling.feature' framework-property "
-                    + previousFeatureLocation
-                    + ", see causing error(s):",
-                    e);
-        }
-
-        StringBuilder classifier = new StringBuilder()
-                                   .append(previousFeature.getId().getVersion())
-                                   .append("-to-")
-                                   .append(currentFeature.getId().getVersion())
-                                   .append('-')
-                                   .append(currentFeature.getId().getClassifier())
-                                   .append("-upgrade");
-
+    protected Feature compute(Feature previousFeature, Feature currentFeature) {
         Feature featureDiff = compareFeatures(new DefaultDiffRequest()
                                               .setPrevious(previousFeature)
                                               .setCurrent(currentFeature)
@@ -72,7 +40,7 @@ public class BaseFeature2CurrentRuntimePrinter extends AbstractRuntimeEnvironmen
                                               .setResultId(new ArtifactId(currentFeature.getId().getGroupId(),
                                                            currentFeature.getId().getArtifactId(), 
                                                            currentFeature.getId().getVersion(),
-                                                           classifier.toString(),
+                                                           currentFeature.getId().getClassifier() + "_upgrade",
                                                            currentFeature.getId().getType())));
 
         return featureDiff;
diff --git a/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/RuntimeEnvironment2FeatureModelPrinter.java b/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/RuntimeEnvironment2FeatureModelPrinter.java
index 82eec3d..9e53c2e 100644
--- a/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/RuntimeEnvironment2FeatureModelPrinter.java
+++ b/runtime2feature/src/main/java/org/apache/sling/feature/r2f/impl/RuntimeEnvironment2FeatureModelPrinter.java
@@ -27,7 +27,7 @@ public final class RuntimeEnvironment2FeatureModelPrinter extends AbstractRuntim
     }
 
     @Override
-    protected Feature compute(Feature currentFeature) {
+    protected Feature compute(Feature previousFeature, Feature currentFeature) {
         return currentFeature;
     }