package io.vertx.serviceproxy.clustered;
import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.eventbus.ReplyException;
import io.vertx.core.eventbus.ReplyFailure;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.serviceproxy.ServiceException;
import io.vertx.serviceproxy.testmodel.MyServiceException;
import io.vertx.serviceproxy.testmodel.SomeEnum;
import io.vertx.serviceproxy.testmodel.SomeVertxEnum;
import io.vertx.serviceproxy.testmodel.TestDataObject;
import java.util.List;
import java.util.Map;
/**
* @author <a href="http://escoffier.me">Clement Escoffier</a>
*/
public class ServiceProvider implements Service {
@Override
public Service hello(String name, Handler<AsyncResult<String>> result) {
result.handle(Future.succeededFuture("hello " + name));
return this;
}
@Override
public Service methodUsingEnum(SomeEnum e, Handler<AsyncResult<Boolean>> result) {
if (e == SomeEnum.WIBBLE) {
result.handle(Future.succeededFuture(true));
} else {
result.handle(Future.succeededFuture(false));
}
return this;
}
@Override
public Service methodReturningEnum(Handler<AsyncResult<SomeEnum>> result) {
result.handle(Future.succeededFuture(SomeEnum.WIBBLE));
return this;
}
@Override
public Service methodReturningVertxEnum(Handler<AsyncResult<SomeVertxEnum>> result) {
result.handle(Future.succeededFuture(SomeVertxEnum.BAR));
return this;
}
@Override
public Service methodWithJsonObject(JsonObject json, Handler<AsyncResult<JsonObject>> result) {
result.handle(Future.succeededFuture(json));
return this;
}
@Override
public Service methodWithJsonArray(JsonArray json, Handler<AsyncResult<JsonArray>> result) {
result.handle(Future.succeededFuture(json));
return this;
}
@Override
public Service methodWithList(List<String> list, Handler<AsyncResult<List<String>>> result) {
result.handle(Future.succeededFuture(list));
return this;
}
@Override
public Service methodWithDataObject(TestDataObject data, Handler<AsyncResult<TestDataObject>> result) {
result.handle(Future.succeededFuture(data));
return this;
}
@Override
public Service methodWithListOfDataObject(List<TestDataObject> list, Handler<AsyncResult<List<TestDataObject>>> result) {
result.handle(Future.succeededFuture(list));
return this;
}
@Override
public Service methodWithListOfJsonObject(List<JsonObject> list, Handler<AsyncResult<List<JsonObject>>> result) {
result.handle(Future.succeededFuture(list));
return this;
}
@Override
public Service methodWthFailingResult(String input, Handler<AsyncResult<JsonObject>> result) {
if (input.equals("Fail")) {
result.handle(ServiceException.fail(30, "failed!", new JsonObject().put("test", "val")));
} else {
result.handle(MyServiceException.fail(30, "failed!", "some extra"));
}
return this;
}
/*@Override
public Service methodWithMapOfJsonObject(Map<String, JsonObject> map, Handler<AsyncResult<Map<String, JsonObject>>> result) {
result.handle(Future.succeededFuture(map));
return this;
}*/
}