You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/04/04 13:57:58 UTC

[sling-whiteboard] branch master updated: Convert repoinit sections to use JSON array representation

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

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


The following commit(s) were added to refs/heads/master by this push:
     new c2c9f87  Convert repoinit sections to use JSON array representation
c2c9f87 is described below

commit c2c9f87c73ae295b465da316e1c945b2a8638d72
Author: David Bosschaert <da...@gmail.com>
AuthorDate: Wed Apr 4 14:57:26 2018 +0100

    Convert repoinit sections to use JSON array representation
---
 .../modelconverter/impl/FeatureToProvisioning.java | 23 ++++++++++++++++-
 .../modelconverter/impl/ProvisioningToFeature.java | 29 +++++++++++++++++++---
 .../modelconverter/impl/ModelConverterTest.java    | 13 +++++++---
 .../src/test/resources/repoinit.json               |  2 +-
 4 files changed, 59 insertions(+), 8 deletions(-)

diff --git a/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java b/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java
index 3c526c2..04b8428 100644
--- a/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java
+++ b/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/FeatureToProvisioning.java
@@ -21,6 +21,7 @@ import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Bundles;
 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.KeyValueMap;
 import org.apache.sling.feature.process.FeatureResolver;
@@ -41,11 +42,18 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.StringReader;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonReader;
+import javax.json.JsonString;
+import javax.json.JsonValue;
+
 /** Converter that converts the feature model to the provisioning model.
  */
 public class FeatureToProvisioning {
@@ -214,7 +222,20 @@ public class FeatureToProvisioning {
 
             } else if ( Extension.NAME_REPOINIT.equals(ext.getName()) ) {
                 final Section section = new Section("repoinit");
-                section.setContents(ext.getText());
+                if (ext.getType() == ExtensionType.TEXT) {
+                    section.setContents(ext.getText());
+                } else if (ext.getType() == ExtensionType.JSON) {
+                    JsonReader reader = Json.createReader(new StringReader(ext.getJSON()));
+                    JsonArray arr = reader.readArray();
+                    StringBuilder sb = new StringBuilder();
+                    for (JsonValue v : arr) {
+                        if (v instanceof JsonString) {
+                            sb.append(((JsonString) v).getString());
+                            sb.append('\n');
+                        }
+                    }
+                    section.setContents(sb.toString());
+                }
                 f.getAdditionalSections().add(section);
             } else if ( ext.isRequired() ) {
                 LOGGER.error("Unable to convert required extension {}", ext.getName());
diff --git a/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/ProvisioningToFeature.java b/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/ProvisioningToFeature.java
index 70a6d76..cf1a973 100644
--- a/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/ProvisioningToFeature.java
+++ b/featuremodel/feature-modelconverter/src/main/java/org/apache/sling/feature/modelconverter/impl/ProvisioningToFeature.java
@@ -405,11 +405,34 @@ public class ProvisioningToFeature {
         }
         Extension repoExtension = extensions.getByName(Extension.NAME_REPOINIT);
         for(final Section sect : feature.getAdditionalSections("repoinit")) {
-            final String text = sect.getContents();
+            String text = sect.getContents();
             if ( repoExtension == null ) {
-                repoExtension = new Extension(ExtensionType.TEXT, Extension.NAME_REPOINIT, true);
+//                repoExtension = new Extension(ExtensionType.TEXT, Extension.NAME_REPOINIT, true);
+//                extensions.add(repoExtension);
+//                repoExtension.setJSON(text);
+
+                repoExtension = new Extension(ExtensionType.JSON, Extension.NAME_REPOINIT, true);
                 extensions.add(repoExtension);
-                repoExtension.setText(text);
+                text = text.replace('\t', ' ');
+                String[] lines = text.split("[\n]");
+
+                StringBuilder sb = new StringBuilder();
+                sb.append('[');
+
+                boolean first = true;
+                for (String t : lines) {
+                    if (first)
+                        first = false;
+                    else
+                        sb.append(',');
+
+                    sb.append('"');
+                    sb.append(t);
+                    sb.append('"');
+                }
+                sb.append(']');
+
+                repoExtension.setJSON(sb.toString());
             } else {
                 repoExtension.setText(repoExtension.getText() + "\n\n" + text);
             }
diff --git a/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java b/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java
index 4231489..df0eacf 100644
--- a/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java
+++ b/featuremodel/feature-modelconverter/src/test/java/org/apache/sling/feature/modelconverter/impl/ModelConverterTest.java
@@ -19,6 +19,7 @@ package org.apache.sling.feature.modelconverter.impl;
 import org.apache.sling.feature.Bundles;
 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.support.ArtifactManager;
 import org.apache.sling.feature.support.ArtifactManagerConfig;
@@ -505,9 +506,15 @@ public class ModelConverterTest {
             assertEquals(ex.getName(), ac.getName());
             assertEquals(ex.isRequired(), ac.isRequired());
 
-            String exTxt = ex.getText().replaceAll("\\s+", "");
-            String acTxt = ac.getText().replaceAll("\\s+", "");
-            assertEquals(exTxt, acTxt);
+            if (ex.getType() == ExtensionType.TEXT) {
+                String exTxt = ex.getText().replaceAll("\\s+", "");
+                String acTxt = ac.getText().replaceAll("\\s+", "");
+                assertEquals(exTxt, acTxt);
+            } else if (ex.getType() == ExtensionType.JSON) {
+                String exJson = ex.getJSON().replaceAll("\\s+", "").replaceAll("\"\",", "");
+                String acJson = ac.getJSON().replaceAll("\\s+", "").replaceAll("\"\",", "");
+                assertEquals(exJson, acJson);
+            }
 
             /* TODO reinstantiate for Artifacts extentions
             assertEquals(ex.getArtifacts().size(), ac.getArtifacts().size());
diff --git a/featuremodel/feature-modelconverter/src/test/resources/repoinit.json b/featuremodel/feature-modelconverter/src/test/resources/repoinit.json
index 01d3b16..1fe41f3 100644
--- a/featuremodel/feature-modelconverter/src/test/resources/repoinit.json
+++ b/featuremodel/feature-modelconverter/src/test/resources/repoinit.json
@@ -21,7 +21,7 @@
             "references":"model@repoinit:context:/resources/provisioning/model.txt"
         }
     },
-    "repoinit:TEXT|false": [
+    "repoinit:JSON|false": [
         "# general",
         "create path (sling:OrderedFolder) /content",
         "set ACL for everyone",

-- 
To stop receiving notification emails like this one, please contact
davidb@apache.org.