Extracted class file by inner class
This commit is contained in:
parent
0ab8ff5563
commit
0179e650b6
|
@ -9,11 +9,8 @@ import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.TreeSet;
|
|
||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
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.keycloak.representations.idm.authorization.ScopeRepresentation;
|
||||||
import org.xml.sax.SAXException;
|
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.Role;
|
||||||
import com.nubisware.oidc.gcube.D4ScienceMappings.Scope;
|
import com.nubisware.oidc.gcube.D4ScienceMappings.Scope;
|
||||||
import com.nubisware.oidc.keycloak.KeycloakHelper;
|
import com.nubisware.oidc.keycloak.KeycloakHelper;
|
||||||
|
@ -194,81 +187,7 @@ public class ClientsCreatorFromExport {
|
||||||
return exportParser;
|
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<String> getAllUsers() {
|
|
||||||
Set<String> users = new TreeSet<>();
|
|
||||||
Iterator<JsonNode> arrayIterator = rootNode.elements();
|
|
||||||
while (arrayIterator.hasNext()) {
|
|
||||||
JsonNode entry = arrayIterator.next();
|
|
||||||
users.add(entry.get("username").asText());
|
|
||||||
}
|
|
||||||
return users;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<String> getAllContexts() {
|
|
||||||
Set<String> distinctContexts = new TreeSet<>();
|
|
||||||
Iterator<JsonNode> 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<String, Set<String>> getContextsAndRoles(String user) {
|
|
||||||
Iterator<JsonNode> arrayIterator = rootNode.elements();
|
|
||||||
while (arrayIterator.hasNext()) {
|
|
||||||
JsonNode entry = arrayIterator.next();
|
|
||||||
String username = entry.get("username").asText();
|
|
||||||
if (!user.equals(username)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Map<String, Set<String>> contextAndRoles = new TreeMap<>();
|
|
||||||
ObjectNode contextsNode = (ObjectNode) entry.get("contexts");
|
|
||||||
Iterator<String> contextIterator = contextsNode.fieldNames();
|
|
||||||
while (contextIterator.hasNext()) {
|
|
||||||
String context = (String) contextIterator.next();
|
|
||||||
Set<String> 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<String, Map<String, Set<String>>> getAllUserContextsAndRoles() {
|
|
||||||
Map<String, Map<String, Set<String>>> usersToContextAndRoles = new TreeMap<>();
|
|
||||||
Iterator<JsonNode> arrayIterator = rootNode.elements();
|
|
||||||
while (arrayIterator.hasNext()) {
|
|
||||||
JsonNode entry = arrayIterator.next();
|
|
||||||
String username = entry.get("username").asText();
|
|
||||||
Map<String, Set<String>> contextAndRoles = new TreeMap<>();
|
|
||||||
ObjectNode contextsNode = (ObjectNode) entry.get("contexts");
|
|
||||||
Iterator<String> contextIterator = contextsNode.fieldNames();
|
|
||||||
while (contextIterator.hasNext()) {
|
|
||||||
String context = (String) contextIterator.next();
|
|
||||||
Set<String> 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 {
|
public static void main(String[] args) throws Exception {
|
||||||
String serverURL = null;
|
String serverURL = null;
|
||||||
|
|
|
@ -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<String> getAllUsers() {
|
||||||
|
Set<String> users = new TreeSet<>();
|
||||||
|
Iterator<JsonNode> arrayIterator = rootNode.elements();
|
||||||
|
while (arrayIterator.hasNext()) {
|
||||||
|
JsonNode entry = arrayIterator.next();
|
||||||
|
users.add(entry.get("username").asText());
|
||||||
|
}
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getAllContexts() {
|
||||||
|
Set<String> distinctContexts = new TreeSet<>();
|
||||||
|
Iterator<JsonNode> 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<String, Set<String>> getContextsAndRoles(String user) {
|
||||||
|
Iterator<JsonNode> arrayIterator = rootNode.elements();
|
||||||
|
while (arrayIterator.hasNext()) {
|
||||||
|
JsonNode entry = arrayIterator.next();
|
||||||
|
String username = entry.get("username").asText();
|
||||||
|
if (!user.equals(username)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Map<String, Set<String>> contextAndRoles = new TreeMap<>();
|
||||||
|
ObjectNode contextsNode = (ObjectNode) entry.get("contexts");
|
||||||
|
Iterator<String> contextIterator = contextsNode.fieldNames();
|
||||||
|
while (contextIterator.hasNext()) {
|
||||||
|
String context = (String) contextIterator.next();
|
||||||
|
Set<String> 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<String, Map<String, Set<String>>> getAllUserContextsAndRoles() {
|
||||||
|
Map<String, Map<String, Set<String>>> usersToContextAndRoles = new TreeMap<>();
|
||||||
|
Iterator<JsonNode> arrayIterator = rootNode.elements();
|
||||||
|
while (arrayIterator.hasNext()) {
|
||||||
|
JsonNode entry = arrayIterator.next();
|
||||||
|
String username = entry.get("username").asText();
|
||||||
|
Map<String, Set<String>> contextAndRoles = new TreeMap<>();
|
||||||
|
ObjectNode contextsNode = (ObjectNode) entry.get("contexts");
|
||||||
|
Iterator<String> contextIterator = contextsNode.fieldNames();
|
||||||
|
while (contextIterator.hasNext()) {
|
||||||
|
String context = (String) contextIterator.next();
|
||||||
|
Set<String> 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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue