You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2022/01/28 17:52:38 UTC
[cxf] branch master updated: Added test case for response entity with annotations (#895)
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new bc36018 Added test case for response entity with annotations (#895)
bc36018 is described below
commit bc36018b48a2e877432a90bf066deda81156183a
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Fri Jan 28 12:52:31 2022 -0500
Added test case for response entity with annotations (#895)
---
.../org/apache/cxf/systest/jaxrs/BookServer20.java | 32 ++++++++++++++++++++++
.../org/apache/cxf/systest/jaxrs/BookStore.java | 14 ++++++++++
.../systest/jaxrs/JAXRS20ClientServerBookTest.java | 14 +++++++++-
3 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
index 4d75eaf..9071b28 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
@@ -22,6 +22,7 @@ package org.apache.cxf.systest.jaxrs;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -30,10 +31,14 @@ import java.lang.annotation.Target;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.net.URI;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Priority;
import javax.servlet.http.HttpServletRequest;
@@ -54,9 +59,12 @@ import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
import javax.ws.rs.ext.ReaderInterceptor;
import javax.ws.rs.ext.ReaderInterceptorContext;
import javax.ws.rs.ext.WriterInterceptor;
@@ -102,6 +110,7 @@ public class BookServer20 extends AbstractServerTestServerBase {
providers.add(new ServerTestFeature());
providers.add(new JacksonJaxbJsonProvider());
providers.add(new IOExceptionMapper());
+ providers.add(new GregorianCalendarMessageBodyWriter());
sf.setApplication(new Application());
sf.setProviders(providers);
sf.setResourceProvider(BookStore.class,
@@ -538,4 +547,27 @@ public class BookServer20 extends AbstractServerTestServerBase {
}
}
+
+ @Provider
+ private class GregorianCalendarMessageBodyWriter implements MessageBodyWriter<GregorianCalendar> {
+ @Override
+ public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+ return GregorianCalendar.class.equals(type);
+ }
+
+ @Override
+ public void writeTo(GregorianCalendar t, Class<?> type, Type genericType, Annotation[] annotations,
+ MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+ throws IOException, WebApplicationException {
+ // Write in the following format: yyyy-MM-dd{ann1,ann2,...}
+ final String str = new SimpleDateFormat("yyyy-MM-dd").format(t.getTime())
+ + "{"
+ + Arrays
+ .stream(annotations)
+ .map(a -> a.annotationType().getName())
+ .collect(Collectors.joining(","))
+ + "}";
+ entityStream.write(str.getBytes());
+ }
+ }
}
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
index 1810e53..87bd56a 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
@@ -82,6 +82,7 @@ import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -1815,6 +1816,19 @@ public class BookStore {
.build();
}
+ @GET
+ @Path("/annotated/{bookId}/")
+ @Produces(MediaType.TEXT_PLAIN)
+ public Response getGenericBookDate(@PathParam("bookId") String id) {
+ @Provider
+ @Consumes
+ class AnnotatedClass {
+ }
+
+ return Response.ok().entity(new GregorianCalendar(2020, 00, 01),
+ AnnotatedClass.class.getAnnotations()).build();
+ }
+
public final String init() {
books.clear();
cds.clear();
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
index b4b084f..0f0f5e2 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
@@ -961,7 +961,19 @@ public class JAXRS20ClientServerBookTest extends AbstractBusClientServerTestBase
}
}
-
+ @Test
+ public void testGetBookDateAnnotated() throws Exception {
+ final String response = ClientBuilder
+ .newClient()
+ .target("http://localhost:" + PORT + "/bookstore/annotated/123")
+ .request(MediaType.TEXT_PLAIN)
+ .get()
+ .readEntity(String.class);
+
+ assertThat(response, equalTo("2020-01-01{javax.ws.rs.GET,javax.ws.rs.Path,javax.ws.rs.Produces,"
+ + "javax.ws.rs.ext.Provider,javax.ws.rs.Consumes}"));
+ }
+
private static class ReplaceBodyFilter implements ClientRequestFilter {
@Override