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:de.openflorian.alarm.transform.BinaryAlarmFaxTransformator.java

License:Open Source License

@Override
public void transform(Message<Object> msg) {
    log.debug("Start transforming an alarm fax TIF file...");

    Process ps = null;//from w w w . j  ava  2s  . co  m
    try {
        AlarmFaxEvent event = (AlarmFaxEvent) msg.body();

        Runtime rt = Runtime.getRuntime();

        String resultTextFile = String.format("%s/%s", faxObervationDirectory, event.getResultFile().getName());

        String cmd = "";
        cmd = transformationCmd.replaceAll(transformationCmdVarInput,
                event.getResultFile().getAbsolutePath().replace("\\", "/"));
        cmd = cmd.replaceAll(transformationCmdVarOutput, resultTextFile);

        log.debug("Running cmd: " + cmd);

        ps = rt.exec(cmd);

        int exitCode = ps.waitFor();
        if (exitCode == 0) {
            log.debug(String.format("Successful transformed '%s' to '%s'. Exit code: %d",
                    event.getResultFile().getAbsolutePath(), resultTextFile, exitCode));

            vertx.eventBus().send(EventBusAddresses.ARCHIVE_FILE, event.getResultFile().getAbsolutePath());

            vertx.eventBus().send(EventBusAddresses.ALARMFAX_TRANSFORMED,
                    new AlarmFaxEvent(new File(resultTextFile + ".txt")));
        } else {
            log.error(String.format("An error occured transforming '%s'. Exit code: %d",
                    event.getResultFile().getAbsolutePath(), exitCode));
            String errorMsg = new BufferedReader(new InputStreamReader(ps.getErrorStream())).lines()
                    .collect(Collectors.joining(System.getProperty("line.separator")));
            log.error(errorMsg);
        }
        ps.destroy();
    } catch (IOException e) {
        log.error(e.getMessage(), e);
    } catch (InterruptedException e) {
        log.error(e.getMessage(), e);
    } finally {
        if (ps != null)
            ps.destroy();
    }
}

From source file:eventbusbridge.Main.java

License:Apache License

static void pingPong(final Message<JsonObject> m) {
    final int counter = m.body().getInteger("counter");
    System.out.println("ping-pong: count is " + counter);
    final JsonObject reply = new JsonObject();
    reply.put("counter", counter + 1);
    m.reply(reply, pingPongReply);/*www . j  ava2  s . co m*/
}

From source file:fr.pjthin.vertx.client.UserDaoVertxProxyHandler.java

License:Apache License

public void handle(Message<JsonObject> msg) {
    try {//  w w w . j ava  2  s.c om
        JsonObject json = msg.body();
        String action = msg.headers().get("action");
        if (action == null) {
            throw new IllegalStateException("action not specified");
        }
        accessed();
        switch (action) {

        case "save": {
            service.save(
                    json.getJsonObject("newUser") == null ? null
                            : new fr.pjthin.vertx.client.data.User(json.getJsonObject("newUser")),
                    createHandler(msg));
            break;
        }
        case "findAll": {
            service.findAll(res -> {
                if (res.failed()) {
                    msg.fail(-1, res.cause().getMessage());
                } else {
                    msg.reply(new JsonArray(
                            res.result().stream().map(User::toJson).collect(Collectors.toList())));
                }
            });
            break;
        }
        case "findUserByLogin": {
            service.findUserByLogin((java.lang.String) json.getValue("login"), res -> {
                if (res.failed()) {
                    msg.fail(-1, res.cause().getMessage());
                } else {
                    msg.reply(res.result() == null ? null : res.result().toJson());
                }
            });
            break;
        }
        case "deleteByLogin": {
            service.deleteByLogin((java.lang.String) json.getValue("login"), createHandler(msg));
            break;
        }
        case "close": {
            service.close();
            close();
            break;
        }
        default: {
            throw new IllegalStateException("Invalid action: " + action);
        }
        }
    } catch (Throwable t) {
        msg.fail(-1, t.getMessage());
        throw t;
    }
}

From source file:fr.wseduc.pages.controllers.PagesController.java

License:Open Source License

@BusAddress("pages")
public void busApi(Message<JsonObject> message) {
    String action = message.body().getString("action", "");
    final String pageId = message.body().getString("pageId");
    switch (action) {
    case "create":
        UserInfos user = UserUtils.sessionToUserInfos(message.body().getJsonObject("user"));
        JsonObject page = message.body().getJsonObject("page");
        crudService.create(page, user, busResponseHandler(message));
        break;/*from   w ww.  jav a2s. c o  m*/
    case "share":
        String userId = message.body().getString("userId");
        String groupId = message.body().getString("groupId");
        List<String> actions = message.body().getJsonArray("actions").getList();
        shareService.groupShare(userId, groupId, pageId, actions, busResponseHandler(message));
        break;
    case "delete":
        crudService.delete(pageId, busResponseHandler(message));
        break;
    case "get":
        crudService.retrieve(pageId, busResponseHandler(message));
        break;
    case "update":
        crudService.update(pageId, message.body().getJsonObject("page"), busResponseHandler(message));
        break;
    default:
        message.reply(new JsonObject().put("status", "error").put("message", "invalid.action"));
    }
}

From source file:fr.wseduc.rack.controllers.RackController.java

License:Open Source License

/**
 * Post a new document to other people's rack folder.
 * @param request Client request containing a list of user ids belonging to the receivers and the file.
 *///from  w  ww. java2 s  . co  m
@Post("")
@SecuredAction(send)
public void postRack(final HttpServerRequest request) {
    UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {
        @Override
        public void handle(final UserInfos userInfos) {

            if (userInfos == null) {
                badRequest(request);
                return;
            }

            request.setExpectMultipart(true);
            final Buffer fileBuffer = Buffer.buffer();
            final JsonObject metadata = new JsonObject();

            /* Upload file */
            request.uploadHandler(getUploadHandler(fileBuffer, metadata, request));

            /* After upload */
            request.endHandler(new Handler<Void>() {
                @Override
                public void handle(Void v) {
                    String users = request.formAttributes().get("users");
                    if (users == null) {
                        badRequest(request);
                        return;
                    }

                    String[] userIds = users.split(",");

                    final AtomicInteger countdown = new AtomicInteger(userIds.length);
                    final AtomicInteger success = new AtomicInteger(0);
                    final AtomicInteger failure = new AtomicInteger(0);

                    /* Final handler - called after each attempt */
                    final Handler<Boolean> finalHandler = new Handler<Boolean>() {
                        @Override
                        public void handle(Boolean event) {
                            if (event == null || !event)
                                failure.addAndGet(1);
                            else
                                success.addAndGet(1);
                            if (countdown.decrementAndGet() == 0) {
                                JsonObject result = new JsonObject();
                                result.put("success", success.get());
                                result.put("failure", failure.get());
                                renderJson(request, result);
                            }
                        }
                    };

                    for (final String to : userIds) {
                        /* Query user and check existence */
                        String query = "MATCH (n:User) " + "WHERE n.id = {id} "
                                + "RETURN count(n) as nb, n.displayName as username";
                        Map<String, Object> params = new HashMap<>();
                        params.put("id", to);

                        Handler<Message<JsonObject>> existenceHandler = new Handler<Message<JsonObject>>() {
                            @Override
                            public void handle(Message<JsonObject> res) {
                                JsonArray result = res.body().getJsonArray("result");

                                if (!"ok".equals(res.body().getString("status")) || 1 != result.size()
                                        || 1 != result.getJsonObject(0).getInteger("nb")) {
                                    finalHandler.handle(false);
                                    return;
                                }

                                /* Pre write rack document fields */
                                final JsonObject doc = new JsonObject();
                                doc.put("to", to);
                                doc.put("toName", result.getJsonObject(0).getString("username"));
                                doc.put("from", userInfos.getUserId());
                                doc.put("fromName", userInfos.getUsername());
                                String now = dateFormat.format(new Date());
                                doc.put("sent", now);

                                /* Rack collection saving */
                                final Handler<JsonObject> rackSaveHandler = new Handler<JsonObject>() {
                                    @Override
                                    public void handle(JsonObject uploaded) {
                                        if (uploaded == null || !"ok".equals(uploaded.getString("status"))) {
                                            finalHandler.handle(false);
                                        } else {
                                            addAfterUpload(uploaded.put("metadata", metadata), doc,
                                                    request.params().get("name"),
                                                    request.params().get("application"),
                                                    request.params().getAll("thumbnail"),
                                                    new Handler<Message<JsonObject>>() {
                                                        @Override
                                                        public void handle(Message<JsonObject> res) {
                                                            if ("ok".equals(res.body().getString("status"))) {
                                                                JsonObject params = new JsonObject()
                                                                        .put("uri",
                                                                                "/userbook/annuaire#"
                                                                                        + doc.getString("from"))
                                                                        .put("resourceUri", pathPrefix)
                                                                        .put("username",
                                                                                doc.getString("fromName"))
                                                                        .put("documentName",
                                                                                doc.getString("name"));
                                                                List<String> receivers = new ArrayList<>();
                                                                receivers.add(doc.getString("to"));

                                                                JsonObject pushNotif = new JsonObject()
                                                                        .put("title",
                                                                                "rack.push.notif.rack-post")
                                                                        .put("body",
                                                                                I18n.getInstance().translate(
                                                                                        "rack.push.notif.rack-post.body",
                                                                                        getHost(request),
                                                                                        I18n.acceptLanguage(
                                                                                                request),
                                                                                        doc.getString(
                                                                                                "fromName"),
                                                                                        doc.getString("name")));
                                                                params.put("pushNotif", pushNotif);

                                                                timelineHelper.notifyTimeline(request,
                                                                        "rack.rack-post", userInfos, receivers,
                                                                        userInfos.getUserId()
                                                                                + System.currentTimeMillis()
                                                                                + "postrack",
                                                                        null, params, true);
                                                                finalHandler.handle(true);
                                                            } else {
                                                                finalHandler.handle(false);
                                                            }
                                                        }
                                                    });
                                        }
                                    }
                                };

                                /* Get user quota & check */
                                getUserQuota(to, new Handler<JsonObject>() {
                                    @Override
                                    public void handle(JsonObject j) {
                                        if (j == null || "error".equals(j.getString("status"))) {
                                            finalHandler.handle(false);
                                            return;
                                        }

                                        long emptySize = 0l;
                                        long quota = j.getLong("quota", 0l);
                                        long storage = j.getLong("storage", 0l);
                                        emptySize = quota - storage;
                                        if (emptySize < metadata.getLong("size", 0l)) {
                                            finalHandler.handle(false);
                                            return;
                                        }
                                        //Save file
                                        RackController.this.storage.writeBuffer(fileBuffer,
                                                metadata.getString("content-type"), metadata.getString("name"),
                                                rackSaveHandler);
                                    }
                                });

                            }
                        };
                        Neo4j.getInstance().execute(query, params, existenceHandler);
                    }
                }
            });
        }
    });
}

From source file:fr.wseduc.rack.controllers.RackController.java

License:Open Source License

private void copyFiles(final HttpServerRequest request, final JsonArray idsArray, final String folder,
        final UserInfos user, final String destinationCollection) {

    String criteria = "{ \"_id\" : { \"$in\" : " + idsArray.encode() + "}";
    criteria += ", \"to\" : \"" + user.getUserId() + "\" }";

    mongo.find(collection, new JsonObject(criteria), new Handler<Message<JsonObject>>() {

        private void persist(final JsonArray insert, int remains) {
            if (remains == 0) {
                mongo.insert(destinationCollection, insert, new Handler<Message<JsonObject>>() {
                    @Override// ww  w  .ja  v  a 2 s.c o m
                    public void handle(Message<JsonObject> inserted) {
                        if ("ok".equals(inserted.body().getString("status"))) {
                            /* Increment quota */
                            long totalSize = 0l;
                            for (Object insertion : insert) {
                                JsonObject added = (JsonObject) insertion;
                                totalSize += added.getJsonObject("metadata", new JsonObject()).getLong("size",
                                        0l);
                            }
                            updateUserQuota(user.getUserId(), totalSize);
                            renderJson(request, inserted.body());
                        } else {
                            renderError(request, inserted.body());
                        }
                    }
                });
            }
        }

        @Override
        public void handle(Message<JsonObject> r) {
            JsonObject src = r.body();
            if ("ok".equals(src.getString("status")) && src.getJsonArray("results") != null) {
                final JsonArray origs = src.getJsonArray("results");
                final JsonArray insert = new JsonArray();
                final AtomicInteger number = new AtomicInteger(origs.size());

                emptySize(user, new Handler<Long>() {

                    @Override
                    public void handle(Long emptySize) {
                        long size = 0;

                        /* Get total file size */
                        for (Object o : origs) {
                            if (!(o instanceof JsonObject))
                                continue;
                            JsonObject metadata = ((JsonObject) o).getJsonObject("metadata");
                            if (metadata != null) {
                                size += metadata.getLong("size", 0l);
                            }
                        }
                        /* If total file size is too big (> quota left) */
                        if (size > emptySize) {
                            badRequest(request, "files.too.large");
                            return;
                        }

                        /* Process */
                        for (Object o : origs) {
                            JsonObject orig = (JsonObject) o;
                            final JsonObject dest = orig.copy();
                            String now = MongoDb.formatDate(new Date());
                            dest.remove("_id");
                            dest.remove("protected");
                            dest.remove("comments");
                            dest.put("application", WORKSPACE_NAME);

                            dest.put("owner", user.getUserId());
                            dest.put("ownerName", dest.getString("toName"));
                            dest.remove("to");
                            dest.remove("from");
                            dest.remove("toName");
                            dest.remove("fromName");

                            dest.put("created", now);
                            dest.put("modified", now);
                            if (folder != null && !folder.trim().isEmpty()) {
                                dest.put("folder", folder);
                            } else {
                                dest.remove("folder");
                            }
                            insert.add(dest);
                            final String filePath = orig.getString("file");

                            if (folder != null && !folder.trim().isEmpty()) {

                                //If the document has a new parent folder, replicate sharing rights
                                String parentName, parentFolder;
                                if (folder.lastIndexOf('_') < 0) {
                                    parentName = folder;
                                    parentFolder = folder;
                                } else if (filePath != null) {
                                    String[] splittedPath = folder.split("_");
                                    parentName = splittedPath[splittedPath.length - 1];
                                    parentFolder = folder;
                                } else {
                                    String[] splittedPath = folder.split("_");
                                    parentName = splittedPath[splittedPath.length - 2];
                                    parentFolder = folder.substring(0, folder.lastIndexOf("_"));
                                }

                                QueryBuilder parentFolderQuery = QueryBuilder.start("owner")
                                        .is(user.getUserId()).and("folder").is(parentFolder).and("name")
                                        .is(parentName);

                                mongo.findOne(collection, MongoQueryBuilder.build(parentFolderQuery),
                                        new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> event) {
                                                if ("ok".equals(event.body().getString("status"))) {
                                                    JsonObject parent = event.body().getJsonObject("result");
                                                    if (parent != null && parent.getJsonArray("shared") != null
                                                            && parent.getJsonArray("shared").size() > 0)
                                                        dest.put("shared", parent.getJsonArray("shared"));

                                                    if (filePath != null) {
                                                        storage.copyFile(filePath, new Handler<JsonObject>() {
                                                            @Override
                                                            public void handle(JsonObject event) {
                                                                if (event != null && "ok"
                                                                        .equals(event.getString("status"))) {
                                                                    dest.put("file", event.getString("_id"));
                                                                    persist(insert, number.decrementAndGet());
                                                                }
                                                            }
                                                        });
                                                    } else {
                                                        persist(insert, number.decrementAndGet());
                                                    }
                                                } else {
                                                    renderJson(request, event.body(), 404);
                                                }
                                            }
                                        });

                            } else if (filePath != null) {
                                storage.copyFile(filePath, new Handler<JsonObject>() {

                                    @Override
                                    public void handle(JsonObject event) {
                                        if (event != null && "ok".equals(event.getString("status"))) {
                                            dest.put("file", event.getString("_id"));
                                            persist(insert, number.decrementAndGet());
                                        }
                                    }
                                });
                            } else {
                                persist(insert, number.decrementAndGet());
                            }
                        }
                    }
                });
            } else {
                notFound(request, src.toString());
            }
        }
    });

}

From source file:fr.wseduc.rack.controllers.RackController.java

License:Open Source License

private void addAfterUpload(final JsonObject uploaded, final JsonObject doc, String name, String application,
        final List<String> thumbs, final Handler<Message<JsonObject>> handler) {
    //Write additional fields in the document
    doc.put("name", getOrElse(name, uploaded.getJsonObject("metadata").getString("filename"), false));
    doc.put("metadata", uploaded.getJsonObject("metadata"));
    doc.put("file", uploaded.getString("_id"));
    doc.put("application", getOrElse(application, WORKSPACE_NAME));
    //Save document to mongo
    mongo.save(collection, doc, new Handler<Message<JsonObject>>() {
        @Override/*from  ww  w  . jav a  2  s .c  o  m*/
        public void handle(Message<JsonObject> res) {
            if ("ok".equals(res.body().getString("status"))) {
                Long size = doc.getJsonObject("metadata", new JsonObject()).getLong("size", 0l);
                updateUserQuota(doc.getString("to"), size);
                createThumbnailIfNeeded(collection, uploaded, res.body().getString("_id"), null, thumbs);
            }
            if (handler != null) {
                handler.handle(res);
            }
        }
    });
}

From source file:fr.wseduc.rack.security.RackResourcesProvider.java

License:Open Source License

private void authorizeOwner(HttpServerRequest request, UserInfos user, final Handler<Boolean> handler) {
    String id = request.params().get("id");
    String matcher = "{ \"_id\": \"" + id + "\", \"to\": \"" + user.getUserId() + "\" }";

    mongo.count(Rack.RACK_COLLECTION, new JsonObject(matcher), new Handler<Message<JsonObject>>() {
        public void handle(Message<JsonObject> result) {
            JsonObject res = result.body();
            handler.handle(res != null && "ok".equals(res.getString("status")) && res.getLong("count") == 1);
        }//ww  w  . j  a  v  a 2  s .  co  m
    });
}

From source file:fr.wseduc.smsproxy.providers.ovh.OVHSmsProvider.java

License:Apache License

@Override
public void sendSms(final Message<JsonObject> message) {
    final JsonObject parameters = message.body().getJsonObject("parameters");
    logger.debug("[OVH][sendSms] Called with parameters : " + parameters);

    final Handler<HttpClientResponse> resultHandler = new Handler<HttpClientResponse>() {
        public void handle(HttpClientResponse response) {
            if (response == null) {
                sendError(message, "ovh.apicall.error", null);
            } else {
                response.bodyHandler(new Handler<Buffer>() {
                    public void handle(Buffer body) {
                        final JsonObject response = new JsonObject(body.toString());
                        final JsonArray invalidReceivers = response.getJsonArray("invalidReceivers",
                                new JsonArray());
                        final JsonArray validReceivers = response.getJsonArray("validReceivers",
                                new JsonArray());

                        if (validReceivers.size() == 0) {
                            sendError(message, "invalid.receivers.all", null, new JsonObject(body.toString()));
                        } else if (invalidReceivers.size() > 0) {
                            sendError(message, "invalid.receivers.partial", null,
                                    new JsonObject(body.toString()));
                        } else {
                            message.reply(response);
                        }// w  w w.j a  v  a 2  s  . c om
                    }
                });
            }
        }
    };

    Handler<String> serviceCallback = new Handler<String>() {
        public void handle(String service) {
            if (service == null) {
                sendError(message, "ovh.apicall.error", null);
            } else {
                ovhRestClient.post("/sms/" + service + "/jobs/", parameters, resultHandler);
            }
        }
    };

    retrieveSmsService(message, serviceCallback);
}

From source file:fr.wseduc.smsproxy.providers.ovh.OVHSmsProvider.java

License:Apache License

@Override
public void getInfo(final Message<JsonObject> message) {
    final JsonObject parameters = message.body().getJsonObject("parameters");
    logger.debug("[OVH][getInfo] Called with parameters : " + parameters);

    retrieveSmsService(message, new Handler<String>() {
        public void handle(String service) {
            if (service == null) {
                sendError(message, "ovh.apicall.error", null);
            } else {
                ovhRestClient.get("/sms/" + service, parameters, new Handler<HttpClientResponse>() {
                    public void handle(HttpClientResponse response) {
                        if (response == null) {
                            sendError(message, "ovh.apicall.error", null);
                            return;
                        }/*  w  w w. ja v a2 s.  c  o  m*/
                        response.bodyHandler(new Handler<Buffer>() {
                            public void handle(Buffer body) {
                                final JsonObject response = new JsonObject(body.toString());
                                message.reply(response);
                            }
                        });
                    }
                });
            }
        }
    });
}