@Override
public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException {
securityManager.check(req, match, permissionFactory.hasRole(AdminModule.RESTX_ADMIN_ROLE));
resp.setContentType("application/json");
List<String> nodesCode = Lists.newArrayList();
List<String> linksCode = Lists.newArrayList();
for (Name<?> name : warehouse.listNames()) {
nodesCode.add(String.format("{ \"id\": \"%s\", \"name\": \"%s\", \"type\": \"%s\" }", name.asId(), name.getSimpleName(), getType(name)));
Iterable<Name<?>> deps = warehouse.listDependencies(name);
for (Name<?> dep : deps) {
linksCode.add(String.format("{ \"origin\": \"%s\", \"target\": \"%s\" }", name.asId(), dep.asId()));
}
}
PrintWriter writer = resp.getWriter();
writer.println("{");
writer.println("\"nodes\": [");
Joiner.on(",\n").appendTo(writer, nodesCode);
writer.println("\n],");
writer.println("\"links\": [");
Joiner.on(",\n").appendTo(writer, linksCode);
writer.println("\n]");
writer.println("}");
}