You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2022/02/28 10:58:32 UTC

[sling-org-apache-sling-feature-extension-apiregions] branch SLING-11164 created (now 61bfdf2)

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

pauls pushed a change to branch SLING-11164
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git.


      at 61bfdf2  SLING-11164: keep feature to region cache on feature merge

This branch includes the following new commits:

     new 61bfdf2  SLING-11164: keep feature to region cache on feature merge

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[sling-org-apache-sling-feature-extension-apiregions] 01/01: SLING-11164: keep feature to region cache on feature merge

Posted by pa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch SLING-11164
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-apiregions.git

commit 61bfdf252643be9050188d60c704e74c6067079f
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Mon Feb 28 11:58:19 2022 +0100

    SLING-11164: keep feature to region cache on feature merge
---
 .../apiregions/ConfigurationApiMergeHandler.java   |  1 +
 .../ConfigurationApiMergeHandlerTest.java          | 41 ++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java b/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java
index 082ee61..45bf7a6 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java
@@ -101,6 +101,7 @@ public class ConfigurationApiMergeHandler implements MergeHandler {
             // update cache
             if ( !context.isPrototypeMerge() ) {
                 targetApi.getFeatureToRegionCache().put(sourceFeature.getId(), sourceApi.detectRegion());
+                targetApi.getFeatureToRegionCache().putAll(sourceApi.getFeatureToRegionCache());
             }
             
             ConfigurationApi.setConfigurationApi(targetFeature, targetApi);
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java
index f2fdb94..3231fbe 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandlerTest.java
@@ -382,4 +382,45 @@ public class ConfigurationApiMergeHandlerTest {
         assertTrue(api.getInternalFrameworkProperties().contains("pb"));
         assertTrue(api.getInternalFrameworkProperties().contains("pc"));
     }
+
+    @Test public void testConfigurationApiMergeRegionCache() {
+        final BuilderContext context = new BuilderContext(id -> null);
+        context.addMergeExtensions(new ConfigurationApiMergeHandler());
+
+        final Feature featureA = new Feature(ArtifactId.parse("g:a:1"));
+        final ConfigurationApi apiA = new ConfigurationApi();
+        apiA.setRegion(Region.INTERNAL);
+        ConfigurationApi.setConfigurationApi(featureA, apiA);
+
+        final Feature featureB = new Feature(ArtifactId.parse("g:b:1"));
+        final ConfigurationApi apiB = new ConfigurationApi();
+        apiB.setRegion(Region.GLOBAL);
+        ConfigurationApi.setConfigurationApi(featureB, apiB);
+
+
+        final Feature featureC = new Feature(ArtifactId.parse("g:c:1"));
+        final ConfigurationApi apiC = new ConfigurationApi();
+        apiC.setRegion(Region.INTERNAL);
+        ConfigurationApi.setConfigurationApi(featureC, apiC);
+
+        final Feature featureD = new Feature(ArtifactId.parse("g:d:1"));
+        final ConfigurationApi apiD = new ConfigurationApi();
+        apiD.setRegion(Region.INTERNAL);
+        ConfigurationApi.setConfigurationApi(featureD, apiD);
+
+        final ArtifactId idIntermediate = ArtifactId.parse("g:i:1");
+        Feature intermediate = FeatureBuilder.assemble(idIntermediate, context, featureA, featureB);
+        final ArtifactId id = ArtifactId.parse("g:m:1");
+        Feature result = FeatureBuilder.assemble(id, context, featureC, featureD, intermediate);
+        ConfigurationApi api = ConfigurationApi.getConfigurationApi(result);
+        assertNotNull(api);
+
+
+        assertEquals(5, api.getFeatureToRegionCache().size());
+        assertEquals(Region.INTERNAL, api.getFeatureToRegionCache().get(featureA.getId()));
+        assertEquals(Region.GLOBAL, api.getFeatureToRegionCache().get(featureB.getId()));
+        assertEquals(Region.INTERNAL, api.getFeatureToRegionCache().get(featureC.getId()));
+        assertEquals(Region.INTERNAL, api.getFeatureToRegionCache().get(featureD.getId()));
+        assertEquals(Region.GLOBAL, api.getFeatureToRegionCache().get(idIntermediate));
+    }
 }
\ No newline at end of file