Example usage for io.vertx.core.json JsonObject getJsonArray

List of usage examples for io.vertx.core.json JsonObject getJsonArray

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getJsonArray.

Prototype

public JsonArray getJsonArray(String key, JsonArray def) 

Source Link

Document

Like #getJsonArray(String) but specifying a default value to return if there is no entry.

Usage

From source file:org.entcore.directory.controllers.UserController.java

License:Open Source License

@Post("/user/delete")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(TeacherOfUser.class)
public void deleteByPost(final HttpServerRequest request) {
    bodyToJson(request, new Handler<JsonObject>() {
        @Override//w  ww .  java 2s.  c  o m
        @SuppressWarnings("unchecked")
        public void handle(JsonObject event) {
            if (event != null) {
                userService.delete(
                        event.getJsonArray("users", new fr.wseduc.webutils.collections.JsonArray()).getList(),
                        defaultResponseHandler(request));
            } else {
                badRequest(request, "invalid.json");
            }
        }
    });
}

From source file:org.entcore.feeder.utils.Report.java

License:Open Source License

private JsonObject cloneAndFilterResults(Optional<String> prefixAcademy) {
    JsonObject results = this.result.copy();
    if (prefixAcademy.isPresent()) {
        // filter each ignored object by externalId starting with academy name
        String prefix = prefixAcademy.get();
        JsonObject ignored = results.getJsonObject("ignored");
        Set<String> domains = ignored.fieldNames();
        for (String domain : domains) {
            JsonArray filtered = ignored.getJsonArray(domain, new JsonArray()).stream().filter(ig -> {
                if (ig instanceof JsonObject && ((JsonObject) ig).containsKey("object")) {
                    JsonObject object = ((JsonObject) ig).getJsonObject("object");
                    String externalId = object.getString("externalId");
                    return StringUtils.startsWithIgnoreCase(externalId, prefix);
                } else {
                    // keep in list because it is not a concerned object
                    return true;
                }/*  w  ww . ja  va 2 s . c  om*/
            }).collect(JsonArray::new, JsonArray::add, JsonArray::addAll);//
            ignored.put(domain, filtered);
        }
        // userExternalIds FIltered
        JsonArray usersExternalIdsFiltered = results.getJsonArray("usersExternalIds", new JsonArray()).stream()
                .filter(value -> {
                    return (value instanceof String
                            && StringUtils.startsWithIgnoreCase((String) value, prefix));
                }).collect(JsonArray::new, JsonArray::add, JsonArray::addAll);//
        results.put("usersExternalIds", usersExternalIdsFiltered);
    }
    return results;
}

From source file:org.entcore.infra.controllers.EventStoreController.java

License:Open Source License

public EventStoreController(JsonObject eventConfig) {
    this.userBlackList = eventConfig.getJsonArray("user-blacklist",
            new fr.wseduc.webutils.collections.JsonArray());
}

From source file:org.entcore.portal.controllers.PortalController.java

License:Open Source License

@Get("/applications-list")
@SecuredAction(value = "portal.auth", type = ActionType.AUTHENTICATED)
public void applicationsList(final HttpServerRequest request) {
    UserUtils.getSession(eb, request, new Handler<JsonObject>() {

        @Override/*from ww w .j a v  a  2s  .  co m*/
        public void handle(JsonObject session) {
            JsonArray apps = session.getJsonArray("apps", new fr.wseduc.webutils.collections.JsonArray());
            for (Object o : apps) {
                if (!(o instanceof JsonObject))
                    continue;
                JsonObject j = (JsonObject) o;
                String d = j.getString("displayName");
                if (d == null || d.trim().isEmpty()) {
                    d = j.getString("name");
                }
                if (d != null) {
                    j.put("displayName", d);
                }
            }
            JsonObject json = new JsonObject().put("apps", apps);
            renderJson(request, json);
        }
    });
}

From source file:org.entcore.registry.controllers.AppRegistryController.java

License:Open Source License

@Put("/role/:id")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(RoleFilter.class)
public void updateRole(final HttpServerRequest request) {
    bodyToJson(request, new Handler<JsonObject>() {
        @Override//ww  w  .ja  v a 2s .  c  o  m
        public void handle(JsonObject body) {
            final String roleId = request.params().get("id");
            if (roleId != null && !roleId.trim().isEmpty()) {
                final String roleName = body.getString("role");
                final JsonArray actions = body.getJsonArray("actions",
                        new fr.wseduc.webutils.collections.JsonArray());
                final JsonObject role = new JsonObject();
                if (roleName != null && !roleName.trim().isEmpty()) {
                    role.put("name", roleName);
                }
                appRegistryService.updateRole(roleId, role, actions, notEmptyResponseHandler(request));
            } else {
                badRequest(request, "invalid.id");
            }
        }
    });
}

From source file:org.entcore.registry.services.impl.DefaultAppRegistryService.java

License:Open Source License

@Override
public void listCasConnectors(final Handler<Either<String, JsonArray>> handler) {
    String query = "MATCH (app:Application) " + "WHERE has(app.casType) and app.casType <> '' "
            + "RETURN app.casType as service, app.address as address, COLLECT(app.pattern) as patterns";
    neo.execute(query, (JsonObject) null, validResultHandler(new Handler<Either<String, JsonArray>>() {
        public void handle(Either<String, JsonArray> event) {
            if (event.isLeft()) {
                handler.handle(event);//  w w w. j  a v a2  s.c o m
                return;
            }
            JsonArray results = event.right().getValue();
            for (Object o : results) {
                JsonObject app = (JsonObject) o;
                String address = app.getString("address", "");
                JsonArray patterns = app.getJsonArray("patterns",
                        new fr.wseduc.webutils.collections.JsonArray());
                if (patterns.size() == 0 || patterns.size() > 0 && patterns.getString(0).isEmpty()) {
                    final URL addressURL = checkCasUrl(address);

                    if (addressURL != null) {
                        String pattern = "^\\Q" + addressURL.getProtocol() + "://" + addressURL.getHost()
                                + (addressURL.getPort() > 0 ? ":" + addressURL.getPort() : "") + "\\E.*";
                        patterns.add(pattern);
                    } else {
                        log.error("Url for registered service : " + app.getString("service", "")
                                + " is malformed : " + address);
                    }
                }
            }
            handler.handle(new Either.Right<String, JsonArray>(results));
        }
    }));
}

From source file:org.entcore.timeline.controllers.TimelineController.java

License:Open Source License

@Get("/lastNotifications")
@SecuredAction(value = "timeline.events", type = ActionType.AUTHENTICATED)
public void lastEvents(final HttpServerRequest request) {
    final boolean mine = request.params().contains("mine");

    UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {

        @Override/*from  www.  j av a 2s  .  c o  m*/
        public void handle(final UserInfos user) {
            if (user != null) {
                getExternalNotifications(new Handler<Either<String, JsonObject>>() {
                    public void handle(Either<String, JsonObject> notifs) {
                        if (notifs.isLeft()) {
                            badRequest(request, notifs.left().getValue());
                            return;
                        }

                        String page = request.params().get("page");
                        List<String> types = request.params().getAll("type");
                        int offset = 0;
                        try {
                            offset = 25 * Integer.parseInt(page);
                        } catch (NumberFormatException e) {
                        }

                        store.get(user, types, offset, 25, notifs.right().getValue(), mine,
                                new Handler<JsonObject>() {
                                    public void handle(final JsonObject res) {
                                        if (res != null && "ok".equals(res.getString("status"))) {
                                            JsonArray results = res.getJsonArray("results",
                                                    new fr.wseduc.webutils.collections.JsonArray());
                                            final JsonArray compiledResults = new fr.wseduc.webutils.collections.JsonArray();

                                            final AtomicInteger countdown = new AtomicInteger(results.size());
                                            final Handler<Void> endHandler = new Handler<Void>() {
                                                public void handle(Void v) {
                                                    if (countdown.decrementAndGet() <= 0) {
                                                        res.put("results", compiledResults);
                                                        renderJson(request, res);
                                                    }
                                                }
                                            };
                                            if (results.size() == 0)
                                                endHandler.handle(null);

                                            for (Object notifObj : results) {
                                                final JsonObject notif = (JsonObject) notifObj;
                                                if (!notif.getString("message", "").isEmpty()) {
                                                    compiledResults.add(notif);
                                                    endHandler.handle(null);
                                                    continue;
                                                }

                                                String key = notif.getString("type", "").toLowerCase() + "."
                                                        + notif.getString("event-type", "").toLowerCase();

                                                String stringifiedRegisteredNotif = registeredNotifications
                                                        .get(key);
                                                if (stringifiedRegisteredNotif == null) {
                                                    log.error(
                                                            "Failed to retrieve registered from the shared map notification with key : "
                                                                    + key);
                                                    endHandler.handle(null);
                                                    continue;
                                                }
                                                JsonObject registeredNotif = new JsonObject(
                                                        stringifiedRegisteredNotif);

                                                StringReader reader = new StringReader(
                                                        registeredNotif.getString("template", ""));
                                                processTemplate(request,
                                                        notif.getJsonObject("params", new JsonObject()), key,
                                                        reader, new Handler<Writer>() {
                                                            public void handle(Writer writer) {
                                                                notif.put("message", writer.toString());
                                                                compiledResults.add(notif);
                                                                endHandler.handle(null);
                                                            }
                                                        });
                                            }
                                        } else {
                                            renderError(request, res);
                                        }
                                    }
                                });
                    }
                });

            } else {
                unauthorized(request);
            }
        }
    });
}

From source file:org.entcore.timeline.events.DefaultTimelineEventStore.java

License:Open Source License

@Override
public void get(final UserInfos user, List<String> types, int offset, int limit, JsonObject restrictionFilter,
        boolean mine, final Handler<JsonObject> result) {
    final String recipient = user.getUserId();
    final String externalId = user.getExternalId();
    if (recipient != null && !recipient.trim().isEmpty()) {
        final JsonObject query = new JsonObject().put("deleted", new JsonObject().put("$exists", false))
                .put("date", new JsonObject().put("$lt", MongoDb.now()));
        if (externalId == null || externalId.trim().isEmpty()) {
            query.put(mine ? "sender" : "recipients.userId", recipient);
        } else {//from  w  w w  .  j  a  v a  2s . co m
            query.put(mine ? "sender" : "recipients.userId", new JsonObject().put("$in",
                    new fr.wseduc.webutils.collections.JsonArray().add(recipient).add(externalId)));
        }
        query.put("reportAction.action", new JsonObject().put("$ne", "DELETE"));
        if (types != null && !types.isEmpty()) {
            if (types.size() == 1) {
                query.put("type", types.get(0));
            } else {
                JsonArray typesFilter = new fr.wseduc.webutils.collections.JsonArray();
                for (String t : types) {
                    typesFilter.add(new JsonObject().put("type", t));
                }
                query.put("$or", typesFilter);
            }
        }
        if (restrictionFilter != null && restrictionFilter.size() > 0) {
            JsonArray nor = new fr.wseduc.webutils.collections.JsonArray();
            for (String type : restrictionFilter.getMap().keySet()) {
                for (Object eventType : restrictionFilter.getJsonArray(type,
                        new fr.wseduc.webutils.collections.JsonArray())) {
                    nor.add(new JsonObject().put("type", type).put("event-type", eventType.toString()));
                }
                query.put("$nor", nor);
            }
        }
        JsonObject sort = new JsonObject().put("created", -1);
        JsonObject keys = new JsonObject().put("message", 1).put("params", 1).put("date", 1).put("sender", 1)
                .put("comments", 1).put("type", 1).put("event-type", 1).put("resource", 1)
                .put("sub-resource", 1).put("add-comment", 1);
        if (!mine) {
            keys.put("recipients",
                    new JsonObject().put("$elemMatch", new JsonObject().put("userId", user.getUserId())));
            keys.put("reporters",
                    new JsonObject().put("$elemMatch", new JsonObject().put("userId", user.getUserId())));
        }

        mongo.find(TIMELINE_COLLECTION, query, sort, keys, offset, limit, 100,
                new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> message) {
                        result.handle(message.body());
                    }
                });
    } else {
        result.handle(invalidArguments());
    }
}

From source file:org.entcore.workspace.security.WorkspaceResourcesProvider.java

License:Open Source License

private void isAdminFromUsers(HttpServerRequest request, UserInfos user, final Handler<Boolean> handler) {
    final UserInfos.Function adminLocal = getFunction(user, handler);
    if (adminLocal == null)
        return;/*from   w ww  . ja v a  2s  . c  om*/
    RequestUtils.bodyToJson(request, new Handler<JsonObject>() {
        @Override
        public void handle(JsonObject object) {
            String query = "MATCH (s:Structure)<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u:User) "
                    + "WHERE s.id IN {structures} AND u.id IN {users} " + "RETURN count(distinct u) as nb ";
            final JsonArray users = object.getJsonArray("users",
                    new fr.wseduc.webutils.collections.JsonArray());
            JsonObject params = new JsonObject()
                    .put("structures", new fr.wseduc.webutils.collections.JsonArray(adminLocal.getScope()))
                    .put("users", users);
            Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> message) {
                    JsonArray res = message.body().getJsonArray("result");
                    handler.handle(
                            "ok".equals(message.body().getString("status")) && res != null && res.size() == 1
                                    && res.getJsonObject(0).getInteger("nb", -1).equals(users.size()));
                }
            });
        }
    });
}

From source file:org.entcore.workspace.service.impl.DefaultFolderService.java

License:Open Source License

public void getParentRights(final String parentName, final String parentFolder, final String owner,
        final Handler<Either<String, JsonArray>> result) {
    QueryBuilder parentFolderQuery = QueryBuilder.start("owner").is(owner).and("name").is(parentName)
            .and("folder").is(parentFolder);

    mongo.findOne(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(parentFolderQuery),
            new Handler<Message<JsonObject>>() {
                @Override/* ww w . j  a v a 2 s.c  o m*/
                public void handle(Message<JsonObject> event) {
                    if ("ok".equals(event.body().getString("status")) && event.body().containsKey("result")) {
                        JsonObject parent = event.body().getJsonObject("result");
                        JsonArray parentSharedRights = parent != null ? parent.getJsonArray("shared", null)
                                : null;

                        result.handle(new Either.Right<String, JsonArray>(parentSharedRights));
                    } else {
                        result.handle(new Either.Left<String, JsonArray>("workspace.folder.not.found"));
                    }
                }
            });
}