Example usage for io.vertx.core.eventbus Message body

List of usage examples for io.vertx.core.eventbus Message body

Introduction

In this page you can find the example usage for io.vertx.core.eventbus Message body.

Prototype

@CacheReturn
T body();

Source Link

Document

The body of the message.

Usage

From source file:org.entcore.directory.security.TeacherOfClass.java

License:Open Source License

private void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query,
        JsonObject params) {//from   w  w w  .j ava  2 s  . com
    request.pause();
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1
                    && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false));
        }
    });
}

From source file:org.entcore.directory.security.TeacherOfUser.java

License:Open Source License

private void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query,
        JsonObject params) {/*  www .  j  a  v a  2  s . c  o m*/
    request.pause();
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1
                    && (res.getJsonObject(0)).getBoolean("exists", false));
        }
    });
}

From source file:org.entcore.directory.services.impl.DefaultClassService.java

License:Open Source License

@Override
public void addUser(final String classId, final String userId, final UserInfos user,
        final Handler<Either<String, JsonObject>> result) {
    if (validationParamsError(result, classId, userId))
        return;/*www  .ja  v  a2s.  com*/
    if (user == null) {
        result.handle(new Either.Left<String, JsonObject>("invalid.userinfos"));
        return;
    }
    neo.execute(
            "MATCH (u:`User` {id : {id}})-[:IN]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
                    + "RETURN distinct p.name as type",
            new JsonObject().put("id", userId), new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> r) {
                    JsonArray res = r.body().getJsonArray("result");
                    if ("ok".equals(r.body().getString("status")) && res != null && res.size() == 1) {
                        final String t = (res.getJsonObject(0)).getString("type");
                        String customReturn = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(cpg:ProfileGroup)"
                                + "-[:DEPENDS]->(spg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {name : {profile}}), "
                                + "c-[:BELONGS]->(s:Structure) " + "WHERE visibles.id = {uId} "
                                + "CREATE UNIQUE visibles-[:IN]->cpg "
                                + "RETURN DISTINCT visibles.id as id, s.id as schoolId";
                        JsonObject params = new JsonObject().put("classId", classId).put("uId", userId)
                                .put("profile", t);
                        UserUtils.findVisibleUsers(eb, user.getUserId(), false, customReturn, params,
                                new Handler<JsonArray>() {

                                    @Override
                                    public void handle(final JsonArray users) {
                                        if (users != null && users.size() == 1) {
                                            if ("Student".equals(t)) {
                                                String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(cpg:ProfileGroup)-[:DEPENDS]->(spg:ProfileGroup)"
                                                        + "-[:HAS_PROFILE]->(p:Profile {name : 'Relative'}), "
                                                        + "(u:User {id: {uId}})-[:RELATED]->(relative: User) "
                                                        + "CREATE UNIQUE relative-[:IN]->cpg "
                                                        + "RETURN count(relative) as relativeNb";

                                                JsonObject params = new JsonObject().put("classId", classId)
                                                        .put("uId", userId);

                                                neo.execute(query, params, Neo4jResult.validEmptyHandler(
                                                        new Handler<Either<String, JsonObject>>() {
                                                            public void handle(
                                                                    Either<String, JsonObject> event) {
                                                                if (event.isLeft()) {
                                                                    result.handle(
                                                                            new Either.Left<String, JsonObject>(
                                                                                    "error.while.attaching.relatives"));
                                                                } else {
                                                                    result.handle(
                                                                            new Either.Right<String, JsonObject>(
                                                                                    users.getJsonObject(0)));
                                                                }
                                                            }
                                                        }));
                                            } else {
                                                result.handle(new Either.Right<String, JsonObject>(
                                                        users.getJsonObject(0)));
                                            }
                                        } else {
                                            result.handle(
                                                    new Either.Left<String, JsonObject>("user.not.visible"));
                                        }
                                    }
                                });
                    } else {
                        result.handle(new Either.Left<String, JsonObject>("invalid.user"));
                    }
                }
            });
}

From source file:org.entcore.directory.services.impl.DefaultImportService.java

License:Open Source License

@Override
public void validate(ImportInfos importInfos, final Handler<Either<JsonObject, JsonObject>> handler) {
    try {/*  w w w  .  j av a2  s  .c  o  m*/
        JsonObject action = new JsonObject(mapper.writeValueAsString(importInfos)).put("action", "validate");
        eb.send(Directory.FEEDER, action, new DeliveryOptions().setSendTimeout(TIMEOUT),
                handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        if ("ok".equals(res.body().getString("status"))) {
                            JsonObject r = res.body().getJsonObject("result", new JsonObject());
                            if (r.getJsonObject("errors", new JsonObject()).size() > 0) {
                                handler.handle(
                                        new Either.Left<JsonObject, JsonObject>(r.getJsonObject("errors")));
                            } else {
                                JsonObject f = r.getJsonObject("files");
                                if (r.getJsonObject("softErrors") != null) {
                                    f.put("softErrors", r.getJsonObject("softErrors"));
                                }
                                handler.handle(new Either.Right<JsonObject, JsonObject>(f));
                            }
                        } else {
                            handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject()
                                    .put("global", new fr.wseduc.webutils.collections.JsonArray()
                                            .add(res.body().getString("message", "")))));
                        }
                    }
                }));
    } catch (JsonProcessingException e) {
        handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject().put("global",
                new fr.wseduc.webutils.collections.JsonArray().add("unexpected.error"))));
        log.error(e.getMessage(), e);
    }
}

From source file:org.entcore.directory.services.impl.DefaultImportService.java

License:Open Source License

@Override
public void doImport(ImportInfos importInfos, final Handler<Either<JsonObject, JsonObject>> handler) {
    try {//from   ww  w .  j  a  v a  2  s  . c  o  m
        JsonObject action = new JsonObject(mapper.writeValueAsString(importInfos)).put("action", "import");
        eb.send("entcore.feeder", action, new DeliveryOptions().setSendTimeout(TIMEOUT),
                handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        if ("ok".equals(event.body().getString("status"))) {
                            JsonObject r = event.body().getJsonObject("result", new JsonObject());
                            if (r.getJsonObject("errors", new JsonObject()).size() > 0) {
                                handler.handle(
                                        new Either.Left<JsonObject, JsonObject>(r.getJsonObject("errors")));
                            } else {
                                handler.handle(
                                        new Either.Right<JsonObject, JsonObject>(r.getJsonObject("ignored")));
                            }
                        } else {
                            handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject()
                                    .put("global", new fr.wseduc.webutils.collections.JsonArray()
                                            .add(event.body().getString("message", "")))));
                        }
                    }
                }));
    } catch (JsonProcessingException e) {
        handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject().put("global",
                new fr.wseduc.webutils.collections.JsonArray().add("unexpected.error"))));
        log.error(e.getMessage(), e);
    }
}

From source file:org.entcore.directory.services.impl.DefaultSchoolService.java

License:Open Source License

@Override
public void blockUsers(String structureId, String profile, boolean block, Handler<JsonObject> handler) {
    String query = "MATCH (s:Structure {id:{structureId}})<-[:DEPENDS]-(g:ProfileGroup)<-[:IN]-(u:User) WHERE g.name ENDS WITH {profile} SET u.blocked = {blocked} RETURN COLLECT(DISTINCT u.id) as usersId";
    JsonObject params = new JsonObject().put("structureId", structureId).put("profile", profile).put("blocked",
            block);/*ww w.j av  a  2s.  c  o  m*/
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            ;
            handler.handle(r.body());
        }
    });
}

From source file:org.entcore.directory.services.impl.DefaultUserBookService.java

License:Open Source License

@Override
public void update(String userId, JsonObject userBook, final Handler<Either<String, JsonObject>> result) {
    JsonObject u = Utils.validAndGet(userBook, UPDATE_USERBOOK_FIELDS, Collections.<String>emptyList());
    if (Utils.defaultValidationError(u, result, userId))
        return;// w w w  .j a  v a  2s  .  c  o m
    // OVERRIDE AVATAR URL
    Optional<String> pictureId = getPictureIdForUserbook(userBook);
    if (pictureId.isPresent()) {
        String fileId = avatarFileNameFromUserId(userId, Optional.empty());
        u.put("picture", "/userbook/avatar/" + fileId);
    }

    StatementsBuilder b = new StatementsBuilder();
    String query = "MATCH (u:`User` { id : {id}})-[:USERBOOK]->(ub:UserBook) WITH ub.picture as oldpic,ub,u SET "
            + nodeSetPropertiesFromJson("ub", u);
    query += " RETURN oldpic,ub.picture as picture";
    boolean updateUserBook = u.size() > 0;
    if (updateUserBook) {
        b.add(query, u.put("id", userId));
    }
    String q2 = "MATCH (u:`User` { id : {id}})-[:USERBOOK]->(ub:UserBook)"
            + "-[:PUBLIC|PRIVE]->(h:`Hobby` { category : {category}}) " + "SET h.values = {values} ";
    JsonArray hobbies = userBook.getJsonArray("hobbies");
    if (hobbies != null) {
        for (Object o : hobbies) {
            if (!(o instanceof JsonObject))
                continue;
            JsonObject j = (JsonObject) o;
            b.add(q2, j.put("id", userId));
        }
    }
    neo.executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            if ("ok".equals(r.body().getString("status"))) {
                if (updateUserBook) {
                    JsonArray results = r.body().getJsonArray("results", new JsonArray());
                    JsonArray firstStatement = results.getJsonArray(0);
                    if (firstStatement != null && firstStatement.size() > 0) {
                        JsonObject object = firstStatement.getJsonObject(0);
                        String picture = object.getString("picture", "");
                        cacheAvatarFromUserBook(userId, pictureId, StringUtils.isEmpty(picture))
                                .setHandler(e -> {
                                    if (e.succeeded()) {
                                        result.handle(new Either.Right<String, JsonObject>(new JsonObject()));
                                    } else {
                                        result.handle(new Either.Left<String, JsonObject>(
                                                r.body().getString("message", "update.error")));
                                    }
                                });
                    }
                } else {
                    result.handle(new Either.Right<String, JsonObject>(new JsonObject()));
                }
            } else {
                result.handle(
                        new Either.Left<String, JsonObject>(r.body().getString("message", "update.error")));
            }
        }
    });
}

From source file:org.entcore.directory.services.impl.UserbookRepositoryEvents.java

License:Open Source License

@Override
public void deleteUsers(JsonArray users) {
    String query = "MATCH (u:UserBook)-[r]-(n) " + "WHERE (n:Hobby OR n:UserBook) AND NOT(u<--(:User)) "
            + "DETACH DELETE u, r, n";
    StatementsBuilder b = new StatementsBuilder().add(query);
    query = "MATCH (p:UserAppConf) " + "WHERE NOT(p<--(:User)) " + "DETACH DELETE p";
    b.add(query);//from w  ww.jav  a  2 s.  c om
    b.add("MATCH (sb:ShareBookmark) WHERE NOT(sb<--(:User)) DELETE sb");
    Neo4j.getInstance().executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            if (!"ok".equals(event.body().getString("status"))) {
                log.error("Error deleting userbook data : " + event.body().encode());
            }
        }
    });
    List<String> userIds = users.stream().filter(u -> u instanceof JsonObject)
            .map(u -> ((JsonObject) u).getString("id")).collect(Collectors.toList());
    userBookService.cleanAvatarCache(userIds, res -> {
        if (!res) {
            log.error("Error cleaning avatars for ids : " + StringUtils.join(userIds, " "));
        }
    });
}

From source file:org.entcore.feeder.aaf.AafFeeder.java

License:Open Source License

@Override
public void launch(final Importer importer, final Handler<Message<JsonObject>> handler) throws Exception {
    vertx.fileSystem().readFile(path + File.separator + IMPORT_DIRECTORIES_JSON,
            new Handler<AsyncResult<Buffer>>() {
                @Override/*from  ww  w . j  a v a  2s  .  c  o m*/
                public void handle(AsyncResult<Buffer> f) {
                    if (f.succeeded()) {
                        final JsonArray importSubDirectories;
                        try {
                            importSubDirectories = new fr.wseduc.webutils.collections.JsonArray(
                                    f.result().toString());
                        } catch (RuntimeException e) {
                            handler.handle(new ResultMessage().error("invalid.importDirectories.file"));
                            log.error("Invalid importDirectories file.", e);
                            return;
                        }
                        vertx.fileSystem().readDir(path, new Handler<AsyncResult<List<String>>>() {
                            @Override
                            public void handle(AsyncResult<List<String>> event) {
                                if (event.succeeded()) {
                                    final List<String> importsDirs = new ArrayList<>();
                                    for (String dir : event.result()) {
                                        final int idx = dir.lastIndexOf(File.separator);
                                        if (idx >= 0 && dir.length() > idx
                                                && importSubDirectories.contains(dir.substring(idx + 1))) {
                                            importsDirs.add(dir);
                                        }
                                    }
                                    if (importsDirs.size() < 1) {
                                        handler.handle(new ResultMessage().error("missing.subdirectories"));
                                        return;
                                    }
                                    final Handler<Message<JsonObject>>[] handlers = new Handler[importsDirs
                                            .size()];
                                    handlers[handlers.length - 1] = new Handler<Message<JsonObject>>() {
                                        @Override
                                        public void handle(Message<JsonObject> m) {
                                            handler.handle(m);
                                        }
                                    };
                                    for (int i = importsDirs.size() - 2; i >= 0; i--) {
                                        final int j = i + 1;
                                        handlers[i] = new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> m) {
                                                if (m != null && "ok".equals(m.body().getString("status"))) {
                                                    new StructureImportProcessing(importsDirs.get(j), vertx)
                                                            .start(handlers[j]);
                                                } else {
                                                    handler.handle(m);
                                                }
                                            }
                                        };
                                    }
                                    new StructureImportProcessing(importsDirs.get(0), vertx).start(handlers[0]);
                                } else {
                                    handler.handle(new ResultMessage().error(event.cause().getMessage()));
                                }
                            }
                        });
                    } else {
                        new StructureImportProcessing(path, vertx).start(handler);
                    }
                }
            });
}

From source file:org.entcore.feeder.aaf.BaseImportProcessing.java

License:Open Source License

protected void parse(final Handler<Message<JsonObject>> handler, final ImportProcessing importProcessing) {
    initAcademyPrefix(path);/*  ww w. j av a 2  s .c  om*/
    final List<String> files = vertx.fileSystem().readDirBlocking(path, getFileRegex());
    final Handler[] handlers = new Handler[files.size() + 1];
    handlers[handlers.length - 1] = new Handler<Void>() {
        @Override
        public void handle(Void v) {
            next(handler, importProcessing);
        }
    };
    Collections.sort(files);
    for (int i = files.size() - 1; i >= 0; i--) {
        final int j = i;
        handlers[i] = new Handler<Void>() {
            @Override
            public void handle(Void v) {
                try {
                    String file = files.get(j);
                    log.info("Parsing file : " + file);
                    importer.getReport().loadedFile(file);
                    byte[] encoded = Files.readAllBytes(Paths.get(file));
                    String content = UNESCAPE_AAF.translate(new String(encoded, "UTF-8"));
                    InputSource in = new InputSource(new StringReader(content));
                    AAFHandler sh = new AAFHandler(BaseImportProcessing.this);
                    XMLReader xr = XMLReaderFactory.createXMLReader();
                    xr.setContentHandler(sh);
                    xr.setEntityResolver(new EntityResolver2() {
                        @Override
                        public InputSource getExternalSubset(String name, String baseURI)
                                throws SAXException, IOException {
                            return null;
                        }

                        @Override
                        public InputSource resolveEntity(String name, String publicId, String baseURI,
                                String systemId) throws SAXException, IOException {
                            return resolveEntity(publicId, systemId);
                        }

                        @Override
                        public InputSource resolveEntity(String publicId, String systemId)
                                throws SAXException, IOException {
                            if (systemId.equals("ficAlimMENESR.dtd")) {
                                Reader reader = new FileReader(path + File.separator + "ficAlimMENESR.dtd");
                                return new InputSource(reader);
                            } else {
                                return null;
                            }
                        }
                    });
                    xr.parse(in);
                    importer.persist(new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> message) {
                            if ("ok".equals(message.body().getString("status"))) {
                                handlers[j + 1].handle(null);
                            } else {
                                error(message, handler);
                            }
                        }
                    });
                } catch (Exception e) {
                    error(e, handler);
                } catch (OutOfMemoryError err) { // badly catch Error to unlock importer
                    log.error("OOM reading import files", err);
                    error(new Exception("OOM"), handler);
                }
            }
        };
    }
    handlers[0].handle(null);
}