You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2018/07/27 07:06:09 UTC
[sling-org-apache-sling-installer-factory-configuration] branch
master updated: SLING-7786 : Use R7 configuration admin supporting named
factory configurations
This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-installer-factory-configuration.git
The following commit(s) were added to refs/heads/master by this push:
new 2c53016 SLING-7786 : Use R7 configuration admin supporting named factory configurations
2c53016 is described below
commit 2c530163cbc0cc43e1f7532c09380abe556bcc53
Author: Carsten Ziegeler <cz...@adobe.com>
AuthorDate: Fri Jul 27 09:05:58 2018 +0200
SLING-7786 : Use R7 configuration admin supporting named factory configurations
---
pom.xml | 2 +-
.../configuration/impl/AbstractConfigTask.java | 50 +++---------------
.../configuration/impl/ConfigInstallTask.java | 15 +++---
.../configuration/impl/ConfigRemoveTask.java | 10 ++--
.../configuration/impl/ConfigTaskCreator.java | 36 ++++---------
.../factories/configuration/impl/ConfigUtil.java | 61 +++++++++-------------
.../configuration/impl/ConfigUtilTest.java | 57 +++++---------------
7 files changed, 66 insertions(+), 165 deletions(-)
diff --git a/pom.xml b/pom.xml
index 3ad5109..dab6fe8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,7 +78,7 @@
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.cm</artifactId>
- <version>1.5.0</version>
+ <version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/AbstractConfigTask.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/AbstractConfigTask.java
index e0015fc..14ce1b1 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/AbstractConfigTask.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/AbstractConfigTask.java
@@ -18,14 +18,11 @@
*/
package org.apache.sling.installer.factories.configuration.impl;
-import java.io.IOException;
import java.util.Dictionary;
import org.apache.sling.installer.api.tasks.InstallTask;
import org.apache.sling.installer.api.tasks.TaskResourceGroup;
import org.osgi.framework.Constants;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,9 +38,6 @@ abstract class AbstractConfigTask extends InstallTask {
/** Factory PID or null */
protected final String factoryPid;
- /** Alias factory pid or null. */
- protected String aliasPid;
-
/** Configuration admin. */
private final ConfigurationAdmin configAdmin;
@@ -54,17 +48,20 @@ abstract class AbstractConfigTask extends InstallTask {
this.configAdmin = configAdmin;
this.configPid = (String)getResource().getAttribute(Constants.SERVICE_PID);
this.factoryPid = (String)getResource().getAttribute(ConfigurationAdmin.SERVICE_FACTORYPID);
- if ( r.getAlias() != null ) {
- this.aliasPid = r.getAlias().substring(this.factoryPid.length() + 1);
- } else {
- this.aliasPid = null;
- }
}
protected Logger getLogger() {
return this.logger;
}
+ protected String getRealPID() {
+ if ( this.factoryPid != null ) {
+ return ConfigUtil.getPIDOfFactoryPID(this.factoryPid, this.configPid);
+ } else {
+ return this.configPid;
+ }
+ }
+
/**
* Get the configuration admin - if available
*/
@@ -72,38 +69,7 @@ abstract class AbstractConfigTask extends InstallTask {
return this.configAdmin;
}
- protected String getCompositePid() {
- return (factoryPid == null ? "" : factoryPid + ".") + configPid;
- }
-
- protected String getCompositeAliasPid() {
- if ( this.aliasPid == null || this.factoryPid == null ) {
- return null;
- }
- final String alias;
- if (this.aliasPid.startsWith(this.factoryPid + ".")) {
- alias = this.aliasPid;
- } else {
- alias = this.factoryPid + "." + this.aliasPid;
- }
- final int pos = this.getResource().getEntityId().indexOf(':');
- if ( this.getResource().getEntityId().substring(pos + 1).equals(alias) ) {
- return null;
- }
- return alias;
- }
-
protected Dictionary<String, Object> getDictionary() {
return this.getResource().getDictionary();
}
-
- protected Configuration getConfiguration()
- throws IOException, InvalidSyntaxException {
- return ConfigUtil.getConfiguration(this.configAdmin, this.factoryPid, (this.factoryPid != null && this.aliasPid != null ? this.aliasPid : this.configPid));
- }
-
- protected Configuration createConfiguration(final String location)
- throws IOException, InvalidSyntaxException {
- return ConfigUtil.createConfiguration(this.configAdmin, this.factoryPid, (this.factoryPid != null && this.aliasPid != null ? this.aliasPid : this.configPid), location);
- }
}
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
index 12527ba..c880f0f 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigInstallTask.java
@@ -39,7 +39,7 @@ public class ConfigInstallTask extends AbstractConfigTask {
@Override
public String getSortKey() {
- return CONFIG_INSTALL_ORDER + getCompositePid();
+ return CONFIG_INSTALL_ORDER + getRealPID();
}
@Override
@@ -56,11 +56,11 @@ public class ConfigInstallTask extends AbstractConfigTask {
location = null;
}
- Configuration config = getConfiguration();
+ Configuration config = ConfigUtil.getConfiguration(this.getConfigurationAdmin(), this.factoryPid, this.configPid);
if (config == null) {
- created = true;
- config = createConfiguration(location);
+ config = ConfigUtil.createConfiguration(this.getConfigurationAdmin(), this.factoryPid, this.configPid, location);
+ created = true;
} else {
if (ConfigUtil.isSameData(config.getProperties(), getResource().getDictionary())) {
this.getLogger().debug("Configuration {} already installed with same data, update request ignored: {}",
@@ -74,18 +74,15 @@ public class ConfigInstallTask extends AbstractConfigTask {
if (config != null) {
config.update(getDictionary());
ctx.log("Installed configuration {} from resource {}", config.getPid(), getResource());
- if ( this.factoryPid != null ) {
- this.aliasPid = config.getPid();
- }
this.getLogger().debug("Configuration " + config.getPid()
+ " " + (created ? "created" : "updated")
+ " from " + getResource());
final Operation op = new Coordinator.Operation(config.getPid(), config.getFactoryPid(), false);
Coordinator.SHARED.add(op);
}
- // in any case set the state to "INSTALLED"
+ // in any case set the state to "INSTALLED"
// (it doesn't matter if the configuration hasn't been updated as it has been in the correct state already)
- this.setFinishedState(ResourceState.INSTALLED, this.getCompositeAliasPid());
+ this.setFinishedState(ResourceState.INSTALLED);
} catch (Exception e) {
this.getLogger().debug("Exception during installation of config " + this.getResource() + " : " + e.getMessage() + ". Retrying later.", e);
}
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java
index ea42565..bf767cb 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigRemoveTask.java
@@ -36,7 +36,7 @@ public class ConfigRemoveTask extends AbstractConfigTask {
@Override
public String getSortKey() {
- return CONFIG_REMOVE_ORDER + getCompositePid();
+ return CONFIG_REMOVE_ORDER + this.getRealPID();
}
/**
@@ -46,18 +46,18 @@ public class ConfigRemoveTask extends AbstractConfigTask {
public void execute(final InstallationContext ctx) {
synchronized ( Coordinator.SHARED ) {
try {
- final Configuration cfg = getConfiguration();
+ final Configuration cfg = ConfigUtil.getConfiguration(this.getConfigurationAdmin(), this.factoryPid, this.configPid);
if (cfg == null) {
- this.getLogger().debug("Cannot delete config , pid={} not found, ignored ({})", getCompositePid(), getResource());
+ this.getLogger().debug("Cannot delete config , pid={} not found, ignored ({})", getRealPID(), getResource());
} else {
if ( !ConfigUtil.isSameData(cfg.getProperties(), this.getResource().getDictionary()) ) {
this.getLogger().debug("Configuration has changed after it has been installed!");
} else {
final Coordinator.Operation op = new Coordinator.Operation(cfg.getPid(), cfg.getFactoryPid(), true);
- this.getLogger().debug("Deleting config {} ({})", getCompositePid(), getResource());
+ this.getLogger().debug("Deleting config {} ({})", getRealPID(), getResource());
cfg.delete();
- ctx.log("Deleted configuration {} from resource {}", getCompositePid(), getResource());
+ ctx.log("Deleted configuration {} from resource {}", getRealPID(), getResource());
Coordinator.SHARED.add(op);
}
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java
index 6e0845c..d375f89 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigTaskCreator.java
@@ -98,43 +98,30 @@ public class ConfigTaskCreator
@Override
public void configurationEvent(final ConfigurationEvent event) {
synchronized ( Coordinator.SHARED ) {
- final String id;
- final String pid;
- if (event.getFactoryPid() == null ) {
- id = event.getPid();
- pid = id;
- } else {
- pid = (event.getPid().startsWith(event.getFactoryPid() + '.') ?
- event.getPid().substring(event.getFactoryPid().length() + 1) : event.getPid());
- id = event.getFactoryPid() + '.' + pid;
- }
if ( event.getType() == ConfigurationEvent.CM_DELETED ) {
final Coordinator.Operation op = Coordinator.SHARED.get(event.getPid(), event.getFactoryPid(), true);
if ( op == null ) {
- this.changeListener.resourceRemoved(InstallableResource.TYPE_CONFIG, id);
+ this.changeListener.resourceRemoved(InstallableResource.TYPE_CONFIG, event.getPid());
} else {
this.logger.debug("Ignoring configuration event for {}:{}", event.getPid(), event.getFactoryPid());
}
} else if ( event.getType() == ConfigurationEvent.CM_UPDATED ) {
try {
+ // we just need to pass in the pid as we're using named factory configs
final Configuration config = ConfigUtil.getConfiguration(configAdmin,
- event.getFactoryPid(),
+ null,
event.getPid());
final Coordinator.Operation op = Coordinator.SHARED.get(event.getPid(), event.getFactoryPid(), false);
if ( config != null && op == null ) {
final boolean persist = ConfigUtil.toBoolean(config.getProperties().get(ConfigurationConstants.PROPERTY_PERSISTENCE), true);
final Dictionary<String, Object> dict = ConfigUtil.cleanConfiguration(config.getProperties());
- final Map<String, Object> attrs = new HashMap<String, Object>();
+ final Map<String, Object> attrs = new HashMap<>();
if ( !persist ) {
attrs.put(ResourceChangeListener.RESOURCE_PERSIST, Boolean.FALSE);
}
attrs.put(Constants.SERVICE_PID, event.getPid());
- if ( event.getFactoryPid() == null ) {
- attrs.put(InstallableResource.RESOURCE_URI_HINT, pid);
- } else {
- attrs.put(InstallableResource.RESOURCE_URI_HINT, event.getFactoryPid() + '-' + pid);
- }
+ attrs.put(InstallableResource.RESOURCE_URI_HINT, event.getPid());
if ( config.getBundleLocation() != null ) {
attrs.put(InstallableResource.INSTALLATION_HINT, config.getBundleLocation());
}
@@ -142,7 +129,7 @@ public class ConfigTaskCreator
if (event.getFactoryPid() != null) {
attrs.put(ConfigurationAdmin.SERVICE_FACTORYPID, event.getFactoryPid());
}
- this.changeListener.resourceAddedOrUpdated(InstallableResource.TYPE_CONFIG, id, null, dict, attrs);
+ this.changeListener.resourceAddedOrUpdated(InstallableResource.TYPE_CONFIG, event.getPid(), null, dict, attrs);
} else {
this.logger.debug("Ignoring configuration event for {}:{}", event.getPid(), event.getFactoryPid());
@@ -187,27 +174,22 @@ public class ConfigTaskCreator
}
// split pid and factory pid alias
+ final Map<String, Object> attr = new HashMap<>();
final String factoryPid;
final String configPid;
int n = pid.indexOf('-');
if (n > 0) {
configPid = pid.substring(n + 1);
factoryPid = pid.substring(0, n);
+ attr.put(ConfigurationAdmin.SERVICE_FACTORYPID, factoryPid);
} else {
factoryPid = null;
configPid = pid;
}
-
- final Map<String, Object> attr = new HashMap<String, Object>();
-
attr.put(Constants.SERVICE_PID, configPid);
- // Factory?
- if (factoryPid != null) {
- attr.put(ConfigurationAdmin.SERVICE_FACTORYPID, factoryPid);
- }
final TransformationResult tr = new TransformationResult();
- final String id = (factoryPid == null ? "" : factoryPid + ".") + configPid;
+ final String id = (factoryPid == null ? configPid : ConfigUtil.getPIDOfFactoryPID(factoryPid, configPid));
tr.setId(id);
tr.setResourceType(InstallableResource.TYPE_CONFIG);
tr.setAttributes(attr);
diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
index a9eba9f..f1f0e5a 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
@@ -54,7 +54,7 @@ abstract class ConfigUtil {
private static final String ALIAS_KEY = "org.apache.sling.installer.osgi.factoryaliaspid";
/** Configuration properties to ignore when comparing configs */
- private static final Set<String> IGNORED_PROPERTIES = new HashSet<String>();
+ private static final Set<String> IGNORED_PROPERTIES = new HashSet<>();
static {
IGNORED_PROPERTIES.add(Constants.SERVICE_PID);
IGNORED_PROPERTIES.add(CONFIG_PATH_KEY);
@@ -63,7 +63,7 @@ abstract class ConfigUtil {
}
private static Set<String> collectKeys(final Dictionary<String, Object>a) {
- final Set<String> keys = new HashSet<String>();
+ final Set<String> keys = new HashSet<>();
final Enumeration<String> aI = a.keys();
while (aI.hasMoreElements() ) {
final String key = aI.nextElement();
@@ -129,7 +129,7 @@ abstract class ConfigUtil {
* Remove all ignored properties
*/
public static Dictionary<String, Object> cleanConfiguration(final Dictionary<String, Object> config) {
- final Dictionary<String, Object> cleanedConfig = new Hashtable<String, Object>();
+ final Dictionary<String, Object> cleanedConfig = new Hashtable<>();
final Enumeration<String> e = config.keys();
while(e.hasMoreElements()) {
final String key = e.nextElement();
@@ -153,22 +153,22 @@ abstract class ConfigUtil {
public static Configuration getConfiguration(final ConfigurationAdmin ca,
final String factoryPid,
- final String configPid)
+ final String configPidOrName)
throws IOException, InvalidSyntaxException {
- return getOrCreateConfiguration(ca, factoryPid, configPid, null, false);
+ return getOrCreateConfiguration(ca, factoryPid, configPidOrName, null, false);
}
public static Configuration createConfiguration(final ConfigurationAdmin ca,
final String factoryPid,
- final String configPid,
+ final String configPidOrName,
final String location)
throws IOException, InvalidSyntaxException {
- return getOrCreateConfiguration(ca, factoryPid, configPid, location, true);
+ return getOrCreateConfiguration(ca, factoryPid, configPidOrName, location, true);
}
private static Configuration getOrCreateConfiguration(final ConfigurationAdmin ca,
final String factoryPid,
- final String configPid,
+ final String configPidOrName,
final String location,
final boolean createIfNeeded)
throws IOException, InvalidSyntaxException {
@@ -176,9 +176,9 @@ abstract class ConfigUtil {
if (factoryPid == null) {
if (createIfNeeded) {
- result = ca.getConfiguration(configPid, location);
+ result = ca.getConfiguration(configPidOrName, location);
} else {
- String filter = "(" + Constants.SERVICE_PID + "=" + encode(configPid)
+ final String filter = "(" + Constants.SERVICE_PID + "=" + encode(configPidOrName)
+ ")";
Configuration[] configs = ca.listConfigurations(filter);
if (configs != null && configs.length > 0) {
@@ -186,35 +186,18 @@ abstract class ConfigUtil {
}
}
} else {
- Configuration configs[] = null;
- if ( configPid != null ) {
- configs = ca.listConfigurations("(&("
- + ConfigurationAdmin.SERVICE_FACTORYPID + "=" + encode(factoryPid)
- + ")(" + Constants.SERVICE_PID + "=" + encode(configPid)
- + "))");
- }
- if (configs == null || configs.length == 0) {
- configs = ca.listConfigurations("(&("
- + ConfigurationAdmin.SERVICE_FACTORYPID + "=" + encode(factoryPid)
- + ")(" + Constants.SERVICE_PID + "=" + encode(factoryPid + "." + configPid)
- + "))");
- }
- if (configs == null || configs.length == 0) {
- // check for old style with alias pid
- configs = ca.listConfigurations(
- "(&(" + ConfigurationAdmin.SERVICE_FACTORYPID
- + "=" + factoryPid + ")(" + ALIAS_KEY + "=" + encode(configPid)
- + "))");
-
- if (configs == null || configs.length == 0) {
- if (createIfNeeded) {
- result = ca.createFactoryConfiguration(factoryPid, location);
- }
- } else {
+ if (createIfNeeded) {
+ result = ca.getFactoryConfiguration(factoryPid, configPidOrName, location);
+ } else {
+ final String filter = "(&("
+ + ConfigurationAdmin.SERVICE_FACTORYPID + "=" + encode(factoryPid)
+ + ")("
+ + Constants.SERVICE_PID + "=" + encode(ConfigUtil.getPIDOfFactoryPID(factoryPid, configPidOrName))
+ + "))";
+ Configuration[] configs = ca.listConfigurations(filter);
+ if (configs != null && configs.length > 0) {
result = configs[0];
}
- } else {
- result = configs[0];
}
}
@@ -232,4 +215,8 @@ abstract class ConfigUtil {
}
return result;
}
+
+ public static String getPIDOfFactoryPID(final String factoryPID, final String name) {
+ return factoryPID.concat("~").concat(name);
+ }
}
diff --git a/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java b/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
index 2b0c9a6..e63eed8 100644
--- a/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
+++ b/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
@@ -18,6 +18,10 @@
*/
package org.apache.sling.installer.factories.configuration.impl;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
@@ -27,16 +31,11 @@ import org.mockito.Mockito;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
public class ConfigUtilTest {
@Test public void testIsSameDataEmptyAndNullDictionaries() throws Exception {
- final Dictionary<String, Object> a = new Hashtable<String, Object>();
- final Dictionary<String, Object> b = new Hashtable<String, Object>();
+ final Dictionary<String, Object> a = new Hashtable<>();
+ final Dictionary<String, Object> b = new Hashtable<>();
assertTrue(ConfigUtil.isSameData(a, b));
assertTrue(ConfigUtil.isSameData(b, a));
@@ -46,8 +45,8 @@ public class ConfigUtilTest {
}
@Test public void testIsSameDataSameDictionaries() throws Exception {
- final Dictionary<String, Object> a = new Hashtable<String, Object>();
- final Dictionary<String, Object> b = new Hashtable<String, Object>();
+ final Dictionary<String, Object> a = new Hashtable<>();
+ final Dictionary<String, Object> b = new Hashtable<>();
a.put("a", "value");
a.put("b", 1);
@@ -75,8 +74,8 @@ public class ConfigUtilTest {
}
@Test public void testIsSameDataArrays() throws Exception {
- final Dictionary<String, Object> a = new Hashtable<String, Object>();
- final Dictionary<String, Object> b = new Hashtable<String, Object>();
+ final Dictionary<String, Object> a = new Hashtable<>();
+ final Dictionary<String, Object> b = new Hashtable<>();
a.put("a", new String[] {"1", "2", "3"});
b.put("a", a.get("a"));
@@ -95,8 +94,8 @@ public class ConfigUtilTest {
}
@Test public void testIsSameDataWithPrimitiveArrays() throws Exception {
- final Dictionary<String, Object> a = new Hashtable<String, Object>();
- final Dictionary<String, Object> b = new Hashtable<String, Object>();
+ final Dictionary<String, Object> a = new Hashtable<>();
+ final Dictionary<String, Object> b = new Hashtable<>();
a.put("b", new int[] {1,2,3});
b.put("b", a.get("b"));
@@ -113,39 +112,9 @@ public class ConfigUtilTest {
@Test public void testGetOrCreateConfiguration() throws Exception {
Configuration c1 = Mockito.mock(Configuration.class);
- Configuration c2 = Mockito.mock(Configuration.class);
- ConfigurationAdmin cm = Mockito.mock(ConfigurationAdmin.class);
- Mockito.when(cm.listConfigurations(
- "(&(service.factoryPid=a.b.c)(service.pid=c1))"))
- .thenReturn(new Configuration[] {c1});
- Mockito.when(cm.listConfigurations(
- "(&(service.factoryPid=a.b.c)(service.pid=a.b.c.c1))"))
- .thenReturn(new Configuration[] {c2});
- Configuration cfg = ConfigUtil.getConfiguration(cm, "a.b.c", "c1");
- assertSame(c1, cfg);
- }
-
- @Test public void testGetOrCreateConfigurationFactoryPrefix() throws Exception {
- Configuration c1 = Mockito.mock(Configuration.class);
- Configuration c2 = Mockito.mock(Configuration.class);
- ConfigurationAdmin cm = Mockito.mock(ConfigurationAdmin.class);
- Mockito.when(cm.listConfigurations(
- "(&(service.factoryPid=a.b.c)(service.pid=a.b.c.c1))"))
- .thenReturn(new Configuration[] {c1});
- Mockito.when(cm.listConfigurations(
- "(&(service.factoryPid=a.b.c)(org.apache.sling.installer.osgi.factoryaliaspid=c1))"))
- .thenReturn(new Configuration[] {c2});
- Configuration cfg = ConfigUtil.getConfiguration(cm, "a.b.c", "c1");
- assertSame(c1, cfg);
-
- assertNull(ConfigUtil.getConfiguration(cm, "a.b.c", "c2"));
- }
-
- @Test public void testGetOrCreateConfigurationAliasKey() throws Exception {
- Configuration c1 = Mockito.mock(Configuration.class);
ConfigurationAdmin cm = Mockito.mock(ConfigurationAdmin.class);
Mockito.when(cm.listConfigurations(
- "(&(service.factoryPid=a.b.c)(org.apache.sling.installer.osgi.factoryaliaspid=c1))"))
+ "(&(service.factoryPid=a.b.c)(service.pid=a.b.c~c1))"))
.thenReturn(new Configuration[] {c1});
Configuration cfg = ConfigUtil.getConfiguration(cm, "a.b.c", "c1");
assertSame(c1, cfg);