From 444ba7d9152397f483c5c484da7b7c885ee9a1af Mon Sep 17 00:00:00 2001 From: Clement Escoffier Date: Wed, 2 Oct 2019 08:35:54 +0200 Subject: [PATCH] Update the type of Http Request we get in a filter Test the @Context injection --- docs/src/main/asciidoc/rest-json-guide.adoc | 11 ++- .../io/quarkus/resteasy/test/ContextTest.java | 71 +++++++++++++++++++ 2 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/ContextTest.java diff --git a/docs/src/main/asciidoc/rest-json-guide.adoc b/docs/src/main/asciidoc/rest-json-guide.adoc index efb0e7c935642..2c0a7b92028ba 100644 --- a/docs/src/main/asciidoc/rest-json-guide.adoc +++ b/docs/src/main/asciidoc/rest-json-guide.adoc @@ -426,16 +426,15 @@ Let's use `ContainerRequestFilter` to add logging capability to our service. We ---- package org.acme.rest.json; -import javax.servlet.http.HttpServletRequest; +import io.vertx.core.http.HttpServerRequest; +import org.jboss.logging.Logger; + import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerRequestFilter; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.ext.Provider; -import org.jboss.logging.Logger; - - @Provider public class LoggingFilter implements ContainerRequestFilter { @@ -445,14 +444,14 @@ public class LoggingFilter implements ContainerRequestFilter { UriInfo info; @Context - HttpServletRequest request; + HttpServerRequest request; @Override public void filter(ContainerRequestContext context) { final String method = context.getMethod(); final String path = info.getPath(); - final String address = request.getRemoteAddr(); + final String address = request.remoteAddress().toString(); LOG.infof("Request %s %s from IP %s", method, path, address); } diff --git a/extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/ContextTest.java b/extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/ContextTest.java new file mode 100644 index 0000000000000..978a9ee8b4093 --- /dev/null +++ b/extensions/resteasy/deployment/src/test/java/io/quarkus/resteasy/test/ContextTest.java @@ -0,0 +1,71 @@ +package io.quarkus.resteasy.test; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.SecurityContext; + +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.test.QuarkusUnitTest; +import io.restassured.RestAssured; +import io.vertx.core.Vertx; +import io.vertx.core.http.HttpServerRequest; +import io.vertx.core.http.HttpServerResponse; +import io.vertx.ext.web.RoutingContext; + +public class ContextTest { + + @RegisterExtension + static QuarkusUnitTest runner = new QuarkusUnitTest() + .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) + .addClasses(MyResource.class)); + + @Test + public void testContextInjection() { + Assertions.assertEquals("ok", RestAssured.get("/ctxt").asString()); + } + + @Path("/ctxt") + public static class MyResource { + @Context + HttpServerRequest request; + @Context + HttpServerResponse response; + @Context + Vertx vertx; + @Context + io.vertx.core.Context vertxContext; + @Context + SecurityContext securityContext; + @Context + RoutingContext rc; + + @GET + public String test() { + if (request == null || request.path() == null) { + throw new IllegalStateException("Request not injected"); + } + if (response == null) { + throw new IllegalStateException("Response not injected"); + } + if (rc == null) { + throw new IllegalStateException("Routing Context not injected"); + } + if (vertx == null) { + throw new IllegalStateException("Vert.x not injected"); + } + if (vertxContext == null) { + throw new IllegalStateException("Vert.x context not injected"); + } + if (securityContext == null) { + throw new IllegalStateException("Security context not injected"); + } + return "ok"; + } + } +}