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 29e4537 SLING-7786 : Use R7 configuration admin supporting named
factory configurations
29e4537 is described below
commit 29e4537f16194bd15e75c0dfca02e335086fce4e
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Wed Aug 1 10:04:46 2018 +0200
SLING-7786 : Use R7 configuration admin supporting named factory
configurations
---
.../configuration/impl/ConfigRemoveTask.java | 13 +++++++-
.../configuration/impl/ConfigTaskCreator.java | 12 ++++++--
.../factories/configuration/impl/ConfigUtil.java | 35 ++++++++++++++++++++++
3 files changed, 56 insertions(+), 4 deletions(-)
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 bf767cb..e8b0011 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
@@ -46,7 +46,18 @@ public class ConfigRemoveTask extends AbstractConfigTask {
public void execute(final InstallationContext ctx) {
synchronized ( Coordinator.SHARED ) {
try {
- final Configuration cfg =
ConfigUtil.getConfiguration(this.getConfigurationAdmin(), this.factoryPid,
this.configPid);
+ Configuration cfg =
ConfigUtil.getConfiguration(this.getConfigurationAdmin(), this.factoryPid,
this.configPid);
+ if ( cfg == null && this.factoryPid != null ) {
+ // try support for legacy factory config handling
+ final String aliasPid;
+ if ( this.getResourceGroup().getAlias() != null ) {
+ aliasPid =
this.getResourceGroup().getAlias().substring(this.factoryPid.length() + 1);
+ } else {
+ aliasPid = null;
+ }
+ cfg =
ConfigUtil.getLegacyFactoryConfig(this.getConfigurationAdmin(),
this.factoryPid, (this.factoryPid != null && aliasPid != null ? aliasPid :
this.configPid));
+
+ }
if (cfg == null) {
this.getLogger().debug("Cannot delete config , pid={} not
found, ignored ({})", getRealPID(), getResource());
} else {
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 61cdacf..3033a5a 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
@@ -158,10 +158,16 @@ public class ConfigTaskCreator
*/
private TransformationResult[] checkConfiguration(final RegisteredResource
resource) {
final String url = separatorsToUnix(resource.getURL());
- String lastIdPart = url;
- final int pos = lastIdPart.lastIndexOf('/');
+ int pos = url.lastIndexOf('/');
+ if ( pos == -1 ) {
+ pos = url.indexOf(':');
+ }
+
+ final String lastIdPart;
if ( pos != -1 ) {
- lastIdPart = lastIdPart.substring(pos + 1);
+ lastIdPart = url.substring(pos + 1);
+ } else {
+ lastIdPart = url;
}
final String pid;
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 8a664f0..b8cca60 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
@@ -204,6 +204,41 @@ abstract class ConfigUtil {
return result;
}
+ public static Configuration getLegacyFactoryConfig(final
ConfigurationAdmin ca,
+ final String factoryPid,
+ final String configPid)
+ throws IOException, InvalidSyntaxException {
+ Configuration result = null;
+
+ 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) {
+ result = configs[0];
+ }
+ } else {
+ result = configs[0];
+ }
+ return result;
+ }
+
public static boolean toBoolean(final Object obj, final boolean
defaultValue) {
boolean result = defaultValue;
if ( obj != null ) {