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

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

Introduction

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

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

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));
        }//from www  .  j  a va 2 s.co m

        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();
                        }//from ww  w. j  ava 2  s  . c  o  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

@Override
public void start() throws Exception {
    super.start();
    httpClient = vertx.createHttpClient();
    final String dricHost = config().getString("dric.host");
    final String swarmProtocol = config().getString("swarm.protocol");
    final String swarmHost = config().getString("swarm.host");
    final String swarmImage = config().getString("swarm.scan.image");
    final int scanMax = config().getInteger("scanner.max");

    getVertx().setPeriodic(config().getLong("scan.interval", INTERVAL), h -> {
        httpClient.getAbs(swarmProtocol + swarmHost + "/containers/json", new Handler<HttpClientResponse>() {
            @Override/*from  ww  w  .j av  a 2 s.com*/
            public void handle(HttpClientResponse httpClientResponse) {
                httpClientResponse.bodyHandler(new Handler<Buffer>() {
                    @Override
                    public void handle(Buffer res) {
                        JsonArray containers = res.toJsonArray();
                        int currentRunning = 0;
                        for (Object obj : containers) {
                            JsonObject container = (JsonObject) obj;
                            if (swarmImage.equals(container.getString("Image"))) {
                                currentRunning++;
                            }
                        }
                        int fetchSize = scanMax - currentRunning;
                        if (fetchSize > 0) {
                            getVertx().eventBus().send(Events.IMAGES_UPDATED.name(), fetchSize, event -> {
                                Message msg = event.result();
                                if (msg != null) {
                                    JsonArray updates = (JsonArray) msg.body();
                                    for (Object obj : updates) {
                                        try {
                                            JsonObject image = (JsonObject) obj;
                                            processImage(dricHost, image.getString("host"),
                                                    image.getString("name"), image.getString("tag"));
                                        } catch (Exception e) {
                                            LOG.error("image sent to Scan error", e);
                                        }
                                    }
                                }
                            });
                        }

                    }
                });
            }
        }).end();
    });

    //delete exited containers of scan.
    getVertx().setPeriodic(config().getLong("scan.interval", INTERVAL), h -> {
        Set containerIds = getVertx().sharedData().getLocalMap("scanContainerIds").keySet();
        containerIds.forEach(containerId -> {
            httpClient.getAbs(swarmProtocol + swarmHost + "/containers/" + containerId + "/json",
                    new Handler<HttpClientResponse>() {
                        @Override
                        public void handle(HttpClientResponse httpClientResponse) {
                            httpClientResponse.bodyHandler(new Handler<Buffer>() {
                                @Override
                                public void handle(Buffer event) {
                                    if ("exited".equals(
                                            event.toJsonObject().getJsonObject("State").getString("Status"))) {
                                        String containerId = event.toJsonObject().getString("Id");
                                        httpClient
                                                .deleteAbs("http://" + swarmHost + "/containers/" + containerId,
                                                        new Handler<HttpClientResponse>() {
                                                            @Override
                                                            public void handle(HttpClientResponse event) {
                                                                LOG.info("delete container with response code :"
                                                                        + event.statusCode());
                                                                getVertx().sharedData()
                                                                        .getLocalMap("scanContainerIds")
                                                                        .remove(containerId);
                                                            }
                                                        })
                                                .end();
                                    }
                                }
                            });
                        }
                    }).end();
        });
    });

}

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 .ja v  a2 s .  c om
        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

@Override
public void start() throws Exception {
    httpClient = vertx.createHttpClient();
    getVertx().setPeriodic(config().getLong("registry.interval", INTERVAL), this::handler);
    vertx.eventBus().consumer(Events.EVENT_IMAGES_UPDATED.name(), msg -> {
        JsonArray images = (JsonArray) msg.body();
        if (images.size() > 0) {
            for (Object image : images) {
                JsonObject imageObj = (JsonObject) image;
                try {
                    String url = imageObj.getString("eventUrl");
                    httpClient.getAbs(url, new Handler<HttpClientResponse>() {
                        @Override
                        public void handle(HttpClientResponse httpClientResponse) {
                            httpClientResponse.bodyHandler(new Handler<Buffer>() {
                                @Override
                                public void handle(Buffer buffer) {
                                    JsonObject maniFestLib = buffer.toJsonObject();
                                    String tag = maniFestLib.getString("tag");
                                    LOG.debug("populateTagToImage " + tag);
                                    imageObj.put(Image.TAG, tag);
                                    populateAndSendImage(imageObj);
                                }/*from  w  ww  .ja  v  a  2 s  . c o m*/
                            });
                        }
                    }).end();

                } catch (Exception e) {
                    LOG.error("error in populateTagToImage", e);
                }
            }

        }
    });
}

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

License:Apache License

private void populateAndSendImage(JsonObject imageObj) {
    try {//from   w w w. ja v a2s  .  com
        String protocol = config().getString("registry.protocol");
        String host = config().getString("registry.host");
        httpClient.getAbs(protocol + host + "/v2/" + imageObj.getString("name") + "/manifests/"
                + imageObj.getString("tag"), new Handler<HttpClientResponse>() {
                    @Override
                    public void handle(HttpClientResponse httpClientResponse) {
                        httpClientResponse.bodyHandler(new Handler<Buffer>() {
                            @Override
                            public void handle(Buffer buffer) {
                                JsonObject maniFestLib = buffer.toJsonObject();
                                JsonArray signs = maniFestLib.getJsonArray("signatures");
                                if (signs != null && signs.size() > 0) {
                                    StringBuffer fullSign = new StringBuffer();
                                    for (Object sign : signs.getList()) {
                                        fullSign.append(((Map) sign).get("signature")).append("|");
                                    }
                                    imageObj.put(Image.SIGN, fullSign);
                                    imageObj.put(Image.IS_SCANNED, false);
                                    imageObj.put(Image.IS_ENRICHED, false);
                                    imageObj.put(Image.IS_SCANNED_FAILED, false);
                                    if (imageObj.getLong(Image.TIMESTAMP) == null) {
                                        imageObj.put(Image.TIMESTAMP, new Date().getTime());
                                    }
                                    vertx.eventBus().publish(Events.NEW_IMAGE.name(), imageObj);
                                    LOG.info("Event Image with populateSignToImage", imageObj);
                                }
                            }
                        });
                    }
                }).end();
    } catch (Exception e) {
        LOG.error("error in populateSignToImage", e);
    }
}

From source file:com.hubrick.vertx.kafka.consumer.KafkaConsumerVerticle.java

License:Apache License

private String getMandatoryStringConfig(final JsonObject jsonObject, final String key) {
    final String value = jsonObject.getString(key);
    if (Strings.isNullOrEmpty(value)) {
        throw new IllegalArgumentException("No configuration for key " + key + " found");
    }/*from w w  w.  j  a v a2 s .c  om*/
    return value;
}

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

License:Apache License

public ByteKafkaMessage(JsonObject jsonObject) {
    super(jsonObject.getString(PART_KEY));
    this.payload = jsonObject.getBinary(PAYLOAD) != null ? Buffer.buffer(jsonObject.getBinary(PAYLOAD)) : null;
}

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

License:Apache License

public KafkaOptions(JsonObject jsonObject) {
    this.topic = jsonObject.getString(TOPIC);
}

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

License:Apache License

public StringKafkaMessage(JsonObject jsonObject) {
    super(jsonObject.getString(PART_KEY));
    this.payload = jsonObject.getString(PAYLOAD);
}