You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/07/12 21:01:22 UTC
[sling-org-apache-sling-feature-launcher] branch features-service
updated: Configure WhitelistServiceFactory
This is an automated email from the ASF dual-hosted git repository.
davidb pushed a commit to branch features-service
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-launcher.git
The following commit(s) were added to refs/heads/features-service by this push:
new 12142b7 Configure WhitelistServiceFactory
12142b7 is described below
commit 12142b79aa41af556286eb6a0ad036a9c48516ea
Author: David Bosschaert <bo...@adobe.com>
AuthorDate: Thu Jul 12 23:01:08 2018 +0200
Configure WhitelistServiceFactory
---
.../feature/launcher/impl/FeatureProcessor.java | 41 ++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java b/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
index 053f7d0..4ed9916 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
@@ -33,17 +33,22 @@ import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
+import javax.json.JsonString;
+import javax.json.JsonValue;
public class FeatureProcessor {
private static final String FEATURES_SERVICE_FACTORY = "org.apache.sling.feature.service.FeaturesFactory";
- private static final String WHITELIST_ENFORCER_PID = "org.apache.sling.feature.whitelist.impl.WhitelistEnforcer";
+ private static final String WHITELIST_SERVICE_FACTORY = "org.apache.sling.feature.whitelist.WhitelistServiceFactory";
/**
* Initialize the launcher
@@ -143,11 +148,26 @@ public class FeatureProcessor {
config.getInstallation().addConfiguration(cfg.getName(), cfg.getFactoryPid(), cfg.getProperties());
} else if ( ext.getName().equals("bundle-feature-mapping") ) {
try (JsonReader reader = Json.createReader(new StringReader(ext.getJSON()))) {
-
JsonArray array = reader.readArray();
JsonObject jo = array.getJsonObject(0);
config.getInstallation().getAdditionalOptions().put(FEATURES_SERVICE_FACTORY, jo);
}
+ } else if ( ext.getName().equals("feature-region-mapping") ) {
+ try (JsonReader reader = Json.createReader(new StringReader(ext.getJSON()))) {
+ JsonArray array = reader.readArray();
+ JsonObject jo = array.getJsonObject(0);
+
+ Map<String, Map<String, Set<String>>> m = new HashMap<>();
+ JsonValue pv = jo.get("packages");
+ if (pv instanceof JsonObject) {
+ m.put("packages", convertToMapOfSet(pv));
+ }
+ JsonValue rv = jo.get("regions");
+ if (rv instanceof JsonObject) {
+ m.put("regions", convertToMapOfSet(rv));
+ }
+ config.getInstallation().getAdditionalOptions().put(WHITELIST_SERVICE_FACTORY, m);
+ }
} else {
if ( ext.isRequired() ) {
throw new Exception("Unknown required extension " + ext.getName());
@@ -169,4 +189,21 @@ public class FeatureProcessor {
}
}
}
+
+ private static Map<String, Set<String>> convertToMapOfSet(JsonValue jv) {
+ Map<String, Set<String>> mapping = new HashMap<>();
+ for (Map.Entry<String, JsonValue> entry : ((JsonObject) jv).entrySet()) {
+ Set<String> valSet = new HashSet<>();
+ JsonValue val = entry.getValue();
+ if (val instanceof JsonArray) {
+ for (JsonValue v : ((JsonArray) val)) {
+ if (v instanceof JsonString) {
+ valSet.add(((JsonString) v).getString());
+ }
+ }
+ }
+ mapping.put(entry.getKey(), valSet);
+ }
+ return mapping;
+ }
}