diff --git a/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/JakartaRestInterceptor.java b/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/JakartaRestInterceptor.java new file mode 100644 index 000000000..78a1cbb29 --- /dev/null +++ b/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/JakartaRestInterceptor.java @@ -0,0 +1,30 @@ +package io.quarkus.ts.http.minimum.reactive; + +import java.io.IOException; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.ext.Provider; +import jakarta.ws.rs.ext.ReaderInterceptor; +import jakarta.ws.rs.ext.ReaderInterceptorContext; + +import org.jboss.logging.Logger; + +/** + * The type Jakarta rest workflow tracker. + */ +@Provider +@ApplicationScoped +public class JakartaRestInterceptor implements ReaderInterceptor { + + private static final Logger LOG = Logger.getLogger(JakartaRestInterceptor.class); + + @Override + public Object aroundReadFrom(ReaderInterceptorContext context) + throws IOException, WebApplicationException { + LOG.info("Before reading " + context.getGenericType()); + Object entity = context.proceed(); + LOG.info("After reading " + entity); + return entity; + } +} diff --git a/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/Operator.java b/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/Operator.java new file mode 100644 index 000000000..0f5f8b916 --- /dev/null +++ b/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/Operator.java @@ -0,0 +1,22 @@ + +package io.quarkus.ts.http.minimum.reactive; + +public class Operator { + private String name; + + public Operator() { + this.name = null; + } + + public Operator(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/OperatorResource.java b/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/OperatorResource.java new file mode 100644 index 000000000..23660569d --- /dev/null +++ b/http/http-minimum-reactive/src/main/java/io/quarkus/ts/http/minimum/reactive/OperatorResource.java @@ -0,0 +1,27 @@ +package io.quarkus.ts.http.minimum.reactive; + +import jakarta.interceptor.Interceptors; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +import io.smallrye.mutiny.Uni; + +/** + * The OperatorResource. + */ +@Path("/operator") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +@Interceptors({ JakartaRestInterceptor.class }) +public class OperatorResource { + + @POST + public Uni postOperator(Operator operator) { + return Uni.createFrom().item(Response.status(Response.Status.OK) + .entity("Hello " + operator.getName()).build()); + } +} diff --git a/http/http-minimum-reactive/src/test/java/io/quarkus/ts/http/minimum/reactive/OperatorResourceIT.java b/http/http-minimum-reactive/src/test/java/io/quarkus/ts/http/minimum/reactive/OperatorResourceIT.java new file mode 100644 index 000000000..64db0ff74 --- /dev/null +++ b/http/http-minimum-reactive/src/test/java/io/quarkus/ts/http/minimum/reactive/OperatorResourceIT.java @@ -0,0 +1,26 @@ + +package io.quarkus.ts.http.minimum.reactive; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +import org.junit.jupiter.api.Test; + +import io.quarkus.test.junit.QuarkusIntegrationTest; +import io.restassured.http.ContentType; + +@QuarkusIntegrationTest +public class OperatorResourceIT { + + @Test + void executePostOperator() { + given() + .when() + .contentType(ContentType.JSON) + .body(new Operator("operator")) + .post("/operator") + .then() + .statusCode(200) + .body(is("Hello operator")); + } +}