package mock.controllers.injection;
import com.github.aesteve.vertx.nubes.annotations.Controller;
import com.github.aesteve.vertx.nubes.annotations.mixins.ContentType;
import com.github.aesteve.vertx.nubes.annotations.params.Param;
import com.github.aesteve.vertx.nubes.annotations.params.RequestBody;
import com.github.aesteve.vertx.nubes.annotations.routing.http.GET;
import com.github.aesteve.vertx.nubes.annotations.routing.http.POST;
import com.github.aesteve.vertx.nubes.annotations.services.Service;
import com.github.aesteve.vertx.nubes.marshallers.Payload;
import integration.TestVerticle;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import mock.domains.Dog;
import mock.services.DogService;
@Controller("/inject")
@ContentType("application/json")
public class TestInjectedController {
@Service(TestVerticle.DOG_SERVICE_NAME)
private DogService dogService; // a service must be injected
@Service(TestVerticle.SNOOPY_SERVICE_NAME)
private Dog snoop; // a simple object registered as a service should be injected, too
private Router router;
@GET("/service")
public void getDog(@Param("idx") Integer i, Payload<Dog> payload) {
payload.set(dogService.getDog(i));
}
@GET("/class")
public void getSimpleClass(Payload<Dog> payload) {
payload.set(snoop);
}
@POST("/readBodyAsJsonObject")
public JsonObject readBodyAsJsonObject(@RequestBody JsonObject json) {
return json;
}
@POST("/readBodyAsJsonArray")
public JsonArray readBodyAsJsonArray(@RequestBody JsonArray json) {
return json;
}
@GET("/router")
public JsonObject getRouter() {
return new JsonObject().put("router", router.toString());
}
}