SLING-9391 : Allow to provide additional region information via configuration
diff --git a/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConfiguration.java b/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConfiguration.java
index 1b81fd3..fa94278 100644
--- a/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConfiguration.java
+++ b/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConfiguration.java
@@ -44,73 +44,75 @@
import org.osgi.framework.Version;
class RegionConfiguration {
- public static final String GLOBAL_REGION = "global";
- static final String CLASSLOADER_PSEUDO_PROTOCOL = "classloader://";
- static final String APIREGIONS_JOINGLOBAL = "sling.feature.apiregions.joinglobal";
- static final String DEFAULT_REGIONS = "sling.feature.apiregions.default";
- static final String PROPERTIES_RESOURCE_PREFIX = "sling.feature.apiregions.resource.";
- static final String PROPERTIES_FILE_LOCATION = "sling.feature.apiregions.location";
-
- static final String IDBSNVER_FILENAME = "idbsnver.properties";
- static final String BUNDLE_FEATURE_FILENAME = "bundles.properties";
- static final String FEATURE_REGION_FILENAME = "features.properties";
- static final String REGION_PACKAGE_FILENAME = "regions.properties";
-
- private static final String PROP_idbsnver = "mapping.bundleid.bsnver";
- private static final String PROP_bundleFeatures = "mapping.bundleid.features";
- private static final String PROP_featureRegions = "mapping.featureid.regions";
- private static final String PROP_regionPackage = "mapping.region.packages";
volatile Map<Map.Entry<String, Version>, List<String>> bsnVerMap;
volatile Map<String, Set<String>> bundleFeatureMap;
volatile Map<String, Set<String>> featureRegionMap;
volatile Map<String, Set<String>> regionPackageMap;
+
final Set<String> defaultRegions;
private final Dictionary<String, Object> regProps = new Hashtable<>();
private final Map<String, Dictionary<String, Object>> factoryConfigs = new ConcurrentHashMap<>();
+ private final Map<Map.Entry<String, Version>, List<String>> baseBsnVerMap;
+ private final Map<String, Set<String>> baseBundleFeatureMap;
+ private final Map<String, Set<String>> baseFeatureRegionMap;
+ private final Map<String, Set<String>> baseRegionPackageMap;
+
+ private final String toGlobalConfig;
+
RegionConfiguration(Map<Entry<String, Version>, List<String>> bsnVerMap, Map<String, Set<String>> bundleFeatureMap,
Map<String, Set<String>> featureRegionMap, Map<String, Set<String>> regionPackageMap, Set<String> defaultRegions) {
- this.bsnVerMap = bsnVerMap;
- this.bundleFeatureMap = bundleFeatureMap;
- this.featureRegionMap = featureRegionMap;
- this.regionPackageMap = regionPackageMap;
this.defaultRegions = defaultRegions;
+
+ this.baseBsnVerMap = new HashMap<>(bsnVerMap);
+ this.baseBundleFeatureMap = new HashMap<>(bundleFeatureMap);
+ this.baseFeatureRegionMap = new HashMap<>(featureRegionMap);
+ this.baseRegionPackageMap = new HashMap<>(regionPackageMap);
+
+ this.toGlobalConfig = null;
+
+ updateConfiguration();
}
RegionConfiguration(final BundleContext context)
throws IOException, URISyntaxException {
- URI idbsnverFile = getDataFileURI(context, IDBSNVER_FILENAME);
+ URI idbsnverFile = getDataFileURI(context, RegionConstants.IDBSNVER_FILENAME);
// Register the location as a service property for diagnostic purposes
- regProps.put(IDBSNVER_FILENAME, idbsnverFile.toString());
+ regProps.put(RegionConstants.IDBSNVER_FILENAME, idbsnverFile.toString());
Map<Entry<String, Version>, List<String>> bvm = populateBSNVerMap(idbsnverFile);
- URI bundlesFile = getDataFileURI(context, BUNDLE_FEATURE_FILENAME);
+ URI bundlesFile = getDataFileURI(context, RegionConstants.BUNDLE_FEATURE_FILENAME);
// Register the location as a service property for diagnostic purposes
- regProps.put(BUNDLE_FEATURE_FILENAME, bundlesFile.toString());
+ regProps.put(RegionConstants.BUNDLE_FEATURE_FILENAME, bundlesFile.toString());
Map<String, Set<String>> bfm = populateBundleFeatureMap(bundlesFile);
- URI featuresFile = getDataFileURI(context, FEATURE_REGION_FILENAME);
+ URI featuresFile = getDataFileURI(context, RegionConstants.FEATURE_REGION_FILENAME);
// Register the location as a service property for diagnostic purposes
- regProps.put(FEATURE_REGION_FILENAME, featuresFile.toString());
+ regProps.put(RegionConstants.FEATURE_REGION_FILENAME, featuresFile.toString());
Map<String, Set<String>> frm = populateFeatureRegionMap(featuresFile);
- URI regionsFile = getDataFileURI(context, REGION_PACKAGE_FILENAME);
+ URI regionsFile = getDataFileURI(context, RegionConstants.REGION_PACKAGE_FILENAME);
// Register the location as a service property for diagnostic purposes
- regProps.put(REGION_PACKAGE_FILENAME, regionsFile.toString());
+ regProps.put(RegionConstants.REGION_PACKAGE_FILENAME, regionsFile.toString());
Map<String, Set<String>> rpm = populateRegionPackageMap(regionsFile);
- String toglobal = context.getProperty(APIREGIONS_JOINGLOBAL);
- if (toglobal != null) {
- joinRegionsWithGlobal(toglobal, rpm);
- regProps.put(APIREGIONS_JOINGLOBAL, toglobal);
+ // store base configuration
+ this.baseBsnVerMap = bvm;
+ this.baseBundleFeatureMap = bfm;
+ this.baseFeatureRegionMap = frm;
+ this.baseRegionPackageMap = rpm;
+
+ this.toGlobalConfig = context.getProperty(RegionConstants.APIREGIONS_JOINGLOBAL);
+ if ( this.toGlobalConfig != null ) {
+ regProps.put(RegionConstants.APIREGIONS_JOINGLOBAL, this.toGlobalConfig);
}
- String defRegProp = context.getProperty(DEFAULT_REGIONS);
+ String defRegProp = context.getProperty(RegionConstants.DEFAULT_REGIONS);
if (defRegProp != null) {
Set<String> defRegs = new HashSet<>();
for (String region : Arrays.asList(defRegProp.split(","))) {
@@ -120,17 +122,80 @@
}
defaultRegions = Collections.unmodifiableSet(defRegs);
if (defaultRegions.size() > 0) {
- regProps.put(DEFAULT_REGIONS, defaultRegions.toString());
+ regProps.put(RegionConstants.DEFAULT_REGIONS, defaultRegions.toString());
}
} else {
defaultRegions = Collections.emptySet();
}
+ updateConfiguration();
+ }
+
+ private void updateConfiguration() {
+ final Map<Entry<String, Version>, List<String>> bvm = new HashMap<>(this.baseBsnVerMap);
+ final Map<String, Set<String>> bfm = new HashMap<>(this.baseBundleFeatureMap);
+ final Map<String, Set<String>> frm = new HashMap<>(this.baseFeatureRegionMap);
+ final Map<String, Set<String>> rpm = new HashMap<>(this.baseRegionPackageMap);
+
+ // apply configurations
+ for(final Dictionary<String, Object> props : this.factoryConfigs.values()) {
+ // bundle id to bsnver
+ Object valObj = props.get(RegionConstants.PROP_idbsnver);
+ if ( valObj != null ) {
+ for(final String val : convert(valObj)) {
+ final String[] parts = val.split("=");
+ final String n = parts[0];
+ final String[] bsnver = parts[1].split("~");
+ addBsnVerArtifact(bvm, bsnver[0], bsnver[1], n);
+ }
+ }
+
+ // bundle id to features
+ valObj = props.get(RegionConstants.PROP_bundleFeatures);
+ if ( valObj != null ) {
+ for(final String val : convert(valObj)) {
+ final String[] parts = val.split("=");
+ final String n = parts[0];
+ final String[] features = parts[1].split(",");
+ addValuesToMap(bfm, n, Arrays.asList(features));
+ }
+ }
+
+ // feature id to regions
+ valObj = props.get(RegionConstants.PROP_featureRegions);
+ if ( valObj != null ) {
+ for(final String val : convert(valObj)) {
+ final String[] parts = val.split("=");
+ final String n = parts[0];
+ final String[] regions = parts[1].split(",");
+ addValuesToMap(frm, n, Arrays.asList(regions));
+ }
+ }
+
+ // region to packages
+ valObj = props.get(RegionConstants.PROP_regionPackage);
+ if ( valObj != null ) {
+ for(final String val : convert(valObj)) {
+ final String[] parts = val.split("=");
+ final String n = parts[0];
+ final String[] packages = parts[1].split(",");
+ addValuesToMap(rpm, n, Arrays.asList(packages));
+ }
+ }
+
+ }
+
+ // join regions
+ if (this.toGlobalConfig != null) {
+ joinRegionsWithGlobal(this.toGlobalConfig, rpm);
+ }
+
// Make all maps and their contents unmodifiable
bsnVerMap = unmodifiableMapToList(bvm);
bundleFeatureMap = unmodifiableMapToSet(bfm);
featureRegionMap = unmodifiableMapToSet(frm);
regionPackageMap = unmodifiableMapToSet(rpm);
+
}
private static <K,V> Map<K, List<V>> unmodifiableMapToList(Map<K, List<V>> m) {
@@ -153,7 +218,7 @@
if (packages == null)
continue;
- addValuesToMap(rpm, GLOBAL_REGION, packages);
+ addValuesToMap(rpm, RegionConstants.GLOBAL_REGION, packages);
rpm.remove(region);
}
}
@@ -183,31 +248,11 @@
List<String> l = bsnVerMap.get(bsnVer);
if (l == null) {
l = new ArrayList<>();
- } else {
- l = new ArrayList<>(l);
+ bsnVerMap.put(bsnVer, l);
}
- bsnVerMap.put(bsnVer, l);
l.add(artifactId);
}
- private static void removeBsnVerArtifact(
- Map<Map.Entry<String, Version>, List<String>> bsnVerMap,
- String bundleSymbolicName, String bundleVersion,
- String artifactId) {
- Version version = Version.valueOf(bundleVersion);
- Map.Entry<String, Version> bsnVer = new AbstractMap.SimpleEntry<>(bundleSymbolicName, version);
- List<String> l = bsnVerMap.get(bsnVer);
- if (l != null) {
- l = new ArrayList<>(l);
- l.remove(artifactId);
- if ( l.isEmpty() ) {
- bsnVerMap.remove(bsnVer);
- } else {
- bsnVerMap.put(bsnVer, l);
- }
- }
- }
-
private static Map<String, Set<String>> populateBundleFeatureMap(URI bundlesFile) throws IOException {
return loadMap(bundlesFile);
}
@@ -240,30 +285,15 @@
Set<String> bf = map.get(key);
if (bf == null) {
bf = new LinkedHashSet<>(); // It's important that the insertion order is maintained.
- } else {
- bf = new LinkedHashSet<>(bf);
+ map.put(key, bf);
}
- map.put(key, bf);
bf.addAll(values);
}
- private static void removeValuesFromMap(Map<String, Set<String>> map, String key, Collection<String> values) {
- Set<String> bf = map.get(key);
- if (bf != null) {
- bf = new LinkedHashSet<>(bf); // It's important that the insertion order is maintained.
- bf.removeAll(values);
- if ( bf.isEmpty() ) {
- map.remove(key);
- } else {
- map.put(key, bf);
- }
- }
- }
-
private URI getDataFileURI(BundleContext ctx, String name) throws IOException, URISyntaxException {
- String fn = ctx.getProperty(PROPERTIES_RESOURCE_PREFIX + name);
+ String fn = ctx.getProperty(RegionConstants.PROPERTIES_RESOURCE_PREFIX + name);
if (fn == null) {
- String loc = ctx.getProperty(PROPERTIES_FILE_LOCATION);
+ String loc = ctx.getProperty(RegionConstants.PROPERTIES_FILE_LOCATION);
if (loc != null) {
fn = loc + "/" + name;
}
@@ -274,9 +304,9 @@
+ "region definition resource: " + name);
if (fn.contains(":")) {
- if (fn.startsWith(CLASSLOADER_PSEUDO_PROTOCOL)) {
+ if (fn.startsWith(RegionConstants.CLASSLOADER_PSEUDO_PROTOCOL)) {
// It's using the 'classloader:' protocol looks up the location from the classloader
- String loc = fn.substring(CLASSLOADER_PSEUDO_PROTOCOL.length());
+ String loc = fn.substring(RegionConstants.CLASSLOADER_PSEUDO_PROTOCOL.length());
if (!loc.startsWith("/"))
loc = "/" + loc;
fn = getClass().getResource(loc).toString();
@@ -326,59 +356,8 @@
* @param props The properties
*/
public void setConfig(final String pid, final Dictionary<String, Object> props) {
- this.removeConfig(pid);
this.factoryConfigs.put(pid, props);
- // bundle id to bsnver
- Object valObj = props.get(PROP_idbsnver);
- if ( valObj != null ) {
- final Map<Map.Entry<String, Version>, List<String>> newMap = new HashMap<>(this.bsnVerMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] bsnver = parts[1].split("~");
- addBsnVerArtifact(newMap, bsnver[0], bsnver[1], n);
- }
- this.bsnVerMap = newMap;
- }
-
- // bundle id to features
- valObj = props.get(PROP_bundleFeatures);
- if ( valObj != null ) {
- final Map<String, Set<String>> newMap = new HashMap<>(this.bundleFeatureMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] features = parts[1].split(",");
- addValuesToMap(newMap, n, Arrays.asList(features));
- }
- this.bundleFeatureMap = newMap;
- }
-
- // feature id to regions
- valObj = props.get(PROP_featureRegions);
- if ( valObj != null ) {
- final Map<String, Set<String>> newMap = new HashMap<>(this.featureRegionMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] regions = parts[1].split(",");
- addValuesToMap(newMap, n, Arrays.asList(regions));
- }
- this.featureRegionMap = newMap;
- }
-
- // region to packages
- valObj = props.get(PROP_regionPackage);
- if ( valObj != null ) {
- final Map<String, Set<String>> newMap = new HashMap<>(this.regionPackageMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] packages = parts[1].split(",");
- addValuesToMap(newMap, n, Arrays.asList(packages));
- }
- this.regionPackageMap = newMap;
- }
+ updateConfiguration();
}
/**
@@ -388,57 +367,7 @@
public void removeConfig(final String pid) {
final Dictionary<String, Object> props = this.factoryConfigs.remove(pid);
if ( props != null ) {
- // bundle id to bsnver
- Object valObj = props.get(PROP_idbsnver);
- if ( valObj != null ) {
- final Map<Map.Entry<String, Version>, List<String>> newMap = new HashMap<>(this.bsnVerMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] bsnver = parts[1].split("~");
- removeBsnVerArtifact(newMap, bsnver[0], bsnver[1], n);
- }
- this.bsnVerMap = newMap;
- }
-
- // bundle id to features
- valObj = props.get(PROP_bundleFeatures);
- if ( valObj != null ) {
- final Map<String, Set<String>> newMap = new HashMap<>(this.bundleFeatureMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] features = parts[1].split(",");
- removeValuesFromMap(newMap, n, Arrays.asList(features));
- }
- this.bundleFeatureMap = newMap;
- }
-
- // feature id to regions
- valObj = props.get(PROP_featureRegions);
- if ( valObj != null ) {
- final Map<String, Set<String>> newMap = new HashMap<>(this.featureRegionMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] regions = parts[1].split(",");
- removeValuesFromMap(newMap, n, Arrays.asList(regions));
- }
- this.featureRegionMap = newMap;
- }
-
- // region to packages
- valObj = props.get(PROP_regionPackage);
- if ( valObj != null ) {
- final Map<String, Set<String>> newMap = new HashMap<>(this.regionPackageMap);
- for(final String val : convert(valObj)) {
- final String[] parts = val.split("=");
- final String n = parts[0];
- final String[] packages = parts[1].split(",");
- removeValuesFromMap(newMap, n, Arrays.asList(packages));
- }
- this.regionPackageMap = newMap;
- }
+ updateConfiguration();
}
}
}
diff --git a/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConstants.java b/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConstants.java
new file mode 100644
index 0000000..f4b8784
--- /dev/null
+++ b/src/main/java/org/apache/sling/feature/apiregions/impl/RegionConstants.java
@@ -0,0 +1,40 @@
+/*
+ * 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.apiregions.impl;
+
+abstract class RegionConstants {
+
+ static final String GLOBAL_REGION = "global";
+
+ static final String CLASSLOADER_PSEUDO_PROTOCOL = "classloader://";
+ static final String APIREGIONS_JOINGLOBAL = "sling.feature.apiregions.joinglobal";
+ static final String DEFAULT_REGIONS = "sling.feature.apiregions.default";
+ static final String PROPERTIES_RESOURCE_PREFIX = "sling.feature.apiregions.resource.";
+ static final String PROPERTIES_FILE_LOCATION = "sling.feature.apiregions.location";
+
+ static final String IDBSNVER_FILENAME = "idbsnver.properties";
+ static final String BUNDLE_FEATURE_FILENAME = "bundles.properties";
+ static final String FEATURE_REGION_FILENAME = "features.properties";
+ static final String REGION_PACKAGE_FILENAME = "regions.properties";
+
+ static final String PROP_idbsnver = "mapping.bundleid.bsnver";
+ static final String PROP_bundleFeatures = "mapping.bundleid.features";
+ static final String PROP_featureRegions = "mapping.featureid.regions";
+ static final String PROP_regionPackage = "mapping.region.packages";
+}
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 3c1f4b3..556ff34 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
@@ -115,7 +115,7 @@
List<String> capBundleArtifacts = this.configuration.getBsnVerMap().get(new AbstractMap.SimpleEntry<String, Version>(capBundleName, capBundleVersion));
if (capBundleArtifacts == null) {
// Capability is not in any feature, everyone can access
- coveredCaps.put(bc, RegionConfiguration.GLOBAL_REGION);
+ coveredCaps.put(bc, RegionConstants.GLOBAL_REGION);
continue nextCapability;
}
@@ -132,7 +132,7 @@
for (String capFeat : capFeatures) {
if (capFeat == null) {
// everyone can access capability not coming from a feature
- coveredCaps.put(bc, RegionConfiguration.GLOBAL_REGION);
+ coveredCaps.put(bc, RegionConstants.GLOBAL_REGION);
continue nextCapability;
}
@@ -145,7 +145,7 @@
Set<String> capRegions = this.configuration.getFeatureRegionMap().get(capFeat);
if (capRegions == null || capRegions.size() == 0) {
// If the feature hosting the capability has no regions defined, everyone can access
- coveredCaps.put(bc, RegionConfiguration.GLOBAL_REGION);
+ coveredCaps.put(bc, RegionConstants.GLOBAL_REGION);
continue nextCapability;
}
bcFeatureMap.put(bc, capFeat);
@@ -168,10 +168,10 @@
}
// Now check the global region
- Set<String> globalPackages = this.configuration.getRegionPackageMap().get(RegionConfiguration.GLOBAL_REGION);
+ Set<String> globalPackages = this.configuration.getRegionPackageMap().get(RegionConstants.GLOBAL_REGION);
if (globalPackages != null && globalPackages.contains(packageName)) {
// If the export is in the global region everyone can access
- coveredCaps.put(bc, RegionConfiguration.GLOBAL_REGION);
+ coveredCaps.put(bc, RegionConstants.GLOBAL_REGION);
continue nextCapability;
}
}
@@ -220,7 +220,7 @@
*/
private void pruneCoveredCaps(Set<String> reqRegions, Map<BundleCapability,String> capMap) {
Set<String> reqNonGlobalRegions = new HashSet<>(reqRegions);
- reqNonGlobalRegions.remove(RegionConfiguration.GLOBAL_REGION);
+ reqNonGlobalRegions.remove(RegionConstants.GLOBAL_REGION);
if (capMap.size() <= 1) {
// Shortcut: there is only 0 or 1 capability, nothing to do
@@ -228,7 +228,7 @@
}
if (reqRegions.size() == 0
- || Collections.singleton(RegionConfiguration.GLOBAL_REGION).equals(reqRegions)) {
+ || Collections.singleton(RegionConstants.GLOBAL_REGION).equals(reqRegions)) {
// No regions (other than global) for the requirement: do nothing
return;
}
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 44f9d2f..df86a4e 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
@@ -18,11 +18,11 @@
*/
package org.apache.sling.feature.apiregions.impl;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.BUNDLE_FEATURE_FILENAME;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.FEATURE_REGION_FILENAME;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.IDBSNVER_FILENAME;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.PROPERTIES_RESOURCE_PREFIX;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.REGION_PACKAGE_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.BUNDLE_FEATURE_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.FEATURE_REGION_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.IDBSNVER_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.PROPERTIES_RESOURCE_PREFIX;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.REGION_PACKAGE_FILENAME;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@@ -185,7 +185,7 @@
BundleContext bc = Mockito.mock(BundleContext.class);
Mockito.when(bc.getBundle()).thenReturn(fw);
Mockito.when(bc.getProperty(Activator.REGIONS_PROPERTY_NAME)).thenReturn("*");
- Mockito.when(bc.getProperty(RegionConfiguration.PROPERTIES_FILE_LOCATION)).thenReturn(resourceDir);
+ Mockito.when(bc.getProperty(RegionConstants.PROPERTIES_FILE_LOCATION)).thenReturn(resourceDir);
Mockito.when(bc.registerService(
Mockito.eq("org.osgi.service.cm.ManagedService"),
Mockito.any(),
@@ -207,7 +207,7 @@
Activator a = new Activator();
a.bundleContext = bc;
- a.configuration = new RegionConfiguration(null, null, null, null, null);
+ a.configuration = new RegionConfiguration(Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), Collections.emptySet());
FrameworkEvent ev = Mockito.mock(FrameworkEvent.class);
Mockito.when(ev.getType()).thenReturn(FrameworkEvent.STARTED);
diff --git a/src/test/java/org/apache/sling/feature/apiregions/impl/RegionConfigurationTest.java b/src/test/java/org/apache/sling/feature/apiregions/impl/RegionConfigurationTest.java
index d0cd62e..5c0d8b2 100644
--- a/src/test/java/org/apache/sling/feature/apiregions/impl/RegionConfigurationTest.java
+++ b/src/test/java/org/apache/sling/feature/apiregions/impl/RegionConfigurationTest.java
@@ -18,14 +18,14 @@
*/
package org.apache.sling.feature.apiregions.impl;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.APIREGIONS_JOINGLOBAL;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.BUNDLE_FEATURE_FILENAME;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.DEFAULT_REGIONS;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.FEATURE_REGION_FILENAME;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.IDBSNVER_FILENAME;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.PROPERTIES_FILE_LOCATION;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.PROPERTIES_RESOURCE_PREFIX;
-import static org.apache.sling.feature.apiregions.impl.RegionConfiguration.REGION_PACKAGE_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.APIREGIONS_JOINGLOBAL;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.BUNDLE_FEATURE_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.DEFAULT_REGIONS;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.FEATURE_REGION_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.IDBSNVER_FILENAME;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.PROPERTIES_FILE_LOCATION;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.PROPERTIES_RESOURCE_PREFIX;
+import static org.apache.sling.feature.apiregions.impl.RegionConstants.REGION_PACKAGE_FILENAME;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
diff --git a/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java b/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java
index ebec9e1..57899ce 100644
--- a/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java
+++ b/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java
@@ -345,7 +345,7 @@
bfmap.put("b20", Collections.singleton("f4"));
Map<String, Set<String>> frmap = new HashMap<>();
- frmap.put("f", new HashSet<>(Arrays.asList("r1", "r2", RegionConfiguration.GLOBAL_REGION)));
+ frmap.put("f", new HashSet<>(Arrays.asList("r1", "r2", RegionConstants.GLOBAL_REGION)));
frmap.put("f1", Collections.singleton("r1"));
frmap.put("f2", Collections.singleton("r2"));
frmap.put("f3", Collections.singleton("r3"));
@@ -354,7 +354,7 @@
Map<String, Set<String>> rpmap = new HashMap<>();
rpmap.put("r0", Collections.singleton("org.bar"));
rpmap.put("r1", new HashSet<>(Arrays.asList("org.blah", "org.foo")));
- rpmap.put(RegionConfiguration.GLOBAL_REGION, Collections.singleton("org.bar.tar"));
+ rpmap.put(RegionConstants.GLOBAL_REGION, Collections.singleton("org.bar.tar"));
rpmap.put("r3", Collections.singleton("xyz"));
ResolverHookImpl rh = new ResolverHookImpl(new RegionConfiguration(bsnvermap, bfmap, frmap, rpmap, Collections.emptySet()));
@@ -485,13 +485,13 @@
Map<String, Set<String>> frmap = new HashMap<>();
frmap.put("f1", new HashSet<>(Arrays.asList(
- RegionConfiguration.GLOBAL_REGION, "org.foo.blah")));
+ RegionConstants.GLOBAL_REGION, "org.foo.blah")));
frmap.put("f2", new HashSet<>(Arrays.asList("org.foo.bar",
- RegionConfiguration.GLOBAL_REGION, "org.foo.blah")));
+ RegionConstants.GLOBAL_REGION, "org.foo.blah")));
Map<String, Set<String>> rpmap = new HashMap<>();
rpmap.put("org.foo.bar", Collections.singleton("org.test"));
- rpmap.put(RegionConfiguration.GLOBAL_REGION, Collections.singleton("org.something"));
+ rpmap.put(RegionConstants.GLOBAL_REGION, Collections.singleton("org.something"));
rpmap.put("org.foo.blah", Collections.singleton("org.something"));
ResolverHookImpl rh = new ResolverHookImpl(new RegionConfiguration(bsnvermap, bfmap, frmap, rpmap, Collections.emptySet()));