+ private Configuration[] listConfigurationsByFactory(String factoryPid) {
+ try {
+ Configuration[] configs = configurationAdmin.listConfigurations("(service.factoryPid=" + factoryPid + ")");
+ if (configs == null)
+ configs = new Configuration[0];
+ return configs;
+ } catch (IOException | InvalidSyntaxException e) {
+ throw new IllegalStateException("Cannot list configurations with factoryPid " + factoryPid, e);
+ }
+
+ }
+
+ private Configuration getSingleServiceConfiguration(String factoryPid, String cn) {
+ Configuration[] configs = listConfigurationsByFactory(factoryPid);
+ List<Configuration> res = new ArrayList<>();
+ for (Configuration config : configs) {
+ Object currentCn = config.getProperties().get(CmsConstants.CN);
+ if (currentCn != null && cn.equals(currentCn.toString()))
+ res.add(config);
+ }
+ if (res.size() == 0)
+ return null;
+ if (res.size() > 1)
+ throw new IllegalStateException(
+ "More than one " + factoryPid + " configuration returned for " + CmsConstants.CN + "=" + cn);
+ return res.get(0);
+ }
+