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:45:37 UTC
[sling-org-apache-sling-feature-apiregions] 17/19: Enable
api-regions runtime support via a framework property
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-apiregions.git
commit 955105cc0debde29c7b61db218aa44cd2dcf290c
Author: David Bosschaert <bo...@adobe.com>
AuthorDate: Tue Nov 6 16:21:25 2018 +0000
Enable api-regions runtime support via a framework property
Framework property org.apache.sling.feature.apiregions.regions must be
set to enable api-regions runtime support.
---
.../org/apache/sling/feature/apiregions/impl/Activator.java | 8 +++++++-
.../apache/sling/feature/apiregions/impl/RegionEnforcer.java | 7 ++++++-
.../sling/feature/apiregions/impl/ResolverHookImpl.java | 2 +-
.../apache/sling/feature/apiregions/impl/ActivatorTest.java | 1 +
.../sling/feature/apiregions/impl/RegionEnforcerTest.java | 12 ++++++------
5 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/apiregions/impl/Activator.java b/src/main/java/org/apache/sling/feature/apiregions/impl/Activator.java
index 6ced921..95f5cc7 100644
--- a/src/main/java/org/apache/sling/feature/apiregions/impl/Activator.java
+++ b/src/main/java/org/apache/sling/feature/apiregions/impl/Activator.java
@@ -26,10 +26,16 @@ import java.util.Dictionary;
import java.util.Hashtable;
public class Activator implements BundleActivator {
+ static final String REGIONS_PROPERTY_NAME = "org.apache.sling.feature.apiregions.regions";
+
@Override
public synchronized void start(BundleContext context) throws Exception {
+ String regions = context.getProperty(REGIONS_PROPERTY_NAME);
+ if (regions == null)
+ return; // Component not enabled
+
Dictionary<String, Object> props = new Hashtable<>();
- RegionEnforcer enforcer = new RegionEnforcer(props);
+ RegionEnforcer enforcer = new RegionEnforcer(props, regions);
context.registerService(ResolverHookFactory.class, enforcer, props);
}
diff --git a/src/main/java/org/apache/sling/feature/apiregions/impl/RegionEnforcer.java b/src/main/java/org/apache/sling/feature/apiregions/impl/RegionEnforcer.java
index 56a5b74..cf20e0d 100644
--- a/src/main/java/org/apache/sling/feature/apiregions/impl/RegionEnforcer.java
+++ b/src/main/java/org/apache/sling/feature/apiregions/impl/RegionEnforcer.java
@@ -53,8 +53,9 @@ class RegionEnforcer implements ResolverHookFactory {
final Map<String, Set<String>> bundleFeatureMap;
final Map<String, Set<String>> featureRegionMap;
final Map<String, Set<String>> regionPackageMap;
+ final Set<String> enabledRegions;
- public RegionEnforcer(Dictionary<String, Object> regProps) throws IOException {
+ RegionEnforcer(Dictionary<String, Object> regProps, String regionsProp) throws IOException {
File idbsnverFile = getDataFile(IDBSNVER_FILENAME);
bsnVerMap = populateBSNVerMap(idbsnverFile);
if (idbsnverFile != null) {
@@ -78,6 +79,8 @@ class RegionEnforcer implements ResolverHookFactory {
if (regionsFile != null) {
regProps.put(REGION_PACKAGE_FILENAME, regionsFile.getAbsolutePath());
}
+
+ enabledRegions = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(regionsProp.split(","))));
}
private Map<Map.Entry<String, Version>, List<String>> populateBSNVerMap(File idbsnverFile) throws IOException {
@@ -151,6 +154,8 @@ class RegionEnforcer implements ResolverHookFactory {
@Override
public ResolverHook begin(Collection<BundleRevision> triggers) {
+ if (enabledRegions.size() == 0)
+ return null;
return new ResolverHookImpl(bsnVerMap, bundleFeatureMap, featureRegionMap, regionPackageMap);
}
}
diff --git a/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java b/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java
index dc1d08d..e754c31 100644
--- a/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java
+++ b/src/main/java/org/apache/sling/feature/apiregions/impl/ResolverHookImpl.java
@@ -46,7 +46,7 @@ class ResolverHookImpl implements ResolverHook {
final Map<String, Set<String>> featureRegionMap;
final Map<String, Set<String>> regionPackageMap;
- public ResolverHookImpl(Map<Entry<String, Version>, List<String>> bsnVerMap, Map<String, Set<String>> bundleFeatureMap,
+ ResolverHookImpl(Map<Entry<String, Version>, List<String>> bsnVerMap, Map<String, Set<String>> bundleFeatureMap,
Map<String, Set<String>> featureRegionMap, Map<String, Set<String>> regionPackageMap) {
this.bsnVerMap = bsnVerMap;
this.bundleFeatureMap = bundleFeatureMap;
diff --git a/src/test/java/org/apache/sling/feature/apiregions/impl/ActivatorTest.java b/src/test/java/org/apache/sling/feature/apiregions/impl/ActivatorTest.java
index fc19bc5..20924c9 100644
--- a/src/test/java/org/apache/sling/feature/apiregions/impl/ActivatorTest.java
+++ b/src/test/java/org/apache/sling/feature/apiregions/impl/ActivatorTest.java
@@ -56,6 +56,7 @@ public class ActivatorTest {
expectedProps.put(FEATURE_REGION_FILENAME, f);
BundleContext bc = Mockito.mock(BundleContext.class);
+ Mockito.when(bc.getProperty(Activator.REGIONS_PROPERTY_NAME)).thenReturn("*");
Activator a = new Activator();
a.start(bc);
diff --git a/src/test/java/org/apache/sling/feature/apiregions/impl/RegionEnforcerTest.java b/src/test/java/org/apache/sling/feature/apiregions/impl/RegionEnforcerTest.java
index 96d33b3..5d3fa22 100644
--- a/src/test/java/org/apache/sling/feature/apiregions/impl/RegionEnforcerTest.java
+++ b/src/test/java/org/apache/sling/feature/apiregions/impl/RegionEnforcerTest.java
@@ -55,7 +55,7 @@ public class RegionEnforcerTest {
@Test
public void testRegionEnforcerNoConfiguration() throws Exception {
- RegionEnforcer re = new RegionEnforcer(new Hashtable<>());
+ RegionEnforcer re = new RegionEnforcer(new Hashtable<>(), "*");
assertEquals(0, re.bsnVerMap.size());
assertEquals(0, re.bundleFeatureMap.size());
assertEquals(0, re.featureRegionMap.size());
@@ -68,7 +68,7 @@ public class RegionEnforcerTest {
System.setProperty(PROPERTIES_FILE_PREFIX + IDBSNVER_FILENAME, f);
Hashtable<String, Object> props = new Hashtable<>();
- RegionEnforcer re = new RegionEnforcer(props);
+ RegionEnforcer re = new RegionEnforcer(props, "*");
assertEquals(2, re.bsnVerMap.size());
assertEquals(Collections.singletonList("g:b1:1"),
re.bsnVerMap.get(new AbstractMap.SimpleEntry<String,Version>("b1", new Version(1,0,0))));
@@ -83,7 +83,7 @@ public class RegionEnforcerTest {
System.setProperty(PROPERTIES_FILE_PREFIX + BUNDLE_FEATURE_FILENAME, f);
Hashtable<String, Object> props = new Hashtable<>();
- RegionEnforcer re = new RegionEnforcer(props);
+ RegionEnforcer re = new RegionEnforcer(props, "*");
assertEquals(3, re.bundleFeatureMap.size());
assertEquals(Collections.singleton("org.sling:something:1.2.3:slingosgifeature:myclassifier"),
re.bundleFeatureMap.get("org.sling:b1:1"));
@@ -100,7 +100,7 @@ public class RegionEnforcerTest {
System.setProperty(PROPERTIES_FILE_PREFIX + FEATURE_REGION_FILENAME, f);
Hashtable<String, Object> props = new Hashtable<>();
- RegionEnforcer re = new RegionEnforcer(props);
+ RegionEnforcer re = new RegionEnforcer(props, "*");
assertEquals(2, re.featureRegionMap.size());
assertEquals(Collections.singleton("global"),
re.featureRegionMap.get("an.other:feature:123"));
@@ -115,7 +115,7 @@ public class RegionEnforcerTest {
System.setProperty(PROPERTIES_FILE_PREFIX + REGION_PACKAGE_FILENAME, f);
Hashtable<String, Object> props = new Hashtable<>();
- RegionEnforcer re = new RegionEnforcer(props);
+ RegionEnforcer re = new RegionEnforcer(props, "*");
assertEquals(2, re.regionPackageMap.size());
assertEquals(Collections.singleton("xyz"),
re.regionPackageMap.get("internal"));
@@ -135,7 +135,7 @@ public class RegionEnforcerTest {
System.setProperty(PROPERTIES_FILE_PREFIX + REGION_PACKAGE_FILENAME,
getClass().getResource("/regions1.properties").getFile());
- RegionEnforcer re = new RegionEnforcer(new Hashtable<>());
+ RegionEnforcer re = new RegionEnforcer(new Hashtable<>(), "*");
assertTrue(re.bsnVerMap.size() > 0);
assertTrue(re.bundleFeatureMap.size() > 0);
assertTrue(re.featureRegionMap.size() > 0);