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/04/04 09:13:04 UTC

[sling-whiteboard] branch master updated: [feature-diff] compacted output format

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


The following commit(s) were added to refs/heads/master by this push:
     new 0382243  [feature-diff] compacted output format
0382243 is described below

commit 03822431f3c0d5f0eb61e7c0207c82d41666757a
Author: stripodi <st...@192.168.1.111>
AuthorDate: Thu Apr 4 11:12:55 2019 +0200

    [feature-diff] compacted output format
---
 feature-diff/README.md                             | 37 ++++++++++------------
 .../diff/io/json/FeatureDiffJSONSerializer.java    | 17 ++++------
 .../sling/feature/diff/io/json/expectedDiff.json   | 37 ++++++++++------------
 3 files changed, 38 insertions(+), 53 deletions(-)

diff --git a/feature-diff/README.md b/feature-diff/README.md
index 3d9fb47..e2b35d0 100644
--- a/feature-diff/README.md
+++ b/feature-diff/README.md
@@ -88,7 +88,7 @@ output is quiet easy to interpret, i.e. from a unit test case:
   "vendorURL":"http://www.apache.org/",
   "generator":"Apache Sling Feature Diff tool",
   "generatorURL":"https://github.com/apache/sling-org-apache-sling-feature-diff",
-  "generatedOn":"2019-04-04T12:24:25 +0200",
+  "generatedOn":"2019-04-04T11:08:51 +0200",
   "id":"org.apache.sling:org.apache.sling.feature.diff:1.0.0",
   "previousVersion":"0.9.0",
   "framework-properties":{
@@ -98,13 +98,12 @@ output is quiet easy to interpret, i.e. from a unit test case:
     "added":[
       "sling.framework.install.startlevel"
     ],
-    "updated":[
-      {
-        "id":"env",
+    "updated":{
+      "env":{
         "previous":"staging",
         "current":"prod"
       }
-    ]
+    }
   },
   "bundles":{
     "removed":[
@@ -113,18 +112,16 @@ output is quiet easy to interpret, i.e. from a unit test case:
     "added":[
       "org.apache.sling:org.apache.sling.feature.diff:added:1.0.0"
     ],
-    "updated":[
-      {
-        "id":"org.apache.sling:org.apache.sling.feature.diff:updated:2.0.0",
-        "updated":[
-          {
-            "id":"version",
+    "updated":{
+      "org.apache.sling:org.apache.sling.feature.diff:updated:2.0.0":{
+        "updated":{
+          "version":{
             "previous":"1.0.0",
             "current":"2.0.0"
           }
-        ]
+        }
       }
-    ]
+    }
   },
   "configurations":{
     "removed":[
@@ -133,24 +130,22 @@ output is quiet easy to interpret, i.e. from a unit test case:
     "added":[
       "org.apache.sling.feature.diff.config.added"
     ],
-    "updated":[
-      {
-        "id":"org.apache.sling.feature.diff.config.updated",
+    "updated":{
+      "org.apache.sling.feature.diff.config.updated":{
         "removed":[
           "it.will.appear.in.the.removed.section"
         ],
         "added":[
           "it.will.appear.in.the.added.section"
         ],
-        "updated":[
-          {
-            "id":"it.will.appear.in.the.updated.section",
+        "updated":{
+          "it.will.appear.in.the.updated.section":{
             "previous":"[{/log}]",
             "current":"[{/log,/etc}]"
           }
-        ]
+        }
       }
-    ]
+    }
   }
 }
 ```
diff --git a/feature-diff/src/main/java/org/apache/sling/feature/diff/io/json/FeatureDiffJSONSerializer.java b/feature-diff/src/main/java/org/apache/sling/feature/diff/io/json/FeatureDiffJSONSerializer.java
index df2da47..d146dd3 100644
--- a/feature-diff/src/main/java/org/apache/sling/feature/diff/io/json/FeatureDiffJSONSerializer.java
+++ b/feature-diff/src/main/java/org/apache/sling/feature/diff/io/json/FeatureDiffJSONSerializer.java
@@ -65,19 +65,14 @@ public final class FeatureDiffJSONSerializer {
         generator.write("previousVersion", featureDiff.getPrevious().getId().getVersion());
 
         for (DiffSection diffSection : featureDiff.getSections()) {
-            serializeDiffSection(diffSection, true, generator);
+            serializeDiffSection(diffSection, generator);
         }
 
         generator.writeEnd().close();
     }
 
-    private static void serializeDiffSection(DiffSection diffSection, boolean main, JsonGenerator generator) {
-        if (main) {
-            generator.writeStartObject(diffSection.getId());
-        } else {
-            generator.writeStartObject()
-                     .write("id", diffSection.getId());
-        }
+    private static void serializeDiffSection(DiffSection diffSection, JsonGenerator generator) {
+        generator.writeStartObject(diffSection.getId());
 
         if (diffSection.hasRemoved()) {
             writeArray("removed", diffSection.getRemoved(), generator);
@@ -88,17 +83,17 @@ public final class FeatureDiffJSONSerializer {
         }
 
         if (diffSection.hasUpdatedItems() || diffSection.hasUpdates()) {
-            generator.writeStartArray("updated");
+            generator.writeStartObject("updated");
 
             for (UpdatedItem<?> updatedItem : diffSection.getUpdatedItems()) {
-                generator.writeStartObject().write("id", updatedItem.getId());
+                generator.writeStartObject(updatedItem.getId());
                 writeValue("previous", updatedItem.getPrevious(), generator);
                 writeValue("current", updatedItem.getCurrent(), generator);
                 generator.writeEnd();
             }
 
             for (DiffSection updatesDiffSection : diffSection.getUpdates()) {
-                serializeDiffSection(updatesDiffSection, false, generator);
+                serializeDiffSection(updatesDiffSection, generator);
             }
 
             generator.writeEnd();
diff --git a/feature-diff/src/test/resources/org/apache/sling/feature/diff/io/json/expectedDiff.json b/feature-diff/src/test/resources/org/apache/sling/feature/diff/io/json/expectedDiff.json
index 7b1b55a..969406c 100644
--- a/feature-diff/src/test/resources/org/apache/sling/feature/diff/io/json/expectedDiff.json
+++ b/feature-diff/src/test/resources/org/apache/sling/feature/diff/io/json/expectedDiff.json
@@ -3,7 +3,7 @@
   "vendorURL":"http://www.apache.org/",
   "generator":"Apache Sling Feature Diff tool",
   "generatorURL":"https://github.com/apache/sling-org-apache-sling-feature-diff",
-  "generatedOn":"2019-04-04T12:24:25 +0200",
+  "generatedOn":"2019-04-04T11:08:51 +0200",
   "id":"org.apache.sling:org.apache.sling.feature.diff:1.0.0",
   "previousVersion":"0.9.0",
   "framework-properties":{
@@ -13,13 +13,12 @@
     "added":[
       "sling.framework.install.startlevel"
     ],
-    "updated":[
-      {
-        "id":"env",
+    "updated":{
+      "env":{
         "previous":"staging",
         "current":"prod"
       }
-    ]
+    }
   },
   "bundles":{
     "removed":[
@@ -28,18 +27,16 @@
     "added":[
       "org.apache.sling:org.apache.sling.feature.diff:added:1.0.0"
     ],
-    "updated":[
-      {
-        "id":"org.apache.sling:org.apache.sling.feature.diff:updated:2.0.0",
-        "updated":[
-          {
-            "id":"version",
+    "updated":{
+      "org.apache.sling:org.apache.sling.feature.diff:updated:2.0.0":{
+        "updated":{
+          "version":{
             "previous":"1.0.0",
             "current":"2.0.0"
           }
-        ]
+        }
       }
-    ]
+    }
   },
   "configurations":{
     "removed":[
@@ -48,23 +45,21 @@
     "added":[
       "org.apache.sling.feature.diff.config.added"
     ],
-    "updated":[
-      {
-        "id":"org.apache.sling.feature.diff.config.updated",
+    "updated":{
+      "org.apache.sling.feature.diff.config.updated":{
         "removed":[
           "it.will.appear.in.the.removed.section"
         ],
         "added":[
           "it.will.appear.in.the.added.section"
         ],
-        "updated":[
-          {
-            "id":"it.will.appear.in.the.updated.section",
+        "updated":{
+          "it.will.appear.in.the.updated.section":{
             "previous":"[{/log}]",
             "current":"[{/log,/etc}]"
           }
-        ]
+        }
       }
-    ]
+    }
   }
 }