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:org.entcore.workspace.security.WorkspaceResourcesProvider.java

License:Open Source License

private void authorizeDocuments(HttpServerRequest request, UserInfos user, String serviceMethod,
        Handler<Boolean> handler) {
    String ids = request.params().get("ids");
    if (ids != null && !ids.trim().isEmpty()) {
        JsonArray idsArray = new fr.wseduc.webutils.collections.JsonArray(Arrays.asList(ids.split(",")));
        String query = "{ \"_id\": { \"$in\" : " + idsArray.encode() + "}, " + "\"$or\" : [{ \"owner\": \""
                + user.getUserId() + "\"}, {\"shared\" : { \"$elemMatch\" : "
                + orSharedElementMatch(user, serviceMethod) + "}}]}";
        executeCountQuery(request, DocumentDao.DOCUMENTS_COLLECTION, new JsonObject(query), idsArray.size(),
                handler);//from w w  w. jav  a 2 s.  c om
    } else {
        handler.handle(false);
    }
}

From source file:org.entcore.workspace.service.impl.DefaultFolderService.java

License:Open Source License

@Override
public void delete(String id, final UserInfos owner, final Handler<Either<String, JsonArray>> result) {
    if (owner == null) {
        result.handle(new Either.Left<String, JsonArray>("workspace.invalid.user"));
        return;//from   w w  w .  j av  a  2s . c  o m
    }
    if (id == null || id.trim().isEmpty()) {
        result.handle(new Either.Left<String, JsonArray>("workspace.folder.not.found"));
        return;
    }
    QueryBuilder query = QueryBuilder.start("_id").is(id).put("owner").is(owner.getUserId());
    JsonObject keys = new JsonObject().put("folder", 1);
    mongo.findOne(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(query), keys,
            new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    String folder = event.body().getJsonObject("result", new JsonObject()).getString("folder");
                    if ("ok".equals(event.body().getString("status")) && folder != null
                            && !folder.trim().isEmpty()) {
                        QueryBuilder q = QueryBuilder.start("owner").is(owner.getUserId()).put("folder")
                                .regex(Pattern.compile("^" + Pattern.quote(folder) + "($|_)"));
                        JsonObject keys = new JsonObject().put("metadata", 1).put("owner", 1).put("name", 1)
                                .put("file", 1);
                        final JsonObject query = MongoQueryBuilder.build(q);
                        mongo.find(DOCUMENTS_COLLECTION, query, null, keys, new Handler<Message<JsonObject>>() {
                            @Override
                            public void handle(Message<JsonObject> message) {
                                final JsonArray results = message.body().getJsonArray("results");
                                if ("ok".equals(message.body().getString("status")) && results != null) {
                                    mongo.delete(DOCUMENTS_COLLECTION, query,
                                            new Handler<Message<JsonObject>>() {
                                                @Override
                                                public void handle(Message<JsonObject> res) {
                                                    if ("ok".equals(res.body().getString("status"))) {
                                                        result.handle(
                                                                new Either.Right<String, JsonArray>(results));
                                                        final JsonArray filesIds = new fr.wseduc.webutils.collections.JsonArray();
                                                        for (Object o : results) {
                                                            if (!(o instanceof JsonObject))
                                                                continue;
                                                            String file = ((JsonObject) o).getString("file");
                                                            if (file != null && !file.trim().isEmpty()) {
                                                                filesIds.add(file);
                                                            }
                                                        }
                                                        if (filesIds.size() > 0) {
                                                            storage.removeFiles(filesIds,
                                                                    new Handler<JsonObject>() {
                                                                        @Override
                                                                        public void handle(
                                                                                JsonObject jsonObject) {
                                                                            if (!"ok".equals(jsonObject
                                                                                    .getString("status"))) {
                                                                                log.error(
                                                                                        "Error deleting gridfs files : "
                                                                                                + filesIds
                                                                                                        .encode());
                                                                                log.error(jsonObject
                                                                                        .getString("message"));
                                                                            }
                                                                        }
                                                                    });
                                                        }
                                                    } else {
                                                        result.handle(new Either.Left<String, JsonArray>(
                                                                res.body().getString("message")));
                                                    }
                                                }
                                            });
                                } else {
                                    result.handle(new Either.Left<String, JsonArray>(
                                            message.body().getString("message")));
                                }
                            }
                        });
                    } else {
                        result.handle(new Either.Left<String, JsonArray>("workspace.folder.not.found"));
                    }
                }
            });
}

From source file:org.entcore.workspace.service.WorkspaceService.java

License:Open Source License

private void copyFiles(final HttpServerRequest request, final String collection, final String owner,
        final UserInfos user) {
    String ids = request.params().get("ids"); // TODO refactor with json in request body
    String folder2 = getOrElse(request.params().get("folder"), "");
    try {/*w w  w  . j  a  v a2  s.co  m*/
        folder2 = URLDecoder.decode(folder2, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        log.warn(e.getMessage(), e);
    }
    final String folder = folder2;
    if (ids != null && !ids.trim().isEmpty()) {
        JsonArray idsArray = new fr.wseduc.webutils.collections.JsonArray(Arrays.asList(ids.split(",")));
        String criteria = "{ \"_id\" : { \"$in\" : " + idsArray.encode() + "}";
        if (owner != null) {
            criteria += ", \"to\" : \"" + owner + "\"";
        }
        criteria += "}";
        mongo.find(collection, new JsonObject(criteria), new Handler<Message<JsonObject>>() {
            @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 fr.wseduc.webutils.collections.JsonArray();
                    final AtomicInteger number = new AtomicInteger(origs.size());
                    emptySize(user, new Handler<Long>() {
                        @Override
                        public void handle(Long emptySize) {
                            long size = 0;
                            for (Object o : origs) {
                                if (!(o instanceof JsonObject))
                                    continue;
                                JsonObject metadata = ((JsonObject) o).getJsonObject("metadata");
                                if (metadata != null) {
                                    size += metadata.getLong("size", 0l);
                                }
                            }
                            if (size > emptySize) {
                                badRequest(request, "files.too.large");
                                return;
                            }
                            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);
                                if (owner != null) {
                                    dest.put("owner", owner);
                                    dest.put("ownerName", dest.getString("toName"));
                                    dest.remove("to");
                                    dest.remove("from");
                                    dest.remove("toName");
                                    dest.remove("fromName");
                                } else if (user != null) {
                                    dest.put("owner", user.getUserId());
                                    dest.put("ownerName", user.getUsername());
                                    dest.put("shared", new fr.wseduc.webutils.collections.JsonArray());
                                }
                                dest.put("_id", UUID.randomUUID().toString());
                                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 ((owner != null || user != null) && 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("_"));
                                    }

                                    folderService.getParentRights(parentName, parentFolder, owner,
                                            new Handler<Either<String, JsonArray>>() {
                                                public void handle(Either<String, JsonArray> event) {
                                                    final JsonArray parentSharedRights = event.right() == null
                                                            || event.isLeft() ? null : event.right().getValue();

                                                    if (parentSharedRights != null
                                                            && parentSharedRights.size() > 0)
                                                        dest.put("shared", parentSharedRights);
                                                    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 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, src, 404);
                }
            }

            private void persist(final JsonArray insert, int remains) {
                if (remains == 0) {
                    mongo.insert(DocumentDao.DOCUMENTS_COLLECTION, insert, new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> inserted) {
                            if ("ok".equals(inserted.body().getString("status"))) {
                                incrementStorage(insert);
                                for (Object obj : insert) {
                                    JsonObject json = (JsonObject) obj;
                                    createRevision(json.getString("_id"), json.getString("file"),
                                            json.getString("name"), json.getString("owner"),
                                            json.getString("owner"), json.getString("ownerName"),
                                            json.getJsonObject("metadata"));
                                }
                                renderJson(request, inserted.body());
                            } else {
                                renderError(request, inserted.body());
                            }
                        }
                    });
                }
            }

        });
    } else {
        badRequest(request);
    }
}

From source file:org.entcore.workspace.service.WorkspaceService.java

License:Open Source License

@Put("/documents/move/:ids/:folder")
@SecuredAction(value = "workspace.manager", type = ActionType.RESOURCE)
public void moveDocuments(final HttpServerRequest request) {
    final String ids = request.params().get("ids"); // TODO refactor with json in request body
    String tempFolder = getOrElse(request.params().get("folder"), "");
    try {/* w w  w  . j  a  v  a2  s  .c o m*/
        tempFolder = URLDecoder.decode(tempFolder, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        log.warn(e.getMessage(), e);
    }
    final String folder = tempFolder;
    final String cleanedFolder = folder.replaceAll(Pattern.quote("\\"), Matcher.quoteReplacement("\\\\"))
            .replaceAll(Pattern.quote("\""), Matcher.quoteReplacement("\\\""));

    UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {

        @Override
        public void handle(UserInfos user) {
            if (user != null && user.getUserId() != null) {
                if (ids != null && !ids.trim().isEmpty()) {
                    JsonArray idsArray = new fr.wseduc.webutils.collections.JsonArray(
                            Arrays.asList(ids.split(",")));
                    final String criteria = "{ \"_id\" : { \"$in\" : " + idsArray.encode() + "}}";

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

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

                        folderService.getParentRights(parentName, parentFolder, user,
                                new Handler<Either<String, JsonArray>>() {
                                    public void handle(Either<String, JsonArray> event) {
                                        final JsonArray parentSharedRights = event.right() == null
                                                || event.isLeft() ? null : event.right().getValue();

                                        String obj = "{ \"$set\" : { \"folder\": \"" + cleanedFolder
                                                + "\", \"modified\" : \"" + MongoDb.formatDate(new Date())
                                                + "\"";
                                        if (parentSharedRights != null && parentSharedRights.size() > 0)
                                            obj += ", \"shared\" : " + parentSharedRights.toString() + " }}";
                                        else
                                            obj += "}, \"$unset\" : { \"shared\": 1 }}";

                                        mongo.update(DocumentDao.DOCUMENTS_COLLECTION, new JsonObject(criteria),
                                                new JsonObject(obj), false, true,
                                                new Handler<Message<JsonObject>>() {
                                                    @Override
                                                    public void handle(Message<JsonObject> r) {
                                                        JsonObject res = r.body();
                                                        if ("ok".equals(res.getString("status"))) {
                                                            renderJson(request, res);
                                                        } else {
                                                            renderJson(request, res, 404);
                                                        }
                                                    }
                                                });
                                    }
                                });
                    } else {
                        String obj = "{ \"$set\" : { \"modified\" : \"" + MongoDb.formatDate(new Date())
                                + "\" }, " + " \"$unset\" : { \"folder\" : 1, \"shared\": 1 }}";

                        mongo.update(DocumentDao.DOCUMENTS_COLLECTION, new JsonObject(criteria),
                                new JsonObject(obj), false, true, new Handler<Message<JsonObject>>() {
                                    @Override
                                    public void handle(Message<JsonObject> r) {
                                        JsonObject res = r.body();
                                        if ("ok".equals(res.getString("status"))) {
                                            renderJson(request, res);
                                        } else {
                                            renderJson(request, res, 404);
                                        }
                                    }
                                });
                    }
                } else {
                    badRequest(request);
                }
            } else {
                unauthorized(request);
            }
        }
    });
}

From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java

@Override
public Future<JsonArray> getExpandedPermissions(String permission, String tenant) {
    //System.out.println("Permissions> Expanding permission '"+ permission + "' on tenant '"+
    //        tenant + "'");
    JsonObject query = new JsonObject().put("permission_name", permission).put("tenant", tenant);
    JsonArray permList = new JsonArray();
    Future<JsonArray> future = Future.future();
    mongoClient.find("permissions", query, res -> {
        if (res.succeeded() && res.result().size() > 0) {
            //System.out.println("Permissions> Successfully queried mongo for '"+ permission + "' on tenant '"+
            //    tenant + "'");
            /*/* ww  w.  j a  v  a  2  s .co  m*/
            If there are no subpermissions, go ahead and complete the future with the
            given value of the JsonArray
                    
            If there are subpermissions, create a list of new futures, by calling
            walkPerms for each sub permission, then create a composite future from
            these new futures, with a handler that completes the original
            future when they return
            */
            JsonObject permObj = res.result().get(0);
            permList.add(permission);
            JsonArray subPerms = permObj.getJsonArray("sub_permissions");
            LinkedList<Future> futureList = new LinkedList<>();
            if (subPerms != null && !subPerms.isEmpty()) {
                logger.debug("Permissions> " + subPerms.size() + " subs to process for '" + permission + "'");
                for (Object o : subPerms) {
                    String sub = (String) o;
                    Future<JsonArray> newFuture = getExpandedPermissions(sub, tenant);
                    futureList.add(newFuture);
                }
                logger.debug("Permissions> Creating CompositeFuture to expand " + permission + " into "
                        + futureList.size() + " subs: " + subPerms.encode());
                CompositeFuture compositeFuture = CompositeFuture.all(futureList);
                compositeFuture.setHandler(res2 -> {
                    if (res2.succeeded()) {
                        //Get output of contained futures and complete the future here
                        for (Future f : futureList) {
                            JsonArray arr = (JsonArray) f.result();
                            for (Object o : arr) {
                                permList.add(o);
                            }
                        }
                        future.complete(permList);
                    } else {
                        future.fail("Unable to populate permissions: " + res2.cause().getMessage());
                    }
                });
            } else {
                //System.out.println("Permissions> No sub-permissions found for '" + permission + "'");
                future.complete(permList);
            }
        } else {
            future.fail("No permission '" + permission + "' found for tenant '" + tenant + "'");
        }
    });
    return future;
}

From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java

@Override
public Future<Boolean> removePermissionFromUser(String user, String permission, String tenant) {
    JsonObject query = new JsonObject().put("username", user).put("tenant", tenant);
    Future<Boolean> future = Future.future();
    mongoClient.find("users", query, res -> {
        if (res.failed() || res.result().size() < 1) {
            future.complete(false);/* w  w w. j a  v a  2  s . c  om*/
        } else {
            getPermissionsForUser(user, tenant, false).setHandler(res2 -> {
                if (res2.failed()) {
                    future.fail("Unable to retrieve initial permissions: " + res2.cause().getMessage());
                } else {
                    JsonArray permissions = res2.result();
                    logger.debug("PERMISSIONS: " + permissions.encode());
                    if (!permissions.contains(permission)) {
                        future.complete(true);
                    } else {
                        permissions.remove(permission);
                        JsonObject update = new JsonObject().put("$set",
                                new JsonObject().put("permissions", permissions));
                        mongoClient.updateCollection("users", query, update, res3 -> {
                            if (res3.failed()) {
                                future.fail("Unable to remove permission:" + res3.cause().getMessage());
                            } else {
                                logger.debug("Permissions> Permission '" + permission + "' removed");
                                future.complete(true);
                            }
                        });
                    }
                }
            });
        }
    });
    return future;
}

From source file:org.perfcake.reporting.destination.c3chart.C3ChartDataFile.java

License:Apache License

/**
 * Replaces the data file of the given chart with new data.
 *
 * @param chart/*from   w  w w .j  a  v  a2s.c  o  m*/
 *       Chart meta-data.
 * @param target
 *       Root path to an existing chart report.
 * @param newData
 *       New data to be written.
 * @throws PerfCakeException
 *       In case of an I/O error.
 */
C3ChartDataFile(final C3Chart chart, final Path target, final C3ChartData newData) throws PerfCakeException {
    this.chart = chart;
    this.target = target;

    writeDataHeader();

    try (FileChannel dataOutput = FileChannel.open(getDataFile().toPath(), StandardOpenOption.APPEND);) {
        for (final JsonArray json : newData.getData()) {
            StringBuilder sb = new StringBuilder();
            sb.append(chart.getBaseName());
            sb.append(".push(");
            sb.append(json.encode());
            sb.append(");\n");

            dataOutput.write(
                    ByteBuffer.wrap(sb.toString().getBytes(Charset.forName(Utils.getDefaultEncoding()))));
        }
    } catch (IOException e) {
        throw new PerfCakeException("Unable to write new chart data: ", e);
    }
}

From source file:org.sfs.nodes.all.stats.GetClusterStats.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ToVoid<>()).map(aVoid -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                JsonArray jsonArray = new JsonArray();
                for (TransientServiceDef node : clusterInfo.getAllNodes()) {
                    jsonArray.add(node.toJsonObject());
                }//from w ww .j a  v  a  2 s. c o  m
                return jsonArray;
            }).single().subscribe(new Terminus<JsonArray>(httpServerRequest) {

                @Override
                public void onNext(JsonArray jsonArray) {
                    Buffer encoded = buffer(jsonArray.encode().getBytes(UTF_8));
                    httpServerRequest.response().setStatusCode(HTTP_OK)
                            .putHeader(CONTENT_LENGTH, valueOf(encoded.length())).write(encoded);
                }
            });

}

From source file:org.sfs.nodes.compute.account.GetAccount.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateAccountPath())
            .map(objectPath -> objectPath.accountPath().get())
            .flatMap(new LoadAccount(httpServerRequest.vertxContext()))
            .map(new ValidatePersistentAccountExists()).flatMap(new ListContainers(httpServerRequest))
            .flatMap(containerList -> {
                HttpServerResponse httpServerResponse = httpServerRequest.response();
                MultiMap headerParams = httpServerRequest.headers();
                MultiMap queryParams = httpServerRequest.params();
                String format = queryParams.get(FORMAT);

                String accept = headerParams.get(ACCEPT);

                Account account = containerList.getAccount();

                Metadata metadata = account.getMetadata();

                for (String key : metadata.keySet()) {
                    SortedSet<String> values = metadata.get(key);
                    if (values != null && !values.isEmpty()) {
                        httpServerResponse.putHeader(format("%s%s", X_ADD_ACCOUNT_META_PREFIX, key), values);
                    }//from   www .  j  a v  a2 s. com
                }

                httpServerResponse.putHeader(X_ACCOUNT_OBJECT_COUNT, valueOf(containerList.getObjectCount()));
                httpServerResponse.putHeader(X_ACCOUNT_CONTAINER_COUNT,
                        valueOf(containerList.getContainerCount()));
                httpServerResponse.putHeader(X_ACCOUNT_BYTES_USED,
                        BigDecimal.valueOf(containerList.getBytesUsed()).setScale(0, ROUND_HALF_UP).toString());

                MediaType parsedAccept = null;
                if (!isNullOrEmpty(accept)) {
                    parsedAccept = parse(accept);
                }

                if (equalsIgnoreCase("xml", format)) {
                    parsedAccept = APPLICATION_XML_UTF_8;
                } else if (equalsIgnoreCase("json", format)) {
                    parsedAccept = JSON_UTF_8;
                }

                httpServerResponse.setStatusCode(HTTP_OK);

                if (parsedAccept != null && JSON_UTF_8.is(parsedAccept)) {
                    String charset = UTF_8.toString();

                    JsonArray array = new JsonArray();

                    for (SparseContainer container : ordered(containerList.getContainers())) {

                        array.add(new JsonObject().put("name", container.getContainerName())
                                .put("count", container.getObjectCount())
                                .put("bytes", BigDecimal.valueOf(container.getByteCount())
                                        .setScale(0, ROUND_HALF_UP).longValue()));

                    }

                    Buffer buffer = buffer(array.encode(), charset);
                    httpServerResponse = httpServerResponse.putHeader(CONTENT_TYPE, JSON_UTF_8.toString());
                    httpServerResponse = httpServerResponse.putHeader(CONTENT_LENGTH, valueOf(buffer.length()));
                    return AsyncIO.append(buffer, httpServerResponse);

                } else if (parsedAccept != null && APPLICATION_XML_UTF_8.is(parsedAccept)) {

                    BufferOutputStream bufferOutputStream = new BufferOutputStream();
                    String charset = UTF_8.toString();
                    XMLStreamWriter writer = null;
                    try {
                        writer = newFactory().createXMLStreamWriter(bufferOutputStream, charset);

                        writer.writeStartDocument(charset, "1.0");

                        writer.writeStartElement("account");

                        writer.writeAttribute("name", fromPaths(account.getId()).accountName().get());

                        for (SparseContainer container : ordered(containerList.getContainers())) {

                            writer.writeStartElement("container");

                            writer.writeStartElement("name");
                            writer.writeCharacters(container.getContainerName());
                            writer.writeEndElement();

                            writer.writeStartElement("count");
                            writer.writeCharacters(valueOf(container.getObjectCount()));
                            writer.writeEndElement();

                            writer.writeStartElement("bytes");
                            writer.writeCharacters(BigDecimal.valueOf(container.getByteCount())
                                    .setScale(0, ROUND_HALF_UP).toString());
                            writer.writeEndElement();

                            writer.writeEndElement();
                        }

                        writer.writeEndElement();

                        writer.writeEndDocument();

                    } catch (XMLStreamException e) {
                        throw new RuntimeException(e);
                    } finally {
                        try {
                            if (writer != null) {
                                writer.close();
                            }
                        } catch (XMLStreamException e) {
                            LOGGER.warn(e.getLocalizedMessage(), e);
                        }
                    }

                    Buffer buffer = bufferOutputStream.toBuffer();
                    httpServerResponse = httpServerResponse.putHeader(CONTENT_TYPE,
                            APPLICATION_XML_UTF_8.toString());
                    httpServerResponse = httpServerResponse.putHeader(CONTENT_LENGTH, valueOf(buffer.length()));
                    return AsyncIO.append(buffer, httpServerResponse);

                } else {
                    String charset = UTF_8.toString();
                    Buffer buffer = buffer();
                    for (SparseContainer container : ordered(containerList.getContainers())) {
                        buffer.appendString(container.getContainerName(), charset);
                        buffer.appendString("\n", charset);
                    }
                    httpServerResponse = httpServerResponse.putHeader(CONTENT_TYPE,
                            PLAIN_TEXT_UTF_8.toString());
                    httpServerResponse = httpServerResponse.putHeader(CONTENT_LENGTH, valueOf(buffer.length()));
                    return AsyncIO.append(buffer, httpServerResponse);
                }
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {

                @Override
                public void onNext(Void aVoid) {

                }

            });

}