package io.vertx.example.sync.mongo;
import co.paralleluniverse.fibers.Suspendable;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
import io.vertx.example.util.Runner;
import io.vertx.ext.mongo.MongoClient;
import io.vertx.ext.sync.SyncVerticle;
import java.util.Arrays;
import java.util.List;
import static io.vertx.ext.sync.Sync.awaitResult;
/**
* @author <a href="http://tfox.org">Tim Fox</a>
*/
public class Client extends SyncVerticle {
// Convenience method so you can run it in your IDE
public static void main(String[] args) {
Runner.runExample(Client.class);
}
@Override
@Suspendable
public void start() throws Exception {
JsonObject config = new JsonObject()
.put("connection_string", "mongodb://localhost:27018")
.put("db_name", "my_DB");
// Deploy an embedded mongo database so we can test against that, this can be disabled using embedded-mongo.skip
if (! Boolean.getBoolean("embedded-mongo.skip")) {
String deploymentID = awaitResult(h -> vertx.deployVerticle("service:io.vertx.vertx-mongo-embedded-db", h));
System.out.println("dep id of embedded mongo verticle is " + deploymentID);
}
// Create the client
MongoClient mongo = MongoClient.createShared(vertx, config);
//Create a collection
Void v = awaitResult(h -> mongo.createCollection("users", h));
// Insert some docs:
List<JsonObject> users = Arrays.asList(new JsonObject().put("username", "temporalfox").put("firstname", "Julien").put("password", "bilto"),
new JsonObject().put("username", "purplefox").put("firstname", "Tim").put("password", "wibble"));
for (JsonObject user : users) {
String id = awaitResult(h -> mongo.insert("users", user, h));
System.out.println("Inserted id is " + id);
}
// Now query them
List<JsonObject> results = awaitResult(h -> mongo.find("users", new JsonObject(), h));
System.out.println("Retrieved " + results.size() + " results");
// Print them
results.forEach(System.out::println);
}
}