SLING-10858: clear apiregions for each artifact
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java b/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
index 7eab0ab..2a2d016 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
@@ -161,6 +161,7 @@
targetFeature = new Feature(packageId.changeClassifier(null).changeType(SLING_OSGI_FEATURE_TILE_TYPE));
runModes.clear();
+ apiRegionExports.clear();
}
@Override
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
index 7f8fc0c..4b93380 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
@@ -72,6 +72,72 @@
}
@Test
+ public void testExportsToAPIRegionMultipleArtifacts() throws Exception {
+ ((DefaultFeaturesManager) featuresManager).setExportToAPIRegion("global");
+ ((DefaultFeaturesManager) featuresManager).setAPIRegions(Collections.singletonList("deprecated"));
+ featuresManager.init(ArtifactId.parse("g:a:1"));
+ featuresManager.addAPIRegionExport(null, "org.foo.a");
+ featuresManager.addAPIRegionExport(null, "org.foo.b");
+ featuresManager.addAPIRegionExport("rm1", "x.y");
+
+ featuresManager.serialize();
+
+ featuresManager.init(ArtifactId.parse("g:b:1"));
+
+ featuresManager.addAPIRegionExport(null, "org.foo.c");
+ featuresManager.addAPIRegionExport(null, "org.foo.d");
+ featuresManager.addAPIRegionExport("rm1", "x.y.z");
+
+ featuresManager.serialize();
+
+ try (InputStream in = new FileInputStream(new File(tempDir.toFile(), "b.json"))) {
+ JsonParser p = Json.createParser(in);
+ JsonObject jo = p.getObject();
+
+ assertEquals("g:b:slingosgifeature:1", jo.getString("id"));
+
+ JsonArray ja = jo.getJsonArray("api-regions:JSON|false");
+ assertEquals(2, ja.size());
+
+ JsonObject ar1 = ja.getJsonObject(0);
+ assertEquals("global", ar1.getString("name"));
+ JsonArray are1 = ar1.getJsonArray("exports");
+
+ assertEquals(Arrays.asList("org.foo.c", "org.foo.d"),
+ are1.getValuesAs(JsonString::getString));
+
+ JsonObject ar2 = ja.getJsonObject(1);
+ assertEquals("deprecated", ar2.getString("name"));
+ JsonArray are2 = ar2.getJsonArray("exports");
+ assertTrue(are2 == null || are2.isEmpty());
+ }
+
+ // Runmode file:
+ try (InputStream in = new FileInputStream(new File(tempDir.toFile(), "b-rm1.json"))) {
+ JsonParser p = Json.createParser(in);
+ JsonObject jo = p.getObject();
+
+ assertEquals("g:b:slingosgifeature:rm1:1", jo.getString("id"));
+
+ JsonArray ja = jo.getJsonArray("api-regions:JSON|false");
+ assertEquals(2, ja.size());
+
+ JsonObject ar1 = ja.getJsonObject(0);
+ assertEquals("global", ar1.getString("name"));
+ JsonArray are1 = ar1.getJsonArray("exports");
+
+ assertEquals(Arrays.asList("x.y.z"),
+ are1.getValuesAs(JsonString::getString));
+
+ JsonObject ar2 = ja.getJsonObject(1);
+ assertEquals("deprecated", ar2.getString("name"));
+ JsonArray are2 = ar2.getJsonArray("exports");
+ assertTrue(are2 == null || are2.isEmpty());
+ }
+
+ }
+
+ @Test
public void testExportsToAPIRegion() throws Exception {
((DefaultFeaturesManager) featuresManager).setExportToAPIRegion("global");
((DefaultFeaturesManager) featuresManager).setAPIRegions(Collections.singletonList("deprecated"));