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.blog.services.impl.DefaultBlogTimelineService.java

License:Open Source License

private void findRecipiants(String collection, QueryBuilder query, JsonObject keys, final JsonArray fetch,
        final String filterRights, final UserInfos user, final Handler<Map<String, Object>> handler) {
    mongo.findOne(collection, MongoQueryBuilder.build(query), keys, fetch, new Handler<Message<JsonObject>>() {
        @Override//  w w w .  j  ava2 s. c o  m
        public void handle(Message<JsonObject> event) {
            if ("ok".equals(event.body().getString("status"))) {
                final JsonObject blog = event.body().getJsonObject("result", new JsonObject());
                JsonArray shared;
                if (fetch == null) {
                    shared = blog.getJsonArray("shared");
                } else {
                    shared = blog.getJsonObject("blog", new JsonObject()).getJsonArray("shared");
                }
                if (shared != null) {
                    shared.add(blog.getJsonObject("blog", new JsonObject()).getJsonObject("author")); //Allows owner to get notified for contributors posts
                    List<String> shareIds = getSharedIds(shared, filterRights);
                    if (!shareIds.isEmpty()) {
                        Map<String, Object> params = new HashMap<>();
                        params.put("userId", user.getUserId());
                        neo.send(neoQuery(shareIds), params, new Handler<Message<JsonObject>>() {
                            @Override
                            public void handle(Message<JsonObject> res) {
                                if ("ok".equals(res.body().getString("status"))) {
                                    JsonObject r = res.body().getJsonObject("result");
                                    List<String> recipients = new ArrayList<>();
                                    for (String attr : r.fieldNames()) {
                                        String id = r.getJsonObject(attr).getString("id");
                                        if (id != null) {
                                            recipients.add(id);
                                        }
                                    }
                                    Map<String, Object> t = new HashMap<>();
                                    t.put("recipients", recipients);
                                    t.put("blog", blog);
                                    handler.handle(t);
                                } else {
                                    handler.handle(null);
                                }
                            }
                        });
                    } else {
                        handler.handle(null);
                    }
                } else {
                    handler.handle(null);
                }
            } else {
                handler.handle(null);
            }
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void list(String blogId, final UserInfos user, final Integer page, final int limit, final String search,
        final Set<String> states, final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder accessQuery;
    if (states == null || states.isEmpty()) {
        accessQuery = QueryBuilder.start("blog.$id").is(blogId);
    } else {/* w w w.  jav a2  s.  c  om*/
        accessQuery = QueryBuilder.start("blog.$id").is(blogId).put("state").in(states);
    }

    final QueryBuilder isManagerQuery = getDefautQueryBuilderForList(blogId, user, true);
    final JsonObject sort = new JsonObject().put("modified", -1);
    final JsonObject projection = defaultKeys.copy();
    projection.remove("content");

    final Handler<Message<JsonObject>> finalHandler = new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            result.handle(Utils.validResults(event));
        }
    };

    mongo.count("blogs", MongoQueryBuilder.build(isManagerQuery), new Handler<Message<JsonObject>>() {
        public void handle(Message<JsonObject> event) {
            JsonObject res = event.body();
            if (res == null || !"ok".equals(res.getString("status"))) {
                result.handle(new Either.Left<String, JsonArray>(event.body().encodePrettily()));
                return;
            }
            boolean isManager = 1 == res.getInteger("count", 0);

            accessQuery.or(QueryBuilder.start("state").is(StateType.PUBLISHED.name()).get(),
                    QueryBuilder.start()
                            .and(QueryBuilder.start("author.userId").is(user.getUserId()).get(),
                                    QueryBuilder.start("state").is(StateType.DRAFT.name()).get())
                            .get(),
                    isManager ? QueryBuilder.start("state").is(StateType.SUBMITTED.name()).get()
                            : QueryBuilder.start()
                                    .and(QueryBuilder.start("author.userId").is(user.getUserId()).get(),
                                            QueryBuilder.start("state").is(StateType.SUBMITTED.name()).get())
                                    .get());

            final QueryBuilder query = getQueryListBuilder(search, result, accessQuery);

            if (query != null) {
                if (limit > 0 && page == null) {
                    mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sort, projection, 0, limit,
                            limit, finalHandler);
                } else if (page == null) {
                    mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sort, projection, finalHandler);
                } else {
                    final JsonObject sortPag = new JsonObject().put("sorted", -1);
                    final int skip = (0 == page) ? -1 : page * limit;
                    mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sortPag, projection, skip,
                            limit, limit, finalHandler);
                }
            }
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void counter(final String blogId, final UserInfos user,
        final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder query = QueryBuilder.start("blog.$id").is(blogId);
    final QueryBuilder isManagerQuery = getDefautQueryBuilderForList(blogId, user, true);
    final JsonObject projection = new JsonObject();
    projection.put("state", 1);
    projection.put("_id", -1);

    final Handler<Message<JsonObject>> finalHandler = new Handler<Message<JsonObject>>() {
        @Override/*ww  w  .jav a  2s .  c om*/
        public void handle(Message<JsonObject> event) {
            result.handle(Utils.validResults(event));
        }
    };

    mongo.count("blogs", MongoQueryBuilder.build(isManagerQuery), new Handler<Message<JsonObject>>() {
        public void handle(Message<JsonObject> event) {
            JsonObject res = event.body();
            if (res == null || !"ok".equals(res.getString("status"))) {
                result.handle(new Either.Left<String, JsonArray>(event.body().encodePrettily()));
                return;
            }
            boolean isManager = 1 == res.getInteger("count", 0);

            query.or(QueryBuilder.start("state").is(StateType.PUBLISHED.name()).get(),
                    QueryBuilder.start()
                            .and(QueryBuilder.start("author.userId").is(user.getUserId()).get(),
                                    QueryBuilder.start("state").is(StateType.DRAFT.name()).get())
                            .get(),
                    isManager ? QueryBuilder.start("state").is(StateType.SUBMITTED.name()).get()
                            : QueryBuilder.start()
                                    .and(QueryBuilder.start("author.userId").is(user.getUserId()).get(),
                                            QueryBuilder.start("state").is(StateType.SUBMITTED.name()).get())
                                    .get());
            mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), null, projection, finalHandler);
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void list(String blogId, final StateType state, final UserInfos user, final Integer page,
        final int limit, final String search, final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder accessQuery = QueryBuilder.start("blog.$id").is(blogId).put("state").is(state.name());
    final JsonObject sort = new JsonObject().put("modified", -1);
    final JsonObject projection = defaultKeys.copy();
    projection.remove("content");

    final Handler<Message<JsonObject>> finalHandler = new Handler<Message<JsonObject>>() {
        @Override/* w  ww .j  a v  a 2s.  c  o m*/
        public void handle(Message<JsonObject> event) {
            result.handle(Utils.validResults(event));
        }
    };

    final QueryBuilder query = getQueryListBuilder(search, result, accessQuery);

    if (query != null) {

        if (StateType.PUBLISHED.equals(state)) {
            if (limit > 0 && page == null) {
                mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sort, projection, 0, limit, limit,
                        finalHandler);
            } else if (page == null) {
                mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sort, projection, finalHandler);
            } else {
                final int skip = (0 == page) ? -1 : page * limit;
                final JsonObject sortPag = new JsonObject().put("sorted", -1);
                mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sortPag, projection, skip, limit,
                        limit, finalHandler);
            }
        } else {
            QueryBuilder query2 = getDefautQueryBuilderForList(blogId, user, true);
            mongo.count("blogs", MongoQueryBuilder.build(query2), new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    JsonObject res = event.body();

                    if ((res != null && "ok".equals(res.getString("status")) && 1 != res.getInteger("count"))
                            || StateType.DRAFT.equals(state)) {
                        accessQuery.put("author.userId").is(user.getUserId());
                    }

                    final QueryBuilder listQuery = getQueryListBuilder(search, result, accessQuery);
                    if (limit > 0 && page == null) {
                        mongo.find(POST_COLLECTION, MongoQueryBuilder.build(listQuery), sort, projection, 0,
                                limit, limit, finalHandler);
                    } else if (page == null) {
                        mongo.find(POST_COLLECTION, MongoQueryBuilder.build(listQuery), sort, projection,
                                finalHandler);
                    } else {
                        final JsonObject sortPag = new JsonObject().put("sorted", -1);
                        final int skip = (0 == page) ? -1 : page * limit;
                        mongo.find(POST_COLLECTION, MongoQueryBuilder.build(listQuery), sortPag, projection,
                                skip, limit, limit, finalHandler);
                    }
                }
            });
        }
    }
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void listOne(String blogId, String postId, final UserInfos user,
        final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder query = QueryBuilder.start("blog.$id").is(blogId).put("_id").is(postId);
    final QueryBuilder isManagerQuery = getDefautQueryBuilderForList(blogId, user, true);
    final JsonObject sort = new JsonObject().put("modified", -1);
    final JsonObject projection = defaultKeys.copy();
    projection.remove("content");

    final Handler<Message<JsonObject>> finalHandler = new Handler<Message<JsonObject>>() {
        @Override//from w  w  w. ja v a  2s  . c o m
        public void handle(Message<JsonObject> event) {
            result.handle(Utils.validResults(event));
        }
    };

    mongo.count("blogs", MongoQueryBuilder.build(isManagerQuery), new Handler<Message<JsonObject>>() {
        public void handle(Message<JsonObject> event) {
            JsonObject res = event.body();
            if (res == null || !"ok".equals(res.getString("status"))) {
                result.handle(new Either.Left<String, JsonArray>(event.body().encodePrettily()));
                return;
            }
            boolean isManager = 1 == res.getInteger("count", 0);

            query.or(QueryBuilder.start("state").is(StateType.PUBLISHED.name()).get(),
                    QueryBuilder.start()
                            .and(QueryBuilder.start("author.userId").is(user.getUserId()).get(),
                                    QueryBuilder.start("state").is(StateType.DRAFT.name()).get())
                            .get(),
                    isManager ? QueryBuilder.start("state").is(StateType.SUBMITTED.name()).get()
                            : QueryBuilder.start()
                                    .and(QueryBuilder.start("author.userId").is(user.getUserId()).get(),
                                            QueryBuilder.start("state").is(StateType.SUBMITTED.name()).get())
                                    .get());
            mongo.find(POST_COLLECTION, MongoQueryBuilder.build(query), sort, projection, finalHandler);
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void submit(String blogId, String postId, UserInfos user,
        final Handler<Either<String, JsonObject>> result) {
    QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId).put("state")
            .is(StateType.DRAFT.name()).put("author.userId").is(user.getUserId());
    final JsonObject q = MongoQueryBuilder.build(query);
    JsonObject keys = new JsonObject().put("blog", 1).put("firstPublishDate", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, q, keys, fetch, new Handler<Message<JsonObject>>() {
        @Override//  w  w  w  .  j  av a  2s  .  c  o  m
        public void handle(Message<JsonObject> event) {
            final JsonObject res = event.body().getJsonObject("result", new JsonObject());
            if ("ok".equals(event.body().getString("status")) && res.size() > 0) {
                BlogService.PublishType type = Utils.stringToEnum(
                        res.getJsonObject("blog", new JsonObject()).getString("publish-type"),
                        BlogService.PublishType.RESTRAINT, BlogService.PublishType.class);
                final StateType state = (BlogService.PublishType.RESTRAINT.equals(type)) ? StateType.SUBMITTED
                        : StateType.PUBLISHED;
                MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().set("state", state.name());

                // if IMMEDIATE published post, first publishing must define the first published date
                if (StateType.PUBLISHED.equals(state) && res.getJsonObject("firstPublishDate") == null) {
                    updateQuery = updateQuery.set("firstPublishDate", MongoDb.now()).set("sorted",
                            MongoDb.now());
                }

                mongo.update(POST_COLLECTION, q, updateQuery.build(), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        res.body().put("state", state.name());
                        result.handle(Utils.validResult(res));
                    }
                });
            } else {
                result.handle(Utils.validResult(event));
            }
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void addComment(String blogId, String postId, final String comment, final UserInfos author,
        final Handler<Either<String, JsonObject>> result) {
    if (comment == null || comment.trim().isEmpty()) {
        result.handle(new Either.Left<String, JsonObject>("Validation error : invalid comment."));
        return;/*from   w w  w . j a va2  s.  com*/
    }
    QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId);
    final JsonObject q = MongoQueryBuilder.build(query);
    JsonObject keys = new JsonObject().put("blog", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, q, keys, fetch, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            if ("ok".equals(event.body().getString("status"))
                    && event.body().getJsonObject("result", new JsonObject()).size() > 0) {
                BlogService.CommentType type = Utils.stringToEnum(
                        event.body().getJsonObject("result").getJsonObject("blog", new JsonObject())
                                .getString("comment-type"),
                        BlogService.CommentType.RESTRAINT, BlogService.CommentType.class);
                if (BlogService.CommentType.NONE.equals(type)) {
                    result.handle(new Either.Left<String, JsonObject>("Comments are disabled for this blog."));
                    return;
                }
                StateType s = BlogService.CommentType.IMMEDIATE.equals(type) ? StateType.PUBLISHED
                        : StateType.SUBMITTED;
                JsonObject user = new JsonObject().put("userId", author.getUserId())
                        .put("username", author.getUsername()).put("login", author.getLogin());
                JsonObject c = new JsonObject().put("comment", comment).put("id", UUID.randomUUID().toString())
                        .put("state", s.name()).put("author", user).put("created", MongoDb.now());
                MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().push("comments", c);
                mongo.update(POST_COLLECTION, q, updateQuery.build(), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        result.handle(Utils.validResult(res));
                    }
                });
            } else {
                result.handle(Utils.validResult(event));
            }
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void deleteComment(final String blogId, final String commentId, final UserInfos user,
        final Handler<Either<String, JsonObject>> result) {
    QueryBuilder query2 = getDefautQueryBuilderForList(blogId, user, false);
    mongo.count("blogs", MongoQueryBuilder.build(query2), new Handler<Message<JsonObject>>() {
        @Override/*  w w w  . ja v a  2 s. co m*/
        public void handle(Message<JsonObject> event) {
            JsonObject res = event.body();
            QueryBuilder tmp = QueryBuilder.start("id").is(commentId);
            if (res != null && "ok".equals(res.getString("status")) && 1 != res.getInteger("count")) {
                tmp.put("author.userId").is(user.getUserId());
            }
            QueryBuilder query = QueryBuilder.start("blog.$id").is(blogId).put("comments").elemMatch(tmp.get());
            JsonObject c = new JsonObject().put("id", commentId);
            MongoUpdateBuilder queryUpdate = new MongoUpdateBuilder().pull("comments", c);
            mongo.update(POST_COLLECTION, MongoQueryBuilder.build(query), queryUpdate.build(),
                    new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> res) {
                            result.handle(Utils.validResult(res));
                        }
                    });
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void listComment(String blogId, String postId, final UserInfos user,
        final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId);
    JsonObject keys = new JsonObject().put("comments", 1).put("blog", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, MongoQueryBuilder.build(query), keys, fetch,
            new Handler<Message<JsonObject>>() {
                @Override//from  w w w . j  a  va  2s  . co  m
                public void handle(Message<JsonObject> event) {
                    JsonArray comments = new JsonArray();
                    if ("ok".equals(event.body().getString("status"))
                            && event.body().getJsonObject("result", new JsonObject()).size() > 0) {
                        JsonObject res = event.body().getJsonObject("result");
                        boolean userIsManager = userIsManager(user, res.getJsonObject("blog"));
                        for (Object o : res.getJsonArray("comments", new JsonArray())) {
                            if (!(o instanceof JsonObject))
                                continue;
                            JsonObject j = (JsonObject) o;
                            if (userIsManager || StateType.PUBLISHED.name().equals(j.getString("state"))
                                    || user.getUserId().equals(
                                            j.getJsonObject("author", new JsonObject()).getString("userId"))) {
                                comments.add(j);
                            }
                        }
                    }
                    result.handle(new Either.Right<String, JsonArray>(comments));
                }
            });
}

From source file:org.entcore.cas.controllers.ConfigurationController.java

License:Open Source License

public void loadPatterns() {
    eb.send("wse.app.registry.bus", new JsonObject().put("action", "list-cas-connectors"),
            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                @Override/*from   w w w . j ava2  s. c  o  m*/
                public void handle(Message<JsonObject> event) {
                    if ("ok".equals(event.body().getString("status"))) {
                        services.cleanPatterns();
                        JsonArray externalApps = event.body().getJsonArray("result");
                        for (Object o : externalApps) {
                            if (!(o instanceof JsonObject))
                                continue;
                            JsonObject j = (JsonObject) o;
                            String service = j.getString("service");
                            JsonArray patterns = j.getJsonArray("patterns");
                            if (service != null && !service.trim().isEmpty() && patterns != null
                                    && patterns.size() > 0) {
                                services.addPatterns(service, Arrays.copyOf(patterns.getList().toArray(),
                                        patterns.size(), String[].class));
                            }
                        }
                    } else {
                        log.error(event.body().getString("message"));
                    }
                }
            }));
}