|
@@ -9,6 +9,7 @@ import org.vertx.java.core.eventbus.Message;
|
|
import org.vertx.java.core.http.HttpServerRequest;
|
|
import org.vertx.java.core.http.HttpServerRequest;
|
|
import org.vertx.java.core.http.HttpServerResponse;
|
|
import org.vertx.java.core.http.HttpServerResponse;
|
|
import org.vertx.java.core.json.JsonObject;
|
|
import org.vertx.java.core.json.JsonObject;
|
|
|
|
+import org.vertx.java.core.json.JsonArray;
|
|
import org.vertx.java.core.json.impl.Json;
|
|
import org.vertx.java.core.json.impl.Json;
|
|
import org.vertx.java.platform.Verticle;
|
|
import org.vertx.java.platform.Verticle;
|
|
|
|
|
|
@@ -50,6 +51,9 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
|
|
case "/db":
|
|
case "/db":
|
|
handleDbMongo(req);
|
|
handleDbMongo(req);
|
|
break;
|
|
break;
|
|
|
|
+ case "/queries":
|
|
|
|
+ handleQueriesMongo(req);
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
req.response().setStatusCode(404);
|
|
req.response().setStatusCode(404);
|
|
req.response().end();
|
|
req.response().end();
|
|
@@ -66,17 +70,38 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
|
|
}
|
|
}
|
|
|
|
|
|
private void handleJson(HttpServerRequest req) {
|
|
private void handleJson(HttpServerRequest req) {
|
|
- HttpServerResponse resp = req.response();
|
|
|
|
String result = Json.encode(Collections.singletonMap("message", "Hello, world!"));
|
|
String result = Json.encode(Collections.singletonMap("message", "Hello, world!"));
|
|
- int contentLength = result.getBytes(StandardCharsets.UTF_8).length;
|
|
|
|
- resp.putHeader("Content-Type", "application/json; charset=UTF-8");
|
|
|
|
- resp.putHeader("Content-Length", String.valueOf(contentLength));
|
|
|
|
- resp.putHeader("Server", "vert.x");
|
|
|
|
- resp.putHeader("Date", dateString);
|
|
|
|
- resp.end(result);
|
|
|
|
|
|
+ sendResponse(req, result);
|
|
}
|
|
}
|
|
|
|
|
|
private void handleDbMongo(final HttpServerRequest req) {
|
|
private void handleDbMongo(final HttpServerRequest req) {
|
|
|
|
+
|
|
|
|
+ final Random random = ThreadLocalRandom.current();
|
|
|
|
+
|
|
|
|
+ vertx.eventBus().send(
|
|
|
|
+ "hello.persistor",
|
|
|
|
+ new JsonObject()
|
|
|
|
+ .putString("action", "findone")
|
|
|
|
+ .putString("collection", "world")
|
|
|
|
+ .putObject("matcher", new JsonObject().putNumber("id", (random.nextInt(10000) + 1))),
|
|
|
|
+ new Handler<Message<JsonObject>>() {
|
|
|
|
+ @Override
|
|
|
|
+ public void handle(Message<JsonObject> reply) {
|
|
|
|
+ JsonObject body = reply.body();
|
|
|
|
+
|
|
|
|
+ if ("ok".equals(body.getString("status"))) {
|
|
|
|
+ JsonObject world = body.getObject("result");
|
|
|
|
+ world.removeField("_id");
|
|
|
|
+ String result = world.encode();
|
|
|
|
+ sendResponse(req, result);
|
|
|
|
+ } else {
|
|
|
|
+ System.err.println("Failed to execute query");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void handleQueriesMongo(final HttpServerRequest req) {
|
|
int queriesParam = 1;
|
|
int queriesParam = 1;
|
|
try {
|
|
try {
|
|
queriesParam = Integer.parseInt(req.params().get("queries"));
|
|
queriesParam = Integer.parseInt(req.params().get("queries"));
|
|
@@ -101,12 +126,12 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
|
|
private class MongoHandler implements Handler<Message<JsonObject>> {
|
|
private class MongoHandler implements Handler<Message<JsonObject>> {
|
|
private final HttpServerRequest req;
|
|
private final HttpServerRequest req;
|
|
private final int queries;
|
|
private final int queries;
|
|
- private final List<Object> worlds;
|
|
|
|
|
|
+ private final JsonArray worlds;
|
|
|
|
|
|
public MongoHandler(HttpServerRequest request, int queriesParam) {
|
|
public MongoHandler(HttpServerRequest request, int queriesParam) {
|
|
req = request;
|
|
req = request;
|
|
queries = queriesParam;
|
|
queries = queriesParam;
|
|
- worlds = new ArrayList<>(queriesParam);
|
|
|
|
|
|
+ worlds = new JsonArray();
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -114,21 +139,27 @@ public class WebServer extends Verticle implements Handler<HttpServerRequest> {
|
|
JsonObject body = reply.body();
|
|
JsonObject body = reply.body();
|
|
|
|
|
|
if ("ok".equals(body.getString("status"))) {
|
|
if ("ok".equals(body.getString("status"))) {
|
|
|
|
+ body.getObject("result").removeField("_id");
|
|
worlds.add(body.getObject("result"));
|
|
worlds.add(body.getObject("result"));
|
|
if (worlds.size() == this.queries) {
|
|
if (worlds.size() == this.queries) {
|
|
// All queries have completed; send the response.
|
|
// All queries have completed; send the response.
|
|
- String result = Json.encode(worlds);
|
|
|
|
- int contentLength = result.getBytes(StandardCharsets.UTF_8).length;
|
|
|
|
- HttpServerResponse resp = req.response();
|
|
|
|
- resp.putHeader("Content-Type", "application/json; charset=UTF-8");
|
|
|
|
- resp.putHeader("Content-Length", String.valueOf(contentLength));
|
|
|
|
- resp.putHeader("Server", "vert.x");
|
|
|
|
- resp.putHeader("Date", dateString);
|
|
|
|
- resp.end(result);
|
|
|
|
|
|
+ String result = worlds.encode();
|
|
|
|
+ sendResponse(req, result);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
System.err.println("Failed to execute query");
|
|
System.err.println("Failed to execute query");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private void sendResponse(HttpServerRequest req, String result) {
|
|
|
|
+ int contentLength = result.getBytes(StandardCharsets.UTF_8).length;
|
|
|
|
+ HttpServerResponse resp = req.response();
|
|
|
|
+ resp.putHeader("Content-Type", "application/json; charset=UTF-8");
|
|
|
|
+ resp.putHeader("Content-Length", String.valueOf(contentLength));
|
|
|
|
+ resp.putHeader("Server", "vert.x");
|
|
|
|
+ resp.putHeader("Date", dateString);
|
|
|
|
+ resp.end(result);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|