List of usage examples for io.vertx.core.json JsonObject getJsonArray
public JsonArray getJsonArray(String key)
From source file:io.flowly.auth.manager.BaseManager.java
License:Open Source License
/** * Revoke and grant permissions based on the specification. * Sequence - remove specified permissions, update specified permissions and then add specified permissions. * * @param vertex the node that represents a user or group vertex. * @param jsonObject JSON object representing the user or group permissions. */// w ww. j a v a2 s . c o m protected void redoPermissions(Vertex vertex, JsonObject jsonObject) { // Remove permissions. JsonArray permissionsToRemove = jsonObject.getJsonArray(Permission.PERMISSIONS_TO_REMOVE); if (permissionsToRemove != null) { graph.traversal().V(vertex).outE(Schema.E_HAS_PERMISSION).as("e").inV() .has(T.id, P.within(permissionsToRemove.getList().toArray())).<Edge>select("e").drop().toList(); } // Update permissions. JsonArray permissionsToUpdate = jsonObject.getJsonArray(Permission.PERMISSIONS_TO_UPDATE); if (permissionsToUpdate != null) { for (Object prm : permissionsToUpdate) { Permission permission = new Permission((JsonObject) prm); Long resourceVertexId = permission.getResourceVertexId(); graph.traversal().V(vertex).outE(Schema.E_HAS_PERMISSION).as("e").inV().has(T.id, resourceVertexId) .<Edge>select("e").property(Schema.E_P_RWX, permission.getRWX()).toList(); } } // Add permissions. JsonArray permissionsToAdd = jsonObject.getJsonArray(Permission.PERMISSIONS_TO_ADD); if (permissionsToAdd != null) { Set<Long> existingIds = new HashSet<>(); Long[] idsToAdd = new Long[permissionsToAdd.size()]; for (int i = 0; i < permissionsToAdd.size(); i++) { idsToAdd[i] = permissionsToAdd.getJsonObject(i).getLong(Permission.RESOURCE_VERTEX_ID); } graph.traversal().V(vertex).outE(Schema.E_HAS_PERMISSION).inV().has(T.id, P.within(idsToAdd)) .sideEffect(s -> { existingIds.add((Long) s.get().id()); }).toList(); grantPermissions(vertex, permissionsToAdd, existingIds); } }
From source file:io.flowly.auth.manager.GroupManager.java
License:Open Source License
/** * Create a group node in the auth graph. * * @param group JSON object representing a group's attributes, permissions, users and memberships. * Ex: {// www.j a va2s . c o m * "groupId": "Group 1", * "usersToAdd": [ * 13, * 14 * ], * "groupsToAdd": [ * 12343, * 34567 * ], * "permissionsToAdd": [ * { * "resourceVertexId": 555611 * "rwx": 7 * } * ] * } * @return an empty list or a list of validation errors based on whether the group was created or not. */ @Override public JsonArray create(JsonObject group) { Group newGroup = new Group(group); JsonArray errors = newGroup.validate(); if (errors.size() == 0) { try { Vertex groupVertex = graph.addVertex(T.label, Schema.V_GROUP, Schema.V_P_GROUP_ID, newGroup.getGroupId()); setPropertyValue(groupVertex, Schema.V_P_DESCRIPTION, newGroup.getDescription()); grantMemberships(groupVertex, true, group.getJsonArray(Group.USERS_TO_ADD), null); grantMemberships(groupVertex, false, group.getJsonArray(User.GROUPS_TO_ADD), null); grantPermissions(groupVertex, group.getJsonArray(Permission.PERMISSIONS_TO_ADD), null); commit(); } catch (Exception ex) { rollback(); String error = "Unable to create group: " + newGroup.getGroupId(); logger.error(error, ex); errors.add(error); } } return errors; }
From source file:io.flowly.auth.manager.UserManager.java
License:Open Source License
/** * Calculate the effective permissions granted to the given user. * The effective permission on each resource is the cumulative grants * given to the user either directly or indirectly. * * @param user JSON object representing the user in the auth graph. *//*from ww w. ja v a 2 s . com*/ private void getEffectivePermissions(JsonObject user) { JsonArray effectivePermissions = new JsonArray(); // Holds the resource Ids and their respective permissions that have the cumulative // grant value (simple integer - rwx). Map<String, JsonObject> definedPermissions = new HashMap<>(); // Start with direct permissions. getEffectivePermissions(user.getJsonArray(Permission.DIRECT_PERMISSIONS), definedPermissions); // Check permissions defined on groups. JsonArray effectiveMemberships = user.getJsonArray(User.EFFECTIVE_MEMBERSHIPS); if (effectiveMemberships != null) { for (Object mbr : effectiveMemberships) { JsonObject membership = (JsonObject) mbr; getEffectivePermissions(membership.getJsonArray(Permission.DIRECT_PERMISSIONS), definedPermissions); } } for (JsonObject permission : definedPermissions.values()) { effectivePermissions.add(permission); } user.put(Permission.EFFECTIVE_PERMISSIONS, effectivePermissions); }
From source file:io.flowly.engine.verticles.services.Email.java
License:Open Source License
private void registerEmailHandler() { vertx.eventBus().consumer(EngineAddresses.SEND_EMAIL, request -> { JsonObject mail = (JsonObject) request.body(); MailMessage email = new MailMessage(); try {//from w ww .j a va 2 s . c om // TODO: Should "from" variable be configured per app or per call? email.setFrom("test@flowly.io"); // TODO: Test multiple send to issue. // If emailTo is a string, create an array. Object emailTo = mail.getValue(JsonKeys.EMAIL_TO); if (emailTo instanceof String) { email.setTo((String) emailTo); } else { email.setTo(mail.getJsonArray(JsonKeys.EMAIL_TO).getList()); } email.setSubject(mail.getString(JsonKeys.EMAIL_SUBJECT)); email.setHtml(mail.getString(JsonKeys.EMAIL_BODY)); mailClient.sendMail(email, result -> { if (result.succeeded()) { if (logger.isInfoEnabled()) { logger.info("Email: " + email.getSubject() + ", sent to: " + email.getTo()); } JsonObject message = new JsonObject(); message.put(JsonKeys.RESULT, true); request.reply(message); } else { Failure failure = new Failure(6000, "Failed to send email.", result.cause()); logger.error(failure.getError(), failure.getCause()); request.fail(failure.getCode(), failure.getMessage()); } }); } catch (Exception ex) { Failure failure = new Failure(6001, "Unable to parse email message.", ex); logger.error(failure.getError(), failure.getCause()); request.fail(failure.getCode(), failure.getMessage()); } }); }
From source file:io.knotx.adapter.common.http.HttpAdapterConfiguration.java
License:Apache License
public HttpAdapterConfiguration(JsonObject config) { address = config.getString("address"); services = config.getJsonArray("services").stream().map(item -> (JsonObject) item).map(item -> { ServiceMetadata metadata = new ServiceMetadata(); metadata.path = item.getString("path"); metadata.domain = item.getString("domain"); metadata.port = item.getInteger("port"); metadata.allowedRequestHeaderPatterns = item.getJsonArray("allowedRequestHeaders", new JsonArray()) .stream().map(object -> (String) object).map(new StringToPatternFunction()) .collect(Collectors.toList()); return metadata; }).collect(Collectors.toList()); clientOptions = config.getJsonObject("clientOptions", new JsonObject()); }
From source file:io.knotx.dataobjects.Fragment.java
License:Apache License
public Fragment(JsonObject fragment) { this.knots = fragment.getJsonArray(KNOTS_KEY).stream().map(String::valueOf).collect(Collectors.toList()); this.content = fragment.getString(CONTENT_KEY); this.context = fragment.getJsonObject(CONTEXT_KEY, new JsonObject()); }
From source file:io.knotx.knot.action.ActionKnotConfiguration.java
License:Apache License
public ActionKnotConfiguration(JsonObject config) { this.address = config.getString("address"); this.formIdentifierName = config.getString("formIdentifierName"); this.adapterMetadataList = config.getJsonArray("adapters").stream().map(item -> (JsonObject) item) .map(item -> {/*w w w.j a v a 2 s .com*/ AdapterMetadata metadata = new AdapterMetadata(); metadata.name = item.getString("name"); metadata.address = item.getString("address"); metadata.params = item.getJsonObject("params", new JsonObject()).getMap(); metadata.allowedRequestHeaders = item.getJsonArray("allowedRequestHeaders", new JsonArray()) .stream().map(object -> (String) object).map(new StringToPatternFunction()) .collect(Collectors.toList()); metadata.allowedResponseHeaders = item.getJsonArray("allowedResponseHeaders", new JsonArray()) .stream().map(object -> (String) object).map(new StringToPatternFunction()) .collect(Collectors.toList()); return metadata; }).collect(Collectors.toList()); }
From source file:io.knotx.knot.service.ServiceKnotConfiguration.java
License:Apache License
public ServiceKnotConfiguration(JsonObject config) { address = config.getString("address"); services = config.getJsonArray("services").stream().map(item -> (JsonObject) item).map(item -> { ServiceMetadata metadata = new ServiceMetadata(); metadata.name = item.getString("name"); metadata.address = item.getString("address"); metadata.params = item.getJsonObject("params"); metadata.cacheKey = item.getString("cacheKey"); return metadata; }).collect(Collectors.toList()); }
From source file:io.knotx.server.KnotxServerConfiguration.java
License:Apache License
public KnotxServerConfiguration(JsonObject config) { httpPort = config.getInteger("httpPort"); splitterAddress = config.getJsonObject("splitter").getString("address"); assemblerAddress = config.getJsonObject("assembler").getString("address"); displayExceptionDetails = config.getBoolean("displayExceptionDetails", false); engineRouting = Maps.newEnumMap(HttpMethod.class); config.getJsonObject("routing").stream().forEach(this::parseMethodRouting); repositoryAddressMapping = Maps.newHashMap(); config.getJsonArray("repositories").stream().map(item -> (JsonObject) item) .forEach(object -> repositoryAddressMapping.put(object.getString("path"), new RepositoryEntry(object.getString("address"), object.getBoolean("doProcessing", true)))); allowedResponseHeaders = config.getJsonArray("allowedResponseHeaders").stream() .map(item -> ((String) item).toLowerCase()).collect(Collectors.toSet()); }
From source file:io.knotx.util.MultiMapConverter.java
License:Apache License
/** * Converts MultiMap to JsonObject<br> It expects the MultiMap key, contains List of String * objects, so the result of conversion will look like below * <br>//ww w . java 2s. com * <pre> * { * "mapKey1": ["val1", "val2"], * "mapKey2": ["val1"] * } * </pre> * * @param multiMap - {@link MultiMap} to convert * @return - {@link JsonObject} with {@link JsonArray} under each object key */ public static JsonObject toJsonObject(MultiMap multiMap) { JsonObject json = new JsonObject(); ((io.vertx.core.MultiMap) multiMap.getDelegate()).forEach(entry -> { JsonArray values; if (json.containsKey(entry.getKey())) { values = json.getJsonArray(entry.getKey()); } else { values = new JsonArray(); json.put(entry.getKey(), values); } values.add(entry.getValue()); }); return json; }