From 944dc5037e5584d654d9a30eeb1c476555ce04fd Mon Sep 17 00:00:00 2001 From: Tomas Terem Date: Thu, 25 Apr 2019 13:17:54 +0200 Subject: [PATCH] temp --- .../test/interceptor/DynamicFeatureTest.java | 69 +++++++++++++++++++ .../resource/AddDynamicFeature.java | 23 +++++++ .../resource/DynamicFeatureResource.java | 21 ++++++ .../resource/GreetingInterceptor.java | 20 ++++++ 4 files changed, 133 insertions(+) create mode 100644 testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/DynamicFeatureTest.java create mode 100644 testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/AddDynamicFeature.java create mode 100644 testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/DynamicFeatureResource.java create mode 100644 testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/GreetingInterceptor.java diff --git a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/DynamicFeatureTest.java b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/DynamicFeatureTest.java new file mode 100644 index 00000000000..2e165cd1397 --- /dev/null +++ b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/DynamicFeatureTest.java @@ -0,0 +1,69 @@ +package org.jboss.resteasy.test.interceptor; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.container.test.api.RunAsClient; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.logging.Logger; +import org.jboss.resteasy.test.interceptor.resource.AddDynamicFeature; +import org.jboss.resteasy.test.interceptor.resource.DynamicFeatureResource; +import org.jboss.resteasy.test.interceptor.resource.GreetingInterceptor; +import org.jboss.resteasy.utils.PortProviderUtil; +import org.jboss.resteasy.utils.TestUtil; +import org.jboss.shrinkwrap.api.Archive; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; + +/** + * @tpSubChapter Resteasy-client + * @tpChapter Integration tests + * @tpTestCaseDetails Test for DynamicFeature + * @tpSince RESTEasy 3.8.0 + */ +@RunWith(Arquillian.class) +@RunAsClient +public class DynamicFeatureTest { + + private static final Logger LOG = Logger.getLogger(DynamicFeatureTest.class.getName()); + + static Client client; + + @Deployment + public static Archive deploy() { + WebArchive war = TestUtil.prepareArchive(DynamicFeatureTest.class.getSimpleName()); + war.addClasses(GreetingInterceptor.class); + return TestUtil.finishContainerPrepare(war, null, DynamicFeatureResource.class, AddDynamicFeature.class); + } + + @BeforeClass + public static void setup() { + client = ClientBuilder.newClient(); + } + + @AfterClass + public static void cleanup() { + client.close(); + } + + /** + * @tpTestDetails Test dynamic feature. + * @tpSince RESTEasy 3.8.0 + */ + @Test + public void testDynamicFeature() { + WebTarget target = client.target(PortProviderUtil.generateURL("/dynamic-feature/hello", DynamicFeatureTest.class.getSimpleName())); + Entity entity = Entity.entity( "Tomas", MediaType.TEXT_PLAIN); + String response = target.request().post(entity, String.class); + Assert.assertEquals("Hello Tomas !", response); + LOG.info("Response: " + response); + } +} diff --git a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/AddDynamicFeature.java b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/AddDynamicFeature.java new file mode 100644 index 00000000000..4058f8b8354 --- /dev/null +++ b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/AddDynamicFeature.java @@ -0,0 +1,23 @@ +package org.jboss.resteasy.test.interceptor.resource; + +import org.jboss.logging.Logger; + +import javax.ws.rs.container.DynamicFeature; +import javax.ws.rs.container.ResourceInfo; +import javax.ws.rs.core.FeatureContext; +import javax.ws.rs.ext.Provider; + +@Provider +public class AddDynamicFeature implements DynamicFeature { + + private static final Logger LOG = Logger.getLogger(AddDynamicFeature.class.getName()); + + @Override + public void configure(ResourceInfo resourceInfo, FeatureContext context) { + if (resourceInfo.getResourceMethod().getName().equals("hello")) { + context.register(GreetingInterceptor.class); + LOG.error("This should be happening exactly once"); + } + } + +} diff --git a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/DynamicFeatureResource.java b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/DynamicFeatureResource.java new file mode 100644 index 00000000000..6a4600bcd19 --- /dev/null +++ b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/DynamicFeatureResource.java @@ -0,0 +1,21 @@ +package org.jboss.resteasy.test.interceptor.resource; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +@Path("/dynamic-feature") +public class DynamicFeatureResource { + + @Path("/hello") + @GET + @POST + @Produces("text/plain") + @Consumes("text/plain") + public String hello(String name) { + return name; + } + +} diff --git a/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/GreetingInterceptor.java b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/GreetingInterceptor.java new file mode 100644 index 00000000000..2bf74b95008 --- /dev/null +++ b/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/interceptor/resource/GreetingInterceptor.java @@ -0,0 +1,20 @@ +package org.jboss.resteasy.test.interceptor.resource; + +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.ext.WriterInterceptor; +import javax.ws.rs.ext.WriterInterceptorContext; +import java.io.IOException; + +public class GreetingInterceptor implements WriterInterceptor { + + @Override + public void aroundWriteTo(WriterInterceptorContext context) + throws IOException, WebApplicationException { + String entity = (String) context.getEntity(); + if (entity != null) { + context.setEntity("Hello " + entity + " !"); + } + context.proceed(); + } + +}