Example usage for io.vertx.core.json JsonArray encode

List of usage examples for io.vertx.core.json JsonArray encode

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray encode.

Prototype

public String encode() 

Source Link

Document

Encode the JSON array to a string

Usage

From source file:com.iot.i4.server.I4Server.java

@Override
public void start() throws Exception {
    // Create a mongo client using all defaults (connect to localhost and default port) using the database name "demo".
    JsonObject config = new JsonObject().put("connection_string", "mongodb://localhost:27017").put("db_name",
            "i4");
    mongo = MongoClient.createShared(Vertx.vertx(), config);

    // the load function just populates some data on the storage
    loadData(mongo);//from  w ww  . j  a v a2 s . com

    Router router = Router.router(Vertx.vertx());
    router.route().handler(BodyHandler.create());

    //1.findAll payloads
    router.get("/api/payloads").handler(ctx -> {
        mongo.find("payloads", new JsonObject(), lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(500);
                return;
            }

            // now convert the list to a JsonArray because it will be easier to encode the final object as the response.
            final JsonArray json = new JsonArray();
            for (JsonObject o : lookup.result()) {
                json.add(o);
            }
            ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
            ctx.response().end(json.encode());
        });
    });

    //1. findAll
    router.get("/api/users").handler(ctx -> {
        mongo.find("users", new JsonObject(), lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(500);
                return;
            }
            // now convert the list to a JsonArray because it will be easier to encode the final object as the response.
            final JsonArray json = new JsonArray();
            for (JsonObject o : lookup.result()) {
                json.add(o);
            }
            ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
            ctx.response().end(json.encode());
        });
    });

    //2.findOne
    router.get("/api/users/:id").handler(ctx -> {
        mongo.findOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), null, lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(500);
                return;
            }

            JsonObject user = lookup.result();

            if (user == null) {
                ctx.fail(404);
            } else {
                ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
                ctx.response().end(user.encode());
            }
        });
    });

    router.post("/api/users").handler(ctx -> {
        JsonObject newUser = ctx.getBodyAsJson();

        mongo.findOne("users", new JsonObject().put("username", newUser.getString("username")), null,
                lookup -> {
                    // error handling
                    if (lookup.failed()) {
                        ctx.fail(500);
                        return;
                    }

                    JsonObject user = lookup.result();

                    if (user != null) {
                        // already exists
                        ctx.fail(500);
                    } else {
                        mongo.insert("users", newUser, insert -> {
                            // error handling
                            if (insert.failed()) {
                                ctx.fail(500);
                                return;
                            }

                            // add the generated id to the user object
                            newUser.put("_id", insert.result());

                            ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
                            ctx.response().end(newUser.encode());
                        });
                    }
                });
    });

    router.put("/api/users/:id").handler(ctx -> {
        mongo.findOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), null, lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(500);
                return;
            }

            JsonObject user = lookup.result();

            if (user == null) {
                // does not exist
                ctx.fail(404);
            } else {

                // update the user properties
                JsonObject update = ctx.getBodyAsJson();

                user.put("username", update.getString("username"));
                user.put("firstName", update.getString("firstName"));
                user.put("lastName", update.getString("lastName"));
                user.put("address", update.getString("address"));

                mongo.replace("users", new JsonObject().put("_id", ctx.request().getParam("id")), user,
                        replace -> {
                            // error handling
                            if (replace.failed()) {
                                ctx.fail(500);
                                return;
                            }

                            ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
                            ctx.response().end(user.encode());
                        });
            }
        });
    });

    router.delete("/api/users/:id").handler(ctx -> {
        mongo.findOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), null, lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(500);
                return;
            }

            JsonObject user = lookup.result();

            if (user == null) {
                // does not exist
                ctx.fail(404);
            } else {

                mongo.remove("users", new JsonObject().put("_id", ctx.request().getParam("id")), remove -> {
                    // error handling
                    if (remove.failed()) {
                        ctx.fail(500);
                        return;
                    }

                    ctx.response().setStatusCode(204);
                    ctx.response().end();
                });
            }
        });
    });
    // Create a router endpoint for the static content.
    router.route().handler(StaticHandler.create());
    Vertx.vertx().createHttpServer().requestHandler(router::accept).listen(8080);
    //Vertx.vertx().createHttpServer().requestHandler(req -> req.response().end("Hello World From I4Server!")).listen(8080);
    System.out.println("Server started & listening to [8080]");
}

From source file:com.klwork.spring.vertx.render.MyStaticHandlerImpl.java

License:Open Source License

private void sendDirectoryListing(String dir, RoutingContext context) {
    FileSystem fileSystem = new WindowsFileSystem((VertxInternal) context.vertx());
    HttpServerRequest request = context.request();

    fileSystem.readDir(dir, asyncResult -> {
        if (asyncResult.failed()) {
            context.fail(asyncResult.cause());
        } else {/*from  ww  w .  j  a  v  a  2  s . c  o  m*/

            String accept = request.headers().get("accept");
            if (accept == null) {
                accept = "text/plain";
            }

            if (accept.contains("html")) {
                String normalizedDir = context.normalisedPath();
                if (!normalizedDir.endsWith("/")) {
                    normalizedDir += "/";
                }

                String file;
                StringBuilder files = new StringBuilder("<ul id=\"files\">");

                List<String> list = asyncResult.result();
                Collections.sort(list);

                for (String s : list) {
                    file = s.substring(s.lastIndexOf(File.separatorChar) + 1);
                    // skip dot files
                    if (!includeHidden && file.charAt(0) == '.') {
                        continue;
                    }
                    files.append("<li><a href=\"");
                    files.append(normalizedDir);
                    files.append(file);
                    files.append("\" title=\"");
                    files.append(file);
                    files.append("\">");
                    files.append(file);
                    files.append("</a></li>");
                }

                files.append("</ul>");

                // link to parent dir
                int slashPos = 0;
                for (int i = normalizedDir.length() - 2; i > 0; i--) {
                    if (normalizedDir.charAt(i) == '/') {
                        slashPos = i;
                        break;
                    }
                }

                String parent = "<a href=\"" + normalizedDir.substring(0, slashPos + 1) + "\">..</a>";

                request.response().putHeader("content-type", "text/html");
                request.response().end(directoryTemplate(context.vertx()).replace("{directory}", normalizedDir)
                        .replace("{parent}", parent).replace("{files}", files.toString()));
            } else if (accept.contains("json")) {
                String file;
                JsonArray json = new JsonArray();

                for (String s : asyncResult.result()) {
                    file = s.substring(s.lastIndexOf(File.separatorChar) + 1);
                    // skip dot files
                    if (!includeHidden && file.charAt(0) == '.') {
                        continue;
                    }
                    json.add(file);
                }
                request.response().putHeader("content-type", "application/json");
                request.response().end(json.encode());
            } else {
                String file;
                StringBuilder buffer = new StringBuilder();

                for (String s : asyncResult.result()) {
                    file = s.substring(s.lastIndexOf(File.separatorChar) + 1);
                    // skip dot files
                    if (!includeHidden && file.charAt(0) == '.') {
                        continue;
                    }
                    buffer.append(file);
                    buffer.append('\n');
                }

                request.response().putHeader("content-type", "text/plain");
                request.response().end(buffer.toString());
            }
        }
    });
}

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/*from   w w w .  j a  va 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:gribbit.response.JSONResponse.java

License:Open Source License

public JSONResponse(HttpResponseStatus status, JsonArray jsonArray) {
    super(status);
    this.contentStr = jsonArray.encode();
}

From source file:io.flowly.auth.ExtJwtAuthProvider.java

License:Open Source License

@Override
public void authenticate(JsonObject authInfo, Handler<AsyncResult<User>> resultHandler) {
    try {/*  ww w. j  a  v a  2 s .  c o  m*/
        final JsonObject payload = jwt.decode(authInfo.getString("jwt"));

        final JsonObject options = authInfo.getJsonObject("options", EMPTY_OBJECT);

        // All dates in JWT are of type NumericDate
        // a NumericDate is: numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until
        // the specified UTC date/time, ignoring leap seconds
        final long now = System.currentTimeMillis() / 1000;

        if (payload.containsKey("exp") && !options.getBoolean("ignoreExpiration", false)) {
            if (now >= payload.getLong("exp")) {
                resultHandler.handle(Future.failedFuture("Expired JWT token: exp <= now"));
                return;
            }
        }

        if (payload.containsKey("iat")) {
            Long iat = payload.getLong("iat");
            // issue at must be in the past
            if (iat > now) {
                resultHandler.handle(Future.failedFuture("Invalid JWT token: iat > now"));
                return;
            }
        }

        if (payload.containsKey("nbf")) {
            Long nbf = payload.getLong("nbf");
            // not before must be after now
            if (nbf > now) {
                resultHandler.handle(Future.failedFuture("Invalid JWT token: nbf > now"));
                return;
            }
        }

        if (options.containsKey("audience")) {
            JsonArray audiences = options.getJsonArray("audience", EMPTY_ARRAY);
            JsonArray target = payload.getJsonArray("aud", EMPTY_ARRAY);

            if (Collections.disjoint(audiences.getList(), target.getList())) {
                resultHandler
                        .handle(Future.failedFuture("Invalid JWT audience. expected: " + audiences.encode()));
                return;
            }
        }

        if (options.containsKey("issuer")) {
            if (!options.getString("issuer").equals(payload.getString("iss"))) {
                resultHandler.handle(Future.failedFuture("Invalid JWT issuer"));
                return;
            }
        }

        resultHandler.handle(Future.succeededFuture(new ExtJwtUser(payload, permissionsClaimKey)));

    } catch (RuntimeException e) {
        resultHandler.handle(Future.failedFuture(e));
    }
}

From source file:io.flowly.core.router.BaseRouter.java

License:Open Source License

protected void prepareSearchRoute(String path, String address, String errorMessage) {
    router.route(HttpMethod.GET, path).handler(requestHandler -> {
        try {//from w ww. j  a  va2s.c  o  m
            eventBus.<JsonArray>send(address, getSearchArgs(requestHandler), reply -> {
                JsonArray results = reply.result().body();

                if (results != null) {
                    writeSuccessResponse(requestHandler, results.encode(), true);
                } else {
                    writeErrorResponse(requestHandler, errorMessage);
                }
            });
        } catch (Exception ex) {
            logger.error(errorMessage, ex);
            writeErrorResponse(requestHandler, errorMessage);
        }
    });
}

From source file:io.flowly.webapp.FlowApiRouter.java

License:Open Source License

private void prepareGetFlowsRoute(Router api, Vertx vertx) {
    Route getFlowsRoute = api.route(HttpMethod.GET, "/flows").produces(JSON_CONTENT_TYPE);
    getFlowsRoute.handler(routingContext -> {
        String subjectId = routingContext.request().getParam(ObjectKeys.SUBJECT_ID);
        logger.info("Get flows request received: " + subjectId);

        vertx.eventBus().send(ClusterAddresses.GET_USER_FLOWS, subjectId, reply -> {
            JsonArray flows = (JsonArray) reply.result().body();
            writeResponse(routingContext, flows.encode());
        });/* www  . j  a v a2s . co  m*/
    });
}

From source file:org.entcore.common.email.SmtpSender.java

License:Open Source License

@Override
public void hardBounces(Date startDate, Date endDate, final Handler<Either<String, List<Bounce>>> handler) {
    final JsonObject query = new JsonObject().put("date",
            new JsonObject().put("$gte", new JsonObject().put("$date", removeTime(startDate).getTime()))
                    .put("$lt", new JsonObject().put("$date", removeTime(endDate).getTime())));
    MongoDb.getInstance().find("bounces", query, new Handler<Message<JsonObject>>() {
        @Override//from   w  w  w .  j  av a  2s  .  c om
        public void handle(Message<JsonObject> event) {
            try {
                if ("ok".equals(event.body().getString("status"))) {
                    JsonArray l = event.body().getJsonArray("results");
                    if (l == null || l.size() == 0) {
                        handler.handle(new Either.Right<String, List<Bounce>>(Collections.<Bounce>emptyList()));
                        return;
                    }
                    List<Bounce> bounces = mapper.readValue(l.encode(), new TypeReference<List<Bounce>>() {
                    });
                    handler.handle(new Either.Right<String, List<Bounce>>(bounces));
                } else {
                    handler.handle(new Either.Left<String, List<Bounce>>(event.body().getString("message")));
                }
            } catch (RuntimeException | IOException e) {
                handler.handle(new Either.Left<String, List<Bounce>>(e.getMessage()));
                log.error(e.getMessage(), e);
            }
        }
    });
}

From source file:org.entcore.common.neo4j.Neo4jRest.java

License:Open Source License

@Override
public void executeBatch(JsonArray queries, final Handler<JsonObject> handler) {
    JsonArray body = new fr.wseduc.webutils.collections.JsonArray();
    int i = 0;//from   w w  w . ja  v a2  s . c om
    for (Object q : queries) {
        JsonObject query = new JsonObject().put("method", "POST").put("to", "/cypher")
                .put("body", (JsonObject) q).put("id", i++);
        body.add(query);
    }
    logger.debug(body.encode());
    try {
        sendRequest("/batch", body, new Handler<HttpClientResponse>() {
            @Override
            public void handle(final HttpClientResponse resp) {
                resp.bodyHandler(new Handler<Buffer>() {

                    @Override
                    public void handle(Buffer b) {
                        logger.debug(b.toString());
                        if (resp.statusCode() != 404 && resp.statusCode() != 500) {
                            JsonArray json = new fr.wseduc.webutils.collections.JsonArray(b.toString("UTF-8"));
                            JsonArray out = new fr.wseduc.webutils.collections.JsonArray();
                            for (Object j : json) {
                                JsonObject qr = (JsonObject) j;
                                out.add(new JsonObject()
                                        .put("result",
                                                transformJson(qr.getJsonObject("body", new JsonObject())))
                                        .put("idx", qr.getLong("id")));
                            }
                            handler.handle(new JsonObject().put("results", out));
                        } else {
                            handler.handle(new JsonObject().put("message",
                                    resp.statusMessage() + " : " + b.toString()));
                        }
                    }
                });
            }
        });
    } catch (Neo4jConnectionException e) {
        ExceptionUtils.exceptionToJson(e);
    }
}

From source file:org.entcore.common.neo4j.Neo4jRest.java

License:Open Source License

public void executeTransaction(final JsonArray statements, final Integer transactionId, final boolean commit,
        final boolean allowRetry, final Handler<JsonObject> handler) {
    String uri = "/transaction";
    if (transactionId != null) {
        uri += "/" + transactionId;
    }// w ww . j a  va 2s  .c o  m
    if (commit) {
        uri += "/commit";
    }
    try {
        sendRequest(uri, new JsonObject().put("statements", statements), new Handler<HttpClientResponse>() {
            @Override
            public void handle(final HttpClientResponse resp) {
                resp.bodyHandler(new Handler<Buffer>() {

                    @Override
                    public void handle(Buffer b) {
                        logger.debug(b.toString());
                        if (resp.statusCode() != 404 && resp.statusCode() != 500) {
                            JsonObject json = new JsonObject(b.toString("UTF-8"));
                            JsonArray results = json.getJsonArray("results");
                            if (json.getJsonArray("errors", new fr.wseduc.webutils.collections.JsonArray())
                                    .size() == 0 && results != null) {
                                JsonArray out = new fr.wseduc.webutils.collections.JsonArray();
                                for (Object o : results) {
                                    if (!(o instanceof JsonObject))
                                        continue;
                                    out.add(transformJson((JsonObject) o));
                                }
                                json.put("results", out);
                                String commit = json.getString("commit");
                                if (commit != null) {
                                    String[] c = commit.split("/");
                                    if (c.length > 2) {
                                        json.put("transactionId", Integer.parseInt(c[c.length - 2]));
                                    }
                                }
                                json.remove("errors");
                                handler.handle(json);
                            } else {
                                if (transactionId == null && commit && allowRetry
                                        && json.getJsonArray("errors") != null
                                        && json.getJsonArray("errors").size() > 0) {
                                    JsonArray errors = json.getJsonArray("errors");
                                    for (Object o : errors) {
                                        if (!(o instanceof JsonObject))
                                            continue;
                                        switch (((JsonObject) o).getString("code", "")) {
                                        case "Neo.TransientError.Transaction.ConstraintsChanged":
                                        case "Neo.TransientError.Transaction.DeadlockDetected":
                                        case "Neo.TransientError.Transaction.InstanceStateChanged":
                                        case "Neo.TransientError.Schema.SchemaModifiedConcurrently":
                                            executeTransaction(statements, transactionId, commit, false,
                                                    handler);
                                            if (logger.isDebugEnabled()) {
                                                logger.debug("Retry transaction : " + statements.encode());
                                            }
                                            return;
                                        }
                                    }
                                }
                                handler.handle(
                                        new JsonObject().put("message",
                                                json.getJsonArray("errors",
                                                        new fr.wseduc.webutils.collections.JsonArray())
                                                        .encode()));
                            }
                        } else {
                            handler.handle(new JsonObject().put("message",
                                    resp.statusMessage() + " : " + b.toString()));
                        }
                    }
                });
            }
        });
    } catch (Neo4jConnectionException e) {
        ExceptionUtils.exceptionToJson(e);
    }
}