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

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

Introduction

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

Prototype

public JsonObject() 

Source Link

Document

Create a new, empty instance

Usage

From source file:com.hpe.sw.cms.verticle.ApiVerticle.java

License:Apache License

/**
 * Handler to receive POST /_scanfile.//from   ww  w.  j a  v a 2  s  .c o m
 *
 * @return
 */
private Handler<RoutingContext> uploadHandler() {
    return routingContext -> {
        int resposeCode = 201;
        String resposeMsg = "OK";
        String host = routingContext.request().getParam(Image.HOST);
        String name = routingContext.request().getParam(Image.NAME);
        String tag = routingContext.request().getParam(Image.TAG);
        String imageid = routingContext.request().getParam(Image.IMAGE_ID);
        String errorMsg = routingContext.request().getParam("errorMsg");
        JsonObject upFile = new JsonObject();
        upFile.put(Image.HOST, host);
        upFile.put(Image.NAME, name);
        upFile.put(Image.TAG, tag);
        if (errorMsg != null && "0".equals(imageid)) {
            upFile.put(Image.IS_SCANNED_FAILED, true);
            LOG.error("scanfile uploaded failed " + Image.getImageKey(upFile) + " with error message "
                    + errorMsg);
        } else {
            Set<FileUpload> upFiles = routingContext.fileUploads();
            FileUpload upF = upFiles.iterator().next();
            ByteArrayOutputStream out = null;
            BufferedInputStream in = null;
            upFile.put(Image.IMAGE_ID, imageid);
            upFile.put(Image.IS_SCANNED_FAILED, false);
            try {
                File file = new File(upF.uploadedFileName());
                in = new BufferedInputStream(new FileInputStream(file));
                out = new ByteArrayOutputStream();
                IOUtils.copy(in, out);
                upFile.put(Image.SCANNED_FILE, out.toByteArray());
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    in.close();
                    out.close();
                } catch (IOException e) {
                    upFile.put(Image.IS_SCANNED_FAILED, true);
                    resposeCode = 500;
                    resposeMsg = "Error happens when in reading file";
                    LOG.error(resposeMsg, e);
                }
            }
            LOG.debug("scanfile uploaded " + Image.getImageKey(upFile));
        }
        routingContext.response().setStatusCode(resposeCode).end(resposeMsg);
        getVertx().eventBus().publish(Events.SCANFILE_UPLOADED.name(), upFile);
    };
}

From source file:com.hpe.sw.cms.verticle.ApiVerticle.java

License:Apache License

/**
 * Handler to handle GET /images/:id request. Response is the image scan files (with/without enrich).
 *
 * @return/*from   www  .  j  a v  a 2 s.c  om*/
 */
private Handler<RoutingContext> downloadHandler() {
    return routingContext -> {
        String category = routingContext.request().getParam("fileCategory");
        JsonObject params = new JsonObject();
        if (routingContext.request().getParam("id") != null) {
            params.put(Image.IMAGE_ID, routingContext.request().getParam("id"));
        } else {
            params.put(Image.HOST, routingContext.request().getParam(Image.HOST));
            params.put(Image.NAME, routingContext.request().getParam(Image.NAME));
            params.put(Image.TAG, routingContext.request().getParam(Image.TAG));
        }
        vertx.eventBus().send(Events.DOWNLOAD_FILE.name(), params, event -> {
            if (event.succeeded() && event.result() != null) {
                Message msg = event.result();
                JsonObject file = (JsonObject) msg.body();
                routingContext.response().setChunked(true);
                if (file == null) {
                    routingContext.response().setStatusCode(404).end("There is no image  found.");
                    return;
                }
                if ("enrich".equals(category) && file.getBinary(Image.ENRICHED_FILE) != null) {
                    String fileName = file.getString(Image.HOST) + "___" + file.getString(Image.NAME) + "___"
                            + file.getString(Image.IMAGE_ID) + ".xsf";
                    routingContext.response().putHeader("Content-Disposition",
                            "attachment; filename = " + fileName);
                    Buffer buffer = Buffer.buffer(file.getBinary(Image.ENRICHED_FILE));
                    routingContext.response().end(buffer);
                } else if ("enrich_xml".equals(category) && file.getBinary(Image.SCANNED_FILE) != null) {
                    routingContext.response().end(decompressGzip(file.getBinary(Image.ENRICHED_FILE)));
                } else if ("scan".equals(category) && file.getBinary(Image.SCANNED_FILE) != null) {
                    String fileName = file.getString(Image.HOST) + "___" + file.getString(Image.NAME) + "___"
                            + file.getString(Image.IMAGE_ID) + ".xsf";
                    routingContext.response().putHeader("Content-Disposition",
                            "attachment; filename = " + fileName);
                    Buffer buffer = Buffer.buffer(file.getBinary(Image.SCANNED_FILE));
                    routingContext.response().end(buffer);
                } else if ("scan_xml".equals(category) && file.getBinary(Image.SCANNED_FILE) != null) {
                    routingContext.response().end(decompressGzip(file.getBinary(Image.SCANNED_FILE)));
                }
            } else if (event.result() == null) {
                routingContext.response().setStatusCode(404).end("There is no image  found.");
            } else {
                routingContext.response().setStatusCode(500).end("Server has error.");
            }
        });
    };
}

From source file:com.hpe.sw.cms.verticle.ApiVerticle.java

License:Apache License

/**
 * Handler to handle GET /images request. The response is a list of images
 *
 * @return//from w  ww .j av a 2 s  .  c o  m
 */
private Handler<RoutingContext> imagesHandler() {
    return routingContext -> {
        String timestamp = routingContext.request().getParam("timestamp");
        String id = routingContext.request().getParam("id");
        String include = routingContext.request().getParam("include");
        JsonObject param = new JsonObject();
        if (timestamp != null) {
            param.put("timestamp", timestamp);
        }
        if (id != null) {
            param.put("imageid", id);
        }
        if (include != null) {
            param.put("include", include);
        }
        getVertx().eventBus().send(Events.GET_IMAGES.name(), param, event -> {
            if (event.succeeded() && event.result() != null) {
                Message msg = event.result();
                JsonArray updates = (JsonArray) msg.body();
                HttpServerResponse response = routingContext.response();
                if (updates.size() == 0) {
                    response.end("There is no image found.");
                } else {
                    response.end(updates.toString());
                }
            } else if (event.result() == null) {
                routingContext.response().setStatusCode(404).end("There is no image found.");
            } else {
                routingContext.response().setStatusCode(500).end("Server has error.");
            }
        });
    };
}

From source file:com.hpe.sw.cms.verticle.ApiVerticle.java

License:Apache License

private JsonObject createObj(JsonObject event) {
    try {// w  ww  . j  a  v  a 2  s  . c o m
        JsonObject image = new JsonObject();
        String timestamp = event.getString("timestamp");
        if (timestamp != null && timestamp.length() > 19) {
            timestamp = timestamp.substring(0, 10) + " " + timestamp.substring(11, 19);
            image.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timestamp).getTime());
        }
        String url = event.getJsonObject("target").getString("url");
        image.put("name", event.getJsonObject("target").getString("repository"));
        image.put("host", event.getJsonObject("request").getString("host"));
        image.put(Image.EVENT_URL, url);
        return image;
    } catch (Exception e) {
        LOG.error("Error in reading event to object ", e);
        return null;
    }
}

From source file:com.hpe.sw.cms.verticle.MongoStoreVerticle.java

License:Apache License

@Override
public void start() throws Exception {
    super.start();
    client = MongoClient.createShared(vertx, config().getJsonObject("mongo"));
    vertx.eventBus().consumer(Events.GET_IMAGES.name(), msg -> {
        JsonObject param = (JsonObject) msg.body();
        JsonObject query = new JsonObject();
        if (param != null && param.getString("timestamp") != null) {
            Long timestamp = Long.parseLong(param.getString("timestamp"));
            query.put(Image.TIMESTAMP, new JsonObject().put("$gte", timestamp));
        } else if (param != null && param.getString("imageid") != null) {
            query.put(Image.IMAGE_ID, param.getString(Image.IMAGE_ID));
        }/*w  ww.jav a 2 s.c  om*/

        if (!query.containsKey(Image.IMAGE_ID) && (param == null || param.getString("include") == null
                || !"all".equals(param.getString("include")))) {
            query.put(Image.IMAGE_ID, new JsonObject().put("$exists", true));
        }
        JsonArray images = new JsonArray();
        client.find("images", query, res -> {
            if (res.succeeded()) {
                List<JsonObject> result = res.result();
                for (JsonObject dbImage : result) {
                    images.add(Image.cloneImage(dbImage));
                }
                msg.reply(images);
            }
        });
    });

    vertx.eventBus().consumer(Events.DOWNLOAD_FILE.name(), msg -> {
        JsonObject query = (JsonObject) msg.body();
        LOG.debug("DOWNLOAD_FILE query is " + query);
        client.find("images", query, res -> {
            if (res.succeeded()) {
                List<JsonObject> result = res.result();
                LOG.debug("DOWNLOAD_FILE result is " + result.size());
                if (result.size() > 0) {
                    msg.reply(result.get(0));
                } else {
                    msg.reply(null);
                }
            }
        });
    });

    vertx.eventBus().consumer(Events.IMAGES_UPDATED.name(), msg -> {
        JsonArray updates = new JsonArray();
        JsonObject query = new JsonObject();
        query.put(Image.IS_SCANNED, false);
        int fetchSize = Integer.valueOf(String.valueOf(msg.body()));
        FindOptions options = new FindOptions();
        JsonObject sort = new JsonObject();
        sort.put(Image.TIMESTAMP, -1);
        options.setLimit(fetchSize).setSort(sort);
        client.findWithOptions("images", query, options, res -> {
            if (res.succeeded()) {
                List<JsonObject> result = res.result();
                for (JsonObject update : result) {
                    updates.add(update);
                    LOG.debug("get image from DB :" + Image.getImageKey(update));
                }
                LOG.debug("IMAGES_UPDATED reply updates size " + updates.size());
                msg.reply(updates);
            }
        });
    });

    vertx.eventBus().consumer(Events.SCANFILE_UPLOADED.name(), msg -> {
        JsonObject upFile = (JsonObject) msg.body();
        JsonObject query = new JsonObject();
        query.put(Image.HOST, upFile.getString(Image.HOST)).put(Image.NAME, upFile.getString(Image.NAME))
                .put(Image.TAG, upFile.getString(Image.TAG));
        client.find("images", query, res -> {
            if (res.succeeded()) {
                List<JsonObject> result = res.result();
                if (result.size() == 0) {
                    LOG.error("no mapped image in DB for " + Image.getImageKey(upFile));
                    return;
                }
                for (JsonObject dbImage : result) {
                    if (upFile.getBoolean("isScanFailed")) {
                        //Failed in scanning.
                        LOG.info("store failed scan to DB " + Image.getImageKey(upFile));
                        dbImage.put(Image.IS_SCANNED, true);
                        dbImage.put(Image.IS_SCANNED_FAILED, true);
                    } else {
                        //successfully in scanning.
                        LOG.info("store scanfile to DB " + Image.getImageKey(upFile));
                        dbImage.put(Image.IS_SCANNED, true);
                        dbImage.put(Image.IS_SCANNED_FAILED, false);
                        dbImage.put(Image.IMAGE_ID, upFile.getString(Image.IMAGE_ID));
                        dbImage.put(Image.SCANNED_FILE, upFile.getBinary(Image.SCANNED_FILE));
                    }
                    client.save("images", dbImage, h -> {
                        if (h.succeeded()) {
                            LOG.info("SCANFILE_UPLOADED:Image " + Image.getImageKey(dbImage) + " updated !");
                        } else {
                            h.cause().printStackTrace();
                        }
                    });
                }
            }
        });

    });

    vertx.eventBus().consumer(Events.ENRICHFILE_UPLOADED.name(), msg -> {
        JsonArray upFiles = (JsonArray) msg.body();
        for (Object upFileObj : upFiles) {
            JsonObject upFile = (JsonObject) upFileObj;
            if (upFile.getBinary("enrichedFile") == null) {
                LOG.info("enrichedFile is emptry for " + upFile.getString("imageid"));
                continue;
            }
            LOG.info("store enrichfile to DB " + upFile.getString("imageid"));
            JsonObject query = new JsonObject();
            query.put(Image.IMAGE_ID, upFile.getString(Image.IMAGE_ID));
            client.find("images", query, res -> {
                if (res.succeeded()) {
                    List<JsonObject> result = res.result();
                    for (JsonObject dbImage : result) {
                        dbImage.put(Image.IS_ENRICHED, true);
                        dbImage.put(Image.ENRICHED_FILE, upFile.getBinary(Image.ENRICHED_FILE));
                        client.save("images", dbImage, h -> {
                            if (h.succeeded()) {
                                LOG.info("ENRICHFILE_UPLOADED:Image " + Image.getImageKey(dbImage)
                                        + " updated !");
                            } else {
                                h.cause().printStackTrace();
                            }
                        });
                    }
                }
            });
        }

    });

    vertx.eventBus().consumer(Events.IMAGE_TO_ENRICH.name(), msg -> {
        JsonObject query = new JsonObject();
        query.put(Image.IS_SCANNED, true).put(Image.IS_SCANNED_FAILED, false).put(Image.IS_ENRICHED, false);
        client.find("images", query, res -> {
            if (res.succeeded()) {
                List<JsonObject> result = res.result();
                msg.reply(new JsonArray(result));
            }
        });
    });

    vertx.eventBus().consumer(Events.NEW_IMAGE.name(), msg -> {
        //to store events in
        JsonObject obj = (JsonObject) msg.body();
        JsonObject query = new JsonObject();
        query.put(Image.HOST, obj.getString(Image.HOST)).put(Image.NAME, obj.getString(Image.NAME))
                .put(Image.TAG, obj.getString(Image.TAG));
        client.find("images", query, res -> {
            if (res.succeeded()) {
                List<JsonObject> result = res.result();
                if (result.isEmpty()) {
                    //inserted
                    client.insert("images", obj, h -> {
                        if (h.succeeded()) {
                            LOG.info("IMAGES_COMMING :Image " + Image.getImageKey(obj) + " inserted !");
                        } else {
                            h.cause().printStackTrace();
                        }
                    });
                } else if (result.size() == 1) {
                    JsonObject toUpdate = result.get(0);
                    if (!obj.getString(Image.SIGN).equals(toUpdate.getString(Image.SIGN))) {
                        toUpdate.put(Image.TIMESTAMP, obj.getLong(Image.TIMESTAMP))
                                .put(Image.SIGN, obj.getString(Image.SIGN))
                                .put(Image.IS_SCANNED, obj.getBoolean(Image.IS_SCANNED))
                                .put(Image.IS_ENRICHED, obj.getBoolean(Image.IS_ENRICHED));
                        //saved
                        client.save("images", toUpdate, h -> {
                            if (h.succeeded()) {
                                LOG.info("IMAGES_COMMING :Image " + Image.getImageKey(obj) + " updated !");
                            } else {
                                h.cause().printStackTrace();
                            }
                        });
                    } else {
                        LOG.info("IMAGES_COMMING :Image " + Image.getImageKey(obj)
                                + " has the same sign with the coming image, so will not update to DB !");
                    }
                } else {
                    throw new RuntimeException(
                            "IMAGES_COMMING :Found " + result.size() + " image for " + Image.getImageKey(obj));
                }
            }
        });
    });
}

From source file:com.hpe.sw.cms.verticle.RecognizerVerticle.java

License:Apache License

@Override
public void start() throws Exception {
    super.start();
    getVertx().setPeriodic(config().getLong("recognizer.interval", INTERVAL), h -> {
        getVertx().eventBus().send(Events.IMAGE_TO_ENRICH.name(), null, event -> {
            Message msg = event.result();
            if (msg != null) {
                String enrichPath = Constant.PROJECT_PATH + "xmlenricher/runtime/xmlenricher/Scans/incoming/";
                JsonArray scanfiles = (JsonArray) msg.body();
                for (Object obj : scanfiles) {
                    FileOutputStream fop = null;
                    try {
                        JsonObject image = (JsonObject) obj;
                        String filePath = enrichPath + image.getString("imageid") + ".xsf";
                        File file = new File(filePath);
                        if (!file.exists()) {
                            file.createNewFile();
                        }/*ww  w.  j  a  va2s.co m*/
                        fop = new FileOutputStream(file);
                        IOUtils.write(image.getBinary("scannedFile"), fop);
                        fop.flush();
                        fop.close();
                    } catch (Exception e) {
                        LOG.error("Error in writing scan file", e);
                    } finally {
                        if (fop != null) {
                            try {
                                fop.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        });
    });

    //check whether there are new enriched files
    getVertx().setPeriodic(config().getLong("recognizer.interval", INTERVAL), h -> {
        String enrichPath = Constant.PROJECT_PATH + "xmlenricher/runtime/xmlenricher/Scans/processedcore/";
        File fileDir = new File(enrichPath);
        File[] fileList = fileDir.listFiles(XSF_FILTER);
        JsonArray enrichedFiles = new JsonArray();
        for (File file : fileList) {
            if (file.isFile()) {
                String imageid = file.getName().split("\\.")[0];
                try {
                    JsonObject enrichedFile = new JsonObject();
                    enrichedFile.put("imageid", imageid);
                    enrichedFile.put("enrichedFile", FileUtils.readFileToByteArray(file));
                    enrichedFiles.add(enrichedFile);
                    file.delete(); //TODO: do a batch delete after all enrichedFiles are collected
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        if (enrichedFiles.size() > 0) {
            getVertx().eventBus().publish(Events.ENRICHFILE_UPLOADED.name(), enrichedFiles);
        }
    });
}

From source file:com.hpe.sw.cms.verticle.ScanVerticle.java

License:Apache License

private void processImage(String dricHost, String reigstryHost, String image, String tag) throws Exception {
    final String swarmProtocol = config().getString("swarm.protocol");
    final String swarmHost = config().getString("swarm.host");

    JsonObject hostConfig = new JsonObject();
    hostConfig.put("Privileged", true);

    JsonObject restartPolicy = new JsonObject();
    restartPolicy.put("Name", "no");

    JsonObject createContinaerJson = new JsonObject();
    createContinaerJson.put("AttachStdin", true);
    createContinaerJson.put("AttachStdout", true);
    createContinaerJson.put("AttachStderr", true);
    createContinaerJson.put("Tty", true);
    createContinaerJson.put("OpenStdin", true);
    createContinaerJson.put("StdinOnce", true);
    JsonArray cmds = new JsonArray();
    cmds.add("-l=file").add(dricHost).add(reigstryHost).add(image).add(tag);
    createContinaerJson.put("Cmd", cmds);
    createContinaerJson.put("Image", config().getString("swarm.scan.image"));
    createContinaerJson.put("StopSignal", "SIGTERM");
    createContinaerJson.put("", true);

    hostConfig.put("RestartPolicy", restartPolicy);
    createContinaerJson.put("HostConfig", hostConfig);

    httpClient.postAbs(swarmProtocol + swarmHost + "/containers/create", new Handler<HttpClientResponse>() {
        @Override//from  w w w .  j ava2  s.co  m
        public void handle(HttpClientResponse event) {
            event.bodyHandler(new Handler<Buffer>() {
                @Override
                public void handle(Buffer buffer) {
                    JsonObject retVal = buffer.toJsonObject();
                    String containerId = retVal.getString("Id");
                    getVertx().sharedData().getLocalMap("scanContainerIds").put(containerId, containerId);
                    httpClient.postAbs(swarmProtocol + swarmHost + "/containers/" + containerId + "/start",
                            new Handler<HttpClientResponse>() {
                                @Override
                                public void handle(HttpClientResponse event) {
                                    LOG.info("start container with response code :" + event.statusCode());
                                }
                            }).end();
                }
            });
        }
    }).putHeader("content-type", "application/json")
            .putHeader("content-length", String.valueOf(createContinaerJson.toString().length()))
            .write(createContinaerJson.toString()).end();
}

From source file:com.hpe.sw.cms.verticle.WatcherVerticle.java

License:Apache License

private void handler(Long h) {
    try {//from   www.  jav  a  2 s  .c  o m
        String protocol = config().getString("registry.protocol");
        String host = config().getString("registry.host");
        httpClient.getAbs(protocol + host + "/v2/_catalog", new Handler<HttpClientResponse>() {
            @Override
            public void handle(HttpClientResponse httpClientResponse) {
                httpClientResponse.bodyHandler(new Handler<Buffer>() {
                    @Override
                    public void handle(Buffer buffer) {
                        JsonObject repositoryLib = buffer.toJsonObject();
                        JsonArray repos = repositoryLib.getJsonArray("repositories");
                        repos.forEach(repo -> {
                            if (repo != null && !((String) repo).trim().equals("")) {
                                try {
                                    repo = ((String) repo).trim();
                                    String[] imagePart = ((String) repo).split("/");
                                    String imageName = String.join("/", imagePart);
                                    httpClient.getAbs(protocol + host + "/v2/" + imageName + "/tags/list",
                                            new Handler<HttpClientResponse>() {
                                                @Override
                                                public void handle(HttpClientResponse httpClientResponse) {
                                                    httpClientResponse.bodyHandler(new Handler<Buffer>() {
                                                        @Override
                                                        public void handle(Buffer buffer) {
                                                            JsonObject tagLib = buffer.toJsonObject();
                                                            JsonArray tags = tagLib.getJsonArray("tags");
                                                            for (Object tag : tags) {
                                                                if (tag != null
                                                                        && !((String) tag).trim().equals("")) {
                                                                    JsonObject imageObj = new JsonObject();
                                                                    imageObj.put("name", imageName);
                                                                    imageObj.put("tag", tag);
                                                                    String dest = host;
                                                                    imageObj.put("host", dest);
                                                                    populateAndSendImage(imageObj);
                                                                }
                                                            }
                                                        }
                                                    });
                                                }
                                            }).end();

                                } catch (Exception e) {
                                    LOG.error("error in reading registry", e);
                                }
                            }
                        });
                    }
                });
            }
        }).end();
    } catch (Exception e) {
        LOG.error("error in registry handler", e);
    }
}

From source file:com.hubrick.vertx.kafka.producer.model.AbstractKafkaMessage.java

License:Apache License

public JsonObject asJson() {
    final JsonObject jsonObject = new JsonObject();
    if (partKey != null) {
        jsonObject.put(PART_KEY, partKey);
    }// www.  j  a v  a  2s  .  c  o m
    return jsonObject;
}

From source file:com.hubrick.vertx.kafka.producer.model.KafkaOptions.java

License:Apache License

public JsonObject toJson() {
    final JsonObject jsonObject = new JsonObject();
    if (topic != null) {
        jsonObject.put(TOPIC, topic);// w w  w  . ja v  a 2 s  .c  o m
    }
    return jsonObject;
}