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/11/07 11:37:28 UTC

[sling-org-apache-sling-feature-extension-apiregions] 04/13: SLING-7779 API Region support for the Sling Feature Model

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-org-apache-sling-feature-extension-apiregions.git

commit 627b8b3a6efee14d783bc1654a474d1b2b9717a5
Author: David Bosschaert <bo...@adobe.com>
AuthorDate: Fri Nov 2 16:28:58 2018 +0000

    SLING-7779 API Region support for the Sling Feature Model
    
    Unit tests for the APIRegionHandler and renamed package.
---
 .../apiregions/APIRegionMergeHandler.java}         |  4 +-
 .../apiregions}/AbstractHandler.java               |  2 +-
 .../apiregions}/BundleArtifactFeatureHandler.java  |  2 +-
 .../apiregions}/BundleMappingHandler.java          |  2 +-
 .../apiregions/APIRegionMergeHandlerTest.java      | 80 ++++++++++++++++++++++
 .../BundleArtifactFeatureHandlerTest.java          |  1 -
 .../apiregions/BundleMappingHandlerTest.java       |  2 +-
 7 files changed, 86 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/whitelisting/extensions/APIRegionHandler.java b/src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
similarity index 95%
rename from src/main/java/org/apache/sling/feature/whitelisting/extensions/APIRegionHandler.java
rename to src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
index 1756412..f1c0d52 100644
--- a/src/main/java/org/apache/sling/feature/whitelisting/extensions/APIRegionHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.whitelisting.extensions;
+package org.apache.sling.feature.extension.apiregions;
 
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.Feature;
@@ -32,7 +32,7 @@ import javax.json.JsonReader;
 import javax.json.JsonValue;
 import javax.json.stream.JsonGenerator;
 
-public class APIRegionHandler implements MergeHandler {
+public class APIRegionMergeHandler implements MergeHandler {
 
     @Override
     public boolean canMerge(Extension extension) {
diff --git a/src/main/java/org/apache/sling/feature/whitelisting/extensions/AbstractHandler.java b/src/main/java/org/apache/sling/feature/extension/apiregions/AbstractHandler.java
similarity index 97%
rename from src/main/java/org/apache/sling/feature/whitelisting/extensions/AbstractHandler.java
rename to src/main/java/org/apache/sling/feature/extension/apiregions/AbstractHandler.java
index ddc2d5e..122c22b 100644
--- a/src/main/java/org/apache/sling/feature/whitelisting/extensions/AbstractHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/AbstractHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.whitelisting.extensions;
+package org.apache.sling.feature.extension.apiregions;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/src/main/java/org/apache/sling/feature/whitelisting/extensions/BundleArtifactFeatureHandler.java b/src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
similarity index 98%
rename from src/main/java/org/apache/sling/feature/whitelisting/extensions/BundleArtifactFeatureHandler.java
rename to src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
index 786ed77..0b04c4f 100644
--- a/src/main/java/org/apache/sling/feature/whitelisting/extensions/BundleArtifactFeatureHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.whitelisting.extensions;
+package org.apache.sling.feature.extension.apiregions;
 
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Extension;
diff --git a/src/main/java/org/apache/sling/feature/whitelisting/extensions/BundleMappingHandler.java b/src/main/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandler.java
similarity index 97%
rename from src/main/java/org/apache/sling/feature/whitelisting/extensions/BundleMappingHandler.java
rename to src/main/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandler.java
index 02ab958..38896e1 100644
--- a/src/main/java/org/apache/sling/feature/whitelisting/extensions/BundleMappingHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.whitelisting.extensions;
+package org.apache.sling.feature.extension.apiregions;
 
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Extension;
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java
new file mode 100644
index 0000000..db9bcd0
--- /dev/null
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.feature.extension.apiregions;
+
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Extension;
+import org.apache.sling.feature.ExtensionType;
+import org.apache.sling.feature.Feature;
+import org.junit.Test;
+
+import java.io.StringReader;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonReader;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class APIRegionMergeHandlerTest {
+    @Test
+    public void testCanMerge() {
+        APIRegionMergeHandler armh = new APIRegionMergeHandler();
+
+        Extension ex = new Extension(ExtensionType.JSON, "api-regions", false);
+        assertTrue(armh.canMerge(ex));
+        assertFalse(armh.canMerge(new Extension(ExtensionType.JSON, "foo", false)));
+    }
+
+    @Test
+    public void testAPIRegionMergeHandler() {
+        APIRegionMergeHandler armh = new APIRegionMergeHandler();
+
+        Feature tf = new Feature(ArtifactId.fromMvnId("x:t:1"));
+        Feature sf = new Feature(ArtifactId.fromMvnId("y:s:2"));
+
+        Extension tgEx = new Extension(ExtensionType.JSON, "api-regions", false);
+        tgEx.setJSON("[{\"name\":\"global\","
+                + "\"exports\": [\"a.b.c\",\"d.e.f\"]},"
+                + "{\"name\":\"internal\","
+                + "\"exports\":[\"xyz\"],"
+                + "\"org-feature\":\"some:feature:1\"}]");
+
+        Extension srEx = new Extension(ExtensionType.JSON, "api-regions", false);
+        srEx.setJSON("[{\"name\":\"global\","
+                + "\"exports\": [\"test\"]}]");
+
+        armh.merge(null, tf, sf, tgEx, srEx);
+
+        String expectedJSON = "[{\"name\":\"global\","
+                + "\"exports\": [\"a.b.c\",\"d.e.f\"]},"
+                + "{\"name\":\"internal\","
+                + "\"exports\":[\"xyz\"],"
+                + "\"org-feature\":\"some:feature:1\"},"
+                + "{\"name\":\"global\","
+                + "\"org-feature\":\"y:s:2\","
+                + "\"exports\": [\"test\"]}]";
+        JsonReader er = Json.createReader(new StringReader(expectedJSON));
+        JsonReader ar = Json.createReader(new StringReader(tgEx.getJSON()));
+        JsonArray ea = er.readArray();
+        JsonArray aa = ar.readArray();
+
+        assertEquals(ea, aa);
+    }
+}
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandlerTest.java
index 06942ea..3cff17f 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/BundleArtifactFeatureHandlerTest.java
@@ -21,7 +21,6 @@ import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.whitelisting.extensions.BundleArtifactFeatureHandler;
 import org.junit.Test;
 
 import java.io.FileReader;
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandlerTest.java
index 1b24f9f..b65764f 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/BundleMappingHandlerTest.java
@@ -22,7 +22,7 @@ import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.builder.ArtifactProvider;
-import org.apache.sling.feature.whitelisting.extensions.BundleMappingHandler;
+import org.apache.sling.feature.extension.apiregions.BundleMappingHandler;
 import org.junit.Test;
 
 import java.io.File;