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);