package io.vertx.codegen.testmodel;
import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import java.util.function.Function;
/**
* @author <a href="mailto:julien@julienviet.com">Julien Viet</a>
*/
public class GenericsTCKImpl implements GenericsTCK {
@Override
public GenericRefedInterface<Byte> methodWithByteParameterizedReturn() {
return methodWithClassTypeParameterizedReturn((byte)123);
}
@Override
public GenericRefedInterface<Short> methodWithShortParameterizedReturn() {
return methodWithClassTypeParameterizedReturn((short)1234);
}
@Override
public GenericRefedInterface<Integer> methodWithIntegerParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(123456);
}
@Override
public GenericRefedInterface<Long> methodWithLongParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(123456789L);
}
@Override
public GenericRefedInterface<Float> methodWithFloatParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(0.34F);
}
@Override
public GenericRefedInterface<Double> methodWithDoubleParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(0.314D);
}
@Override
public GenericRefedInterface<Boolean> methodWithBooleanParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(true);
}
@Override
public GenericRefedInterface<Character> methodWithCharacterParameterizedReturn() {
return methodWithClassTypeParameterizedReturn('F');
}
@Override
public GenericRefedInterface<String> methodWithStringParameterizedReturn() {
return methodWithClassTypeParameterizedReturn("zoumbawe");
}
@Override
public GenericRefedInterface<JsonObject> methodWithJsonObjectParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(new JsonObject().put("cheese", "stilton"));
}
@Override
public GenericRefedInterface<JsonArray> methodWithJsonArrayParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(new JsonArray().add("cheese").add("stilton"));
}
@Override
public GenericRefedInterface<TestDataObject> methodWithDataObjectParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(new TestDataObject().setWibble(3.14).setFoo("foo_value").setBar(123456));
}
@Override
public GenericRefedInterface<TestEnum> methodWithEnumParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(TestEnum.WESTON);
}
@Override
public GenericRefedInterface<TestGenEnum> methodWithGenEnumParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(TestGenEnum.LELAND);
}
@Override
public GenericRefedInterface<RefedInterface1> methodWithUserTypeParameterizedReturn() {
return methodWithClassTypeParameterizedReturn(new RefedInterface1Impl().setString("foo"));
}
@Override
public void methodWithHandlerByteParameterized(Handler<GenericRefedInterface<Byte>> handler) {
handler.handle(methodWithByteParameterizedReturn());
}
@Override
public void methodWithHandlerShortParameterized(Handler<GenericRefedInterface<Short>> handler) {
handler.handle(methodWithShortParameterizedReturn());
}
@Override
public void methodWithHandlerIntegerParameterized(Handler<GenericRefedInterface<Integer>> handler) {
handler.handle(methodWithIntegerParameterizedReturn());
}
@Override
public void methodWithHandlerLongParameterized(Handler<GenericRefedInterface<Long>> handler) {
handler.handle(methodWithLongParameterizedReturn());
}
@Override
public void methodWithHandlerFloatParameterized(Handler<GenericRefedInterface<Float>> handler) {
handler.handle(methodWithFloatParameterizedReturn());
}
@Override
public void methodWithHandlerDoubleParameterized(Handler<GenericRefedInterface<Double>> handler) {
handler.handle(methodWithDoubleParameterizedReturn());
}
@Override
public void methodWithHandlerBooleanParameterized(Handler<GenericRefedInterface<Boolean>> handler) {
handler.handle(methodWithBooleanParameterizedReturn());
}
@Override
public void methodWithHandlerCharacterParameterized(Handler<GenericRefedInterface<Character>> handler) {
handler.handle(methodWithCharacterParameterizedReturn());
}
@Override
public void methodWithHandlerStringParameterized(Handler<GenericRefedInterface<String>> handler) {
handler.handle(methodWithStringParameterizedReturn());
}
@Override
public void methodWithHandlerJsonObjectParameterized(Handler<GenericRefedInterface<JsonObject>> handler) {
handler.handle(methodWithJsonObjectParameterizedReturn());
}
@Override
public void methodWithHandlerJsonArrayParameterized(Handler<GenericRefedInterface<JsonArray>> handler) {
handler.handle(methodWithJsonArrayParameterizedReturn());
}
@Override
public void methodWithHandlerDataObjectParameterized(Handler<GenericRefedInterface<TestDataObject>> handler) {
handler.handle(methodWithDataObjectParameterizedReturn());
}
@Override
public void methodWithHandlerEnumParameterized(Handler<GenericRefedInterface<TestEnum>> handler) {
handler.handle(methodWithEnumParameterizedReturn());
}
@Override
public void methodWithHandlerGenEnumParameterized(Handler<GenericRefedInterface<TestGenEnum>> handler) {
handler.handle(methodWithGenEnumParameterizedReturn());
}
@Override
public void methodWithHandlerUserTypeParameterized(Handler<GenericRefedInterface<RefedInterface1>> handler) {
handler.handle(methodWithUserTypeParameterizedReturn());
}
@Override
public void methodWithHandlerAsyncResultByteParameterized(Handler<AsyncResult<GenericRefedInterface<Byte>>> handler) {
handler.handle(Future.succeededFuture(methodWithByteParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultShortParameterized(Handler<AsyncResult<GenericRefedInterface<Short>>> handler) {
handler.handle(Future.succeededFuture(methodWithShortParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultIntegerParameterized(Handler<AsyncResult<GenericRefedInterface<Integer>>> handler) {
handler.handle(Future.succeededFuture(methodWithIntegerParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultLongParameterized(Handler<AsyncResult<GenericRefedInterface<Long>>> handler) {
handler.handle(Future.succeededFuture(methodWithLongParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultFloatParameterized(Handler<AsyncResult<GenericRefedInterface<Float>>> handler) {
handler.handle(Future.succeededFuture(methodWithFloatParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultDoubleParameterized(Handler<AsyncResult<GenericRefedInterface<Double>>> handler) {
handler.handle(Future.succeededFuture(methodWithDoubleParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultBooleanParameterized(Handler<AsyncResult<GenericRefedInterface<Boolean>>> handler) {
handler.handle(Future.succeededFuture(methodWithBooleanParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultCharacterParameterized(Handler<AsyncResult<GenericRefedInterface<Character>>> handler) {
handler.handle(Future.succeededFuture(methodWithCharacterParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultStringParameterized(Handler<AsyncResult<GenericRefedInterface<String>>> handler) {
handler.handle(Future.succeededFuture(methodWithStringParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultJsonObjectParameterized(Handler<AsyncResult<GenericRefedInterface<JsonObject>>> handler) {
handler.handle(Future.succeededFuture(methodWithJsonObjectParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultJsonArrayParameterized(Handler<AsyncResult<GenericRefedInterface<JsonArray>>> handler) {
handler.handle(Future.succeededFuture(methodWithJsonArrayParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultDataObjectParameterized(Handler<AsyncResult<GenericRefedInterface<TestDataObject>>> handler) {
handler.handle(Future.succeededFuture(methodWithDataObjectParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultEnumParameterized(Handler<AsyncResult<GenericRefedInterface<TestEnum>>> handler) {
handler.handle(Future.succeededFuture(methodWithEnumParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultGenEnumParameterized(Handler<AsyncResult<GenericRefedInterface<TestGenEnum>>> handler) {
handler.handle(Future.succeededFuture(methodWithGenEnumParameterizedReturn()));
}
@Override
public void methodWithHandlerAsyncResultUserTypeParameterized(Handler<AsyncResult<GenericRefedInterface<RefedInterface1>>> handler) {
handler.handle(Future.succeededFuture(methodWithUserTypeParameterizedReturn()));
}
@Override
public void methodWithFunctionParamByteParameterized(Function<GenericRefedInterface<Byte>, String> handler) {
handler.apply(methodWithByteParameterizedReturn());
}
@Override
public void methodWithFunctionParamShortParameterized(Function<GenericRefedInterface<Short>, String> handler) {
handler.apply(methodWithShortParameterizedReturn());
}
@Override
public void methodWithFunctionParamIntegerParameterized(Function<GenericRefedInterface<Integer>, String> handler) {
handler.apply(methodWithIntegerParameterizedReturn());
}
@Override
public void methodWithFunctionParamLongParameterized(Function<GenericRefedInterface<Long>, String> handler) {
handler.apply(methodWithLongParameterizedReturn());
}
@Override
public void methodWithFunctionParamFloatParameterized(Function<GenericRefedInterface<Float>, String> handler) {
handler.apply(methodWithFloatParameterizedReturn());
}
@Override
public void methodWithFunctionParamDoubleParameterized(Function<GenericRefedInterface<Double>, String> handler) {
handler.apply(methodWithDoubleParameterizedReturn());
}
@Override
public void methodWithFunctionParamBooleanParameterized(Function<GenericRefedInterface<Boolean>, String> handler) {
handler.apply(methodWithBooleanParameterizedReturn());
}
@Override
public void methodWithFunctionParamCharacterParameterized(Function<GenericRefedInterface<Character>, String> handler) {
handler.apply(methodWithCharacterParameterizedReturn());
}
@Override
public void methodWithFunctionParamStringParameterized(Function<GenericRefedInterface<String>, String> handler) {
handler.apply(methodWithStringParameterizedReturn());
}
@Override
public void methodWithFunctionParamJsonObjectParameterized(Function<GenericRefedInterface<JsonObject>, String> handler) {
handler.apply(methodWithJsonObjectParameterizedReturn());
}
@Override
public void methodWithFunctionParamJsonArrayParameterized(Function<GenericRefedInterface<JsonArray>, String> handler) {
handler.apply(methodWithJsonArrayParameterizedReturn());
}
@Override
public void methodWithFunctionParamDataObjectParameterized(Function<GenericRefedInterface<TestDataObject>, String> handler) {
handler.apply(methodWithDataObjectParameterizedReturn());
}
@Override
public void methodWithFunctionParamEnumParameterized(Function<GenericRefedInterface<TestEnum>, String> handler) {
handler.apply(methodWithEnumParameterizedReturn());
}
@Override
public void methodWithFunctionParamGenEnumParameterized(Function<GenericRefedInterface<TestGenEnum>, String> handler) {
handler.apply(methodWithGenEnumParameterizedReturn());
}
@Override
public void methodWithFunctionParamUserTypeParameterized(Function<GenericRefedInterface<RefedInterface1>, String> handler) {
handler.apply(methodWithUserTypeParameterizedReturn());
}
@Override
public <U> GenericRefedInterface<U> methodWithClassTypeParameterizedReturn(Class<U> type) {
if (type == Byte.class) {
return (GenericRefedInterface<U>) methodWithByteParameterizedReturn();
}
if (type == Short.class) {
return (GenericRefedInterface<U>) methodWithShortParameterizedReturn();
}
if (type == Integer.class) {
return (GenericRefedInterface<U>) methodWithIntegerParameterizedReturn();
}
if (type == Long.class) {
return (GenericRefedInterface<U>) methodWithLongParameterizedReturn();
}
if (type == Float.class) {
return (GenericRefedInterface<U>) methodWithFloatParameterizedReturn();
}
if (type == Double.class) {
return (GenericRefedInterface<U>) methodWithDoubleParameterizedReturn();
}
if (type == Boolean.class) {
return (GenericRefedInterface<U>) methodWithBooleanParameterizedReturn();
}
if (type == Character.class) {
return (GenericRefedInterface<U>) methodWithCharacterParameterizedReturn();
}
if (type == String.class) {
return (GenericRefedInterface<U>) methodWithStringParameterizedReturn();
}
if (type == JsonObject.class) {
return (GenericRefedInterface<U>) methodWithJsonObjectParameterizedReturn();
}
if (type == JsonArray.class) {
return (GenericRefedInterface<U>) methodWithJsonArrayParameterizedReturn();
}
if (type == TestDataObject.class) {
return (GenericRefedInterface<U>) methodWithDataObjectParameterizedReturn();
}
if (type == TestEnum.class) {
return (GenericRefedInterface<U>) methodWithEnumParameterizedReturn();
}
if (type == TestGenEnum.class) {
return (GenericRefedInterface<U>) methodWithGenEnumParameterizedReturn();
}
if (type == RefedInterface1.class) {
return (GenericRefedInterface<U>) methodWithUserTypeParameterizedReturn();
}
throw new AssertionError("Unexpected type " + type);
}
@Override
public <U> U methodWithClassTypeReturn(Class<U> type) {
return methodWithClassTypeParameterizedReturn(type).getValue();
}
@Override
public <U> void methodWithClassTypeParam(Class<U> type, U u) {
GenericRefedInterface<U> gen = methodWithClassTypeParameterizedReturn(type);
if (!u.equals(gen.getValue())) {
throw new AssertionError("Unexpected value " + u + "/" + u.getClass() + " != " + gen.getValue() + "/" + gen.getValue().getClass());
}
}
@Override
public <U> void methodWithClassTypeHandler(Class<U> type, Handler<U> f) {
f.handle(methodWithClassTypeReturn(type));
}
@Override
public <U> void methodWithClassTypeHandlerAsyncResult(Class<U> type, Handler<AsyncResult<U>> f) {
f.handle(Future.succeededFuture(methodWithClassTypeReturn(type)));
}
@Override
public <U> void methodWithClassTypeFunctionParam(Class<U> type, Function<U, String> f) {
f.apply(methodWithClassTypeReturn(type));
}
@Override
public <U> void methodWithClassTypeFunctionReturn(Class<U> type, Function<String, U> f) {
methodWithClassTypeParam(type, f.apply("whatever"));
}
@Override
public <U> void methodWithHandlerClassTypeParameterized(Class<U> type, Handler<GenericRefedInterface<U>> handler) {
handler.handle(methodWithClassTypeParameterizedReturn(type));
}
@Override
public <U> void methodWithHandlerAsyncResultClassTypeParameterized(Class<U> type, Handler<AsyncResult<GenericRefedInterface<U>>> handler) {
handler.handle(Future.succeededFuture(methodWithClassTypeParameterizedReturn(type)));
}
@Override
public <U> void methodWithFunctionParamClassTypeParameterized(Class<U> type, Function<GenericRefedInterface<U>, String> function) {
function.apply(methodWithClassTypeParameterizedReturn(type));
}
private <U> GenericRefedInterface<U> methodWithClassTypeParameterizedReturn(U val) {
GenericRefedInterfaceImpl<U> obj = new GenericRefedInterfaceImpl<>();
obj.setValue(val);
return obj;
}
@Override
public InterfaceWithApiArg interfaceWithApiArg(RefedInterface1 value) {
return new InterfaceWithApiArg() {
private RefedInterface1 val = value;
@Override
public void meth() {
}
@Override
public GenericRefedInterface<RefedInterface1> setValue(RefedInterface1 value) {
val = value;
return this;
}
@Override
public RefedInterface1 getValue() {
return val;
}
};
}
@Override
public InterfaceWithStringArg interfaceWithStringArg(String value) {
return new InterfaceWithStringArg() {
private String val = value;
@Override
public void meth() {
}
@Override
public GenericRefedInterface<String> setValue(String value) {
val = value;
return this;
}
@Override
public String getValue() {
return val;
}
};
}
@Override
public <T, U> InterfaceWithVariableArg<T, U> interfaceWithVariableArg(T value1, Class<U> type, U value2) {
return new InterfaceWithVariableArg<T, U>() {
private T val1 = value1;
private U val2 = value2;
@Override
public void setOtherValue(T value) {
val1 = value;
}
@Override
public T getOtherValue() {
return val1;
}
@Override
public GenericRefedInterface<U> setValue(U value) {
val2 = value;
return this;
}
@Override
public U getValue() {
return val2;
}
};
}
@Override
public GenericNullableRefedInterface<RefedInterface1> methodWithGenericNullableApiReturn(boolean notNull) {
return new GenericNullableRefedInterface<RefedInterface1>() {
@Override
public RefedInterface1 getValue() {
return notNull ? new RefedInterface1Impl().setString("the_string_value") : null;
}
};
}
@Override
public void methodWithHandlerGenericNullableApi(boolean notNull, Handler<GenericNullableRefedInterface<RefedInterface1>> handler) {
handler.handle(methodWithGenericNullableApiReturn(notNull));
}
@Override
public void methodWithHandlerAsyncResultGenericNullableApi(boolean notNull, Handler<AsyncResult<GenericNullableRefedInterface<RefedInterface1>>> handler) {
handler.handle(Future.succeededFuture(methodWithGenericNullableApiReturn(notNull)));
}
@Override
public <T> GenericRefedInterface<T> methodWithParamInferedReturn(GenericRefedInterface<T> param) {
return param;
}
@Override
public <T> void methodWithHandlerParamInfered(GenericRefedInterface<T> param, Handler<GenericRefedInterface<T>> handler) {
handler.handle(param);
}
@Override
public <T> void methodWithHandlerAsyncResultParamInfered(GenericRefedInterface<T> param, Handler<AsyncResult<GenericRefedInterface<T>>> handler) {
handler.handle(Future.succeededFuture(param));
}
}