From 0179e650b66ee6f696cd00ed3b685dc46f1cd1af Mon Sep 17 00:00:00 2001 From: Mauro Mugnaini Date: Thu, 4 Jun 2020 16:46:49 +0200 Subject: [PATCH] Extracted class file by inner class --- .../gcube/ClientsCreatorFromExport.java | 81 ---------------- .../oidc/keycloak/gcube/ExportParser.java | 94 +++++++++++++++++++ 2 files changed, 94 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/nubisware/oidc/keycloak/gcube/ExportParser.java diff --git a/src/main/java/com/nubisware/oidc/keycloak/gcube/ClientsCreatorFromExport.java b/src/main/java/com/nubisware/oidc/keycloak/gcube/ClientsCreatorFromExport.java index 451de15..44da3de 100644 --- a/src/main/java/com/nubisware/oidc/keycloak/gcube/ClientsCreatorFromExport.java +++ b/src/main/java/com/nubisware/oidc/keycloak/gcube/ClientsCreatorFromExport.java @@ -9,11 +9,8 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.Map; import java.util.Set; -import java.util.TreeMap; -import java.util.TreeSet; import javax.xml.parsers.ParserConfigurationException; @@ -30,10 +27,6 @@ import org.keycloak.representations.idm.authorization.ResourceRepresentation; import org.keycloak.representations.idm.authorization.ScopeRepresentation; import org.xml.sax.SAXException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.nubisware.oidc.gcube.D4ScienceMappings.Role; import com.nubisware.oidc.gcube.D4ScienceMappings.Scope; import com.nubisware.oidc.keycloak.KeycloakHelper; @@ -194,81 +187,7 @@ public class ClientsCreatorFromExport { return exportParser; } - public class ExportParser { - private ArrayNode rootNode; - - public ExportParser(FileInputStream exportFileFIS) - throws SAXException, IOException, ParserConfigurationException { - ObjectMapper objectMapper = new ObjectMapper(); - rootNode = (ArrayNode) objectMapper.readTree(exportFileFIS); - } - - public Set getAllUsers() { - Set users = new TreeSet<>(); - Iterator arrayIterator = rootNode.elements(); - while (arrayIterator.hasNext()) { - JsonNode entry = arrayIterator.next(); - users.add(entry.get("username").asText()); - } - return users; - } - - public Set getAllContexts() { - Set distinctContexts = new TreeSet<>(); - Iterator arrayIterator = rootNode.elements(); - while (arrayIterator.hasNext()) { - JsonNode entry = arrayIterator.next(); - ObjectNode contextsNode = (ObjectNode) entry.get("contexts"); - contextsNode.fieldNames().forEachRemaining(f -> distinctContexts.add(f)); - } - return distinctContexts; - } - - public Map> getContextsAndRoles(String user) { - Iterator arrayIterator = rootNode.elements(); - while (arrayIterator.hasNext()) { - JsonNode entry = arrayIterator.next(); - String username = entry.get("username").asText(); - if (!user.equals(username)) { - continue; - } - Map> contextAndRoles = new TreeMap<>(); - ObjectNode contextsNode = (ObjectNode) entry.get("contexts"); - Iterator contextIterator = contextsNode.fieldNames(); - while (contextIterator.hasNext()) { - String context = (String) contextIterator.next(); - Set roles = new TreeSet<>(); - ArrayNode rolesNodes = (ArrayNode) contextsNode.get(context); - rolesNodes.elements().forEachRemaining(r -> roles.add(r.asText())); - contextAndRoles.put(context, roles); - } - return contextAndRoles; - } - return Collections.emptyMap(); - } - - public Map>> getAllUserContextsAndRoles() { - Map>> usersToContextAndRoles = new TreeMap<>(); - Iterator arrayIterator = rootNode.elements(); - while (arrayIterator.hasNext()) { - JsonNode entry = arrayIterator.next(); - String username = entry.get("username").asText(); - Map> contextAndRoles = new TreeMap<>(); - ObjectNode contextsNode = (ObjectNode) entry.get("contexts"); - Iterator contextIterator = contextsNode.fieldNames(); - while (contextIterator.hasNext()) { - String context = (String) contextIterator.next(); - Set roles = new TreeSet<>(); - ArrayNode rolesNodes = (ArrayNode) contextsNode.get(context); - rolesNodes.elements().forEachRemaining(r -> roles.add(r.asText())); - contextAndRoles.put(context, roles); - } - usersToContextAndRoles.put(username, contextAndRoles); - } - return usersToContextAndRoles; - } - } public static void main(String[] args) throws Exception { String serverURL = null; diff --git a/src/main/java/com/nubisware/oidc/keycloak/gcube/ExportParser.java b/src/main/java/com/nubisware/oidc/keycloak/gcube/ExportParser.java new file mode 100644 index 0000000..fc1f993 --- /dev/null +++ b/src/main/java/com/nubisware/oidc/keycloak/gcube/ExportParser.java @@ -0,0 +1,94 @@ +package com.nubisware.oidc.keycloak.gcube; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.TreeSet; + +import javax.xml.parsers.ParserConfigurationException; + +import org.xml.sax.SAXException; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +public class ExportParser { + + private ArrayNode rootNode; + + public ExportParser(FileInputStream exportFileFIS) throws SAXException, IOException, ParserConfigurationException { + ObjectMapper objectMapper = new ObjectMapper(); + rootNode = (ArrayNode) objectMapper.readTree(exportFileFIS); + } + + public Set getAllUsers() { + Set users = new TreeSet<>(); + Iterator arrayIterator = rootNode.elements(); + while (arrayIterator.hasNext()) { + JsonNode entry = arrayIterator.next(); + users.add(entry.get("username").asText()); + } + return users; + } + + public Set getAllContexts() { + Set distinctContexts = new TreeSet<>(); + Iterator arrayIterator = rootNode.elements(); + while (arrayIterator.hasNext()) { + JsonNode entry = arrayIterator.next(); + ObjectNode contextsNode = (ObjectNode) entry.get("contexts"); + contextsNode.fieldNames().forEachRemaining(f -> distinctContexts.add(f)); + } + return distinctContexts; + } + + public Map> getContextsAndRoles(String user) { + Iterator arrayIterator = rootNode.elements(); + while (arrayIterator.hasNext()) { + JsonNode entry = arrayIterator.next(); + String username = entry.get("username").asText(); + if (!user.equals(username)) { + continue; + } + Map> contextAndRoles = new TreeMap<>(); + ObjectNode contextsNode = (ObjectNode) entry.get("contexts"); + Iterator contextIterator = contextsNode.fieldNames(); + while (contextIterator.hasNext()) { + String context = (String) contextIterator.next(); + Set roles = new TreeSet<>(); + ArrayNode rolesNodes = (ArrayNode) contextsNode.get(context); + rolesNodes.elements().forEachRemaining(r -> roles.add(r.asText())); + contextAndRoles.put(context, roles); + } + return contextAndRoles; + } + return Collections.emptyMap(); + } + + public Map>> getAllUserContextsAndRoles() { + Map>> usersToContextAndRoles = new TreeMap<>(); + Iterator arrayIterator = rootNode.elements(); + while (arrayIterator.hasNext()) { + JsonNode entry = arrayIterator.next(); + String username = entry.get("username").asText(); + Map> contextAndRoles = new TreeMap<>(); + ObjectNode contextsNode = (ObjectNode) entry.get("contexts"); + Iterator contextIterator = contextsNode.fieldNames(); + while (contextIterator.hasNext()) { + String context = (String) contextIterator.next(); + Set roles = new TreeSet<>(); + ArrayNode rolesNodes = (ArrayNode) contextsNode.get(context); + rolesNodes.elements().forEachRemaining(r -> roles.add(r.asText())); + contextAndRoles.put(context, roles); + } + usersToContextAndRoles.put(username, contextAndRoles); + } + return usersToContextAndRoles; + } +} \ No newline at end of file