SLING-7787 : Support official JSON format for configurations
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 dd7d796..36e8067 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
@@ -18,6 +18,7 @@
*/
package org.apache.sling.installer.factories.configuration.impl;
+import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.List;
@@ -276,20 +277,17 @@
private TransformationResult[] checkConfiguration(final RegisteredResource resource) {
final String lastIdPart = getResourceId(resource.getURL());
- final String pid;
// remove extension if known
- if ( isConfigExtension(getExtension(lastIdPart)) ) {
- final int lastDot = lastIdPart.lastIndexOf('.');
- pid = lastIdPart.substring(0, lastDot);
- } else {
- pid = lastIdPart;
- }
+ final String pid = removeConfigExtension(lastIdPart);
// split pid and factory pid alias
final Map<String, Object> attr = new HashMap<>();
final String factoryPid;
final String configPid;
- int n = pid.indexOf('-');
+ int n = pid.indexOf('~');
+ if ( n == -1 ) {
+ n = pid.indexOf('-');
+ }
if (n > 0) {
configPid = pid.substring(n + 1);
factoryPid = pid.substring(0, n);
@@ -340,22 +338,14 @@
this.latch = null;
}
- /**
- * Compute the extension
- */
- private static String getExtension(final String url) {
- final int pos = url.lastIndexOf('.');
- return (pos < 0 ? "" : url.substring(pos+1));
- }
-
- private static boolean isConfigExtension(final String extension) {
- if ( extension.equals("cfg")
- || extension.equals("config")
- || extension.equals("xml")
- || extension.equals("properties")) {
- return true;
+ private static final List<String> EXTENSIONS = Arrays.asList(".config", ".properties", ".cfg", ".cfg.json");
+ private static String removeConfigExtension(final String id) {
+ for(final String ext : EXTENSIONS) {
+ if ( id.endsWith(ext) ) {
+ return id.substring(0, id.length() - ext.length());
+ }
}
- return false;
+ return id;
}
/**