aries-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From csie...@apache.org
Subject [2/2] aries-jax-rs-whiteboard git commit: Spec mandates to store null
Date Thu, 15 Feb 2018 14:32:41 GMT
Spec mandates to store null

when no @Consumes or @Produces annotation is present


Project: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/commit/4d04b13b
Tree: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/tree/4d04b13b
Diff: http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/diff/4d04b13b

Branch: refs/heads/master
Commit: 4d04b13b37f8c866c16f0a171f0f16a5158e768d
Parents: 2ac4c23
Author: Carlos Sierra <csierra@apache.org>
Authored: Thu Feb 15 15:28:10 2018 +0100
Committer: Carlos Sierra <csierra@apache.org>
Committed: Thu Feb 15 15:32:15 2018 +0100

----------------------------------------------------------------------
 jax-rs.itests/src/main/java/test/JaxrsTest.java | 12 ++--
 .../introspection/ClassIntrospector.java        | 67 ++++++++++++++++----
 .../introspection/ClassIntrospectorTest.java    | 41 ++++++------
 .../types/ResourceMethodInfoDTOWrapper.java     | 14 ++--
 4 files changed, 85 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/4d04b13b/jax-rs.itests/src/main/java/test/JaxrsTest.java
----------------------------------------------------------------------
diff --git a/jax-rs.itests/src/main/java/test/JaxrsTest.java b/jax-rs.itests/src/main/java/test/JaxrsTest.java
index da66980..3d70015 100644
--- a/jax-rs.itests/src/main/java/test/JaxrsTest.java
+++ b/jax-rs.itests/src/main/java/test/JaxrsTest.java
@@ -140,8 +140,7 @@ public class JaxrsTest extends TestHelper {
         ResourceMethodInfoDTO resourceMethod = resourceMethods[0];
         assertEquals(HttpMethod.GET, resourceMethod.method);
         assertEquals("/", resourceMethod.path);
-        assertArrayEquals(
-            new String[]{MediaType.WILDCARD}, resourceMethod.consumingMimeType);
+        assertNull(resourceMethod.consumingMimeType);
         assertArrayEquals(
             new String[]{MediaType.TEXT_PLAIN},
             resourceMethod.producingMimeType);
@@ -236,8 +235,7 @@ public class JaxrsTest extends TestHelper {
         ResourceMethodInfoDTO resourceMethod = resourceMethods[0];
         assertEquals(HttpMethod.GET, resourceMethod.method);
         assertEquals("/", resourceMethod.path);
-        assertArrayEquals(
-            new String[]{MediaType.WILDCARD}, resourceMethod.consumingMimeType);
+        assertNull(resourceMethod.consumingMimeType);
         assertArrayEquals(
             new String[]{MediaType.TEXT_PLAIN},
             resourceMethod.producingMimeType);
@@ -266,10 +264,8 @@ public class JaxrsTest extends TestHelper {
         ResourceMethodInfoDTO resourceMethod = resourceDTO.resourceMethods[0];
         assertEquals(HttpMethod.GET, resourceMethod.method);
         assertEquals("/{name}", resourceMethod.path);
-        assertArrayEquals(
-            new String[]{MediaType.WILDCARD}, resourceMethod.consumingMimeType);
-        assertArrayEquals(
-            new String[]{MediaType.WILDCARD}, resourceMethod.producingMimeType);
+        assertNull(resourceMethod.consumingMimeType);
+        assertNull(resourceMethod.producingMimeType);
         assertArrayEquals(new String[]{}, resourceMethod.nameBindings);
     }
 

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/4d04b13b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
index e596b30..968eaef 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java
@@ -21,14 +21,19 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.MethodDispatcher;
 import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.jaxrs.utils.AnnotationUtils;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.jaxrs.utils.ResourceUtils;
 import org.osgi.service.jaxrs.runtime.dto.ResourceMethodInfoDTO;
 
+import javax.ws.rs.Consumes;
 import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
+import java.lang.reflect.Method;
 import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -50,8 +55,8 @@ public class ClassIntrospector {
                 clazz, clazz, true, true, bus);
 
         Stream<ResourceMethodInfoDTO> convert = convert(
-            new HashSet<>(), "/", null, _ALL_TYPES_LIST, _ALL_TYPES_LIST,
-            Collections.emptySet(), true, classResourceInfo);
+            new HashSet<>(), "/", null, null, null, Collections.emptySet(),
+            true, classResourceInfo);
 
         return convert.collect(Collectors.toList());
     }
@@ -68,13 +73,17 @@ public class ClassIntrospector {
 
         String path = parentPath + getPathSafe(classResourceInfo);
 
-        List<MediaType> consumeMime = classResourceInfo.getConsumeMime();
-        if (consumeMime.equals(_ALL_TYPES_LIST)) {
+        List<MediaType> consumeMime = getConsumesInfo(
+            classResourceInfo.getResourceClass());
+
+        if (consumeMime == null) {
             consumeMime = defaultConsumeTypes;
         }
 
-        List<MediaType> produceMime = classResourceInfo.getProduceMime();
-        if (consumeMime.equals(_ALL_TYPES_LIST)) {
+        List<MediaType> produceMime = getProducesInfo(
+            classResourceInfo.getResourceClass());
+
+        if (produceMime == null) {
             produceMime = defaultProduceTypes;
         }
 
@@ -89,8 +98,8 @@ public class ClassIntrospector {
         Set<OperationResourceInfo> operationResourceInfos =
             methodDispatcher.getOperationResourceInfos();
 
-        ArrayList<MediaType> consumeParam = new ArrayList<>(consumeMime);
-        ArrayList<MediaType> produceParam = new ArrayList<>(produceMime);
+        List<MediaType> consumeParam = consumeMime == null ? null : new ArrayList<>(consumeMime);
+        List<MediaType> produceParam = produceMime == null ? null : new ArrayList<>(produceMime);
         HashSet<String> nameBindingsParam = new HashSet<>(nameBindings);
 
         Stream<ResourceMethodInfoDTO> stream =
@@ -116,12 +125,16 @@ public class ClassIntrospector {
         Set<String> defaultNameBindings, boolean recurse,
         OperationResourceInfo operationResourceInfo) {
 
-        List<MediaType> consumeTypes = operationResourceInfo.getConsumeTypes();
+        List<MediaType> consumeTypes = getConsumesInfo(
+            operationResourceInfo.getAnnotatedMethod());
+
         if (consumeTypes == null) {
             consumeTypes = defaultConsumeTypes;
         }
 
-        List<MediaType> produceTypes = operationResourceInfo.getProduceTypes();
+        List<MediaType> produceTypes = getProducesInfo(
+            operationResourceInfo.getAnnotatedMethod());
+
         if (produceTypes == null) {
             produceTypes = defaultProduceTypes;
         }
@@ -166,14 +179,16 @@ public class ClassIntrospector {
         ResourceMethodInfoDTO resourceMethodInfoDTO =
             new ResourceMethodInfoDTO();
 
-        resourceMethodInfoDTO.consumingMimeType = consumeTypes.stream().
+        resourceMethodInfoDTO.consumingMimeType = consumeTypes == null ? null :
+            consumeTypes.stream().
             map(
                 MediaType::toString
             ).toArray(
                 String[]::new
             );
 
-        resourceMethodInfoDTO.producingMimeType = produceTypes.stream().
+        resourceMethodInfoDTO.producingMimeType = produceTypes == null ? null :
+            produceTypes.stream().
             map(
                 MediaType::toString
             ).toArray(
@@ -194,6 +209,20 @@ public class ClassIntrospector {
         return Stream.of(resourceMethodInfoDTO);
     }
 
+    private static List<MediaType> getConsumesInfo(Method method) {
+        Consumes consumes = AnnotationUtils.getMethodAnnotation(
+            method, Consumes.class);
+
+        return consumes == null ? null : JAXRSUtils.getMediaTypes(consumes.value());
+    }
+
+    private static List<MediaType> getConsumesInfo(Class<?> clazz) {
+        Consumes consumes = AnnotationUtils.getClassAnnotation(
+            clazz, Consumes.class);
+
+        return consumes == null ? null : JAXRSUtils.getMediaTypes(consumes.value());
+    }
+
     private static String getPathSafe(ClassResourceInfo classResourceInfo) {
         Path path = classResourceInfo.getPath();
         if (path == null) {
@@ -203,4 +232,18 @@ public class ClassIntrospector {
         return path.value();
     }
 
+    private static List<MediaType> getProducesInfo(Method method) {
+        Produces produces = AnnotationUtils.getMethodAnnotation(
+            method, Produces.class);
+
+        return produces == null ? null : JAXRSUtils.getMediaTypes(produces.value());
+    }
+
+    private static List<MediaType> getProducesInfo(Class<?> clazz) {
+        Produces produces = AnnotationUtils.getClassAnnotation(
+            clazz, Produces.class);
+
+        return produces == null ? null : JAXRSUtils.getMediaTypes(produces.value());
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/4d04b13b/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
b/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
index 168640c..867d5a2 100644
--- a/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
+++ b/jax-rs.whiteboard/src/test/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospectorTest.java
@@ -38,6 +38,7 @@ import java.util.stream.Collectors;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 public class ClassIntrospectorTest {
@@ -61,10 +62,8 @@ public class ClassIntrospectorTest {
             resourceMethodInfoDTOS[0];
 
         assertEquals(HttpMethod.GET, resourceMethodInfoDTO.method);
-        assertArrayEquals(
-            ALL_TYPES, resourceMethodInfoDTO.consumingMimeType);
-        assertArrayEquals(
-            ALL_TYPES, resourceMethodInfoDTO.producingMimeType);
+        assertNull(resourceMethodInfoDTO.consumingMimeType);
+        assertNull(resourceMethodInfoDTO.producingMimeType);
         assertEquals("/", resourceMethodInfoDTO.path);
         assertArrayEquals(new String[]{}, resourceMethodInfoDTO.nameBindings);
     }
@@ -94,8 +93,8 @@ public class ClassIntrospectorTest {
             new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.GET;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/";
         resourceMethodInfoDTO.nameBindings = new String[]{"test.types.Bound"};
 
@@ -105,8 +104,8 @@ public class ClassIntrospectorTest {
 
         resourceMethodInfoDTO = new ResourceMethodInfoDTO();
         resourceMethodInfoDTO.method = HttpMethod.POST;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/";
         resourceMethodInfoDTO.nameBindings = new String[]{"test.types.Bound"};
 
@@ -141,8 +140,8 @@ public class ClassIntrospectorTest {
             new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.GET;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/";
         resourceMethodInfoDTO.nameBindings = new String[]{};
 
@@ -153,8 +152,8 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO = new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.POST;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/";
         resourceMethodInfoDTO.nameBindings = new String[]{};
 
@@ -188,8 +187,8 @@ public class ClassIntrospectorTest {
             new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.GET;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common";
         resourceMethodInfoDTO.nameBindings = new String[]{};
 
@@ -201,8 +200,8 @@ public class ClassIntrospectorTest {
             new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.POST;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common";
         resourceMethodInfoDTO.nameBindings = new String[]{};
 
@@ -236,8 +235,8 @@ public class ClassIntrospectorTest {
             new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.GET;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common";
         resourceMethodInfoDTO.nameBindings = new String[]{};
 
@@ -248,8 +247,8 @@ public class ClassIntrospectorTest {
         resourceMethodInfoDTO = new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.POST;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
-        resourceMethodInfoDTO.producingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
+        resourceMethodInfoDTO.producingMimeType = null;
         resourceMethodInfoDTO.path = "/common/different";
         resourceMethodInfoDTO.nameBindings = new String[]{};
 
@@ -283,7 +282,7 @@ public class ClassIntrospectorTest {
             new ResourceMethodInfoDTO();
 
         resourceMethodInfoDTO.method = HttpMethod.GET;
-        resourceMethodInfoDTO.consumingMimeType = ALL_TYPES;
+        resourceMethodInfoDTO.consumingMimeType = null;
         resourceMethodInfoDTO.producingMimeType =
             new String[]{MediaType.APPLICATION_XML};
         resourceMethodInfoDTO.path = "/resource";

http://git-wip-us.apache.org/repos/asf/aries-jax-rs-whiteboard/blob/4d04b13b/jax-rs.whiteboard/src/test/java/test/types/ResourceMethodInfoDTOWrapper.java
----------------------------------------------------------------------
diff --git a/jax-rs.whiteboard/src/test/java/test/types/ResourceMethodInfoDTOWrapper.java
b/jax-rs.whiteboard/src/test/java/test/types/ResourceMethodInfoDTOWrapper.java
index ee10b6b..53eeed4 100644
--- a/jax-rs.whiteboard/src/test/java/test/types/ResourceMethodInfoDTOWrapper.java
+++ b/jax-rs.whiteboard/src/test/java/test/types/ResourceMethodInfoDTOWrapper.java
@@ -21,6 +21,7 @@ package test.types;
 import org.osgi.service.jaxrs.runtime.dto.ResourceMethodInfoDTO;
 
 import java.util.Arrays;
+import java.util.Objects;
 
 public class ResourceMethodInfoDTOWrapper
     extends ResourceMethodInfoDTO {
@@ -44,14 +45,11 @@ public class ResourceMethodInfoDTOWrapper
         ResourceMethodInfoDTO that = (ResourceMethodInfoDTO) o;
 
         return
-            path.equals(that.path) &&
-            method.equals(that.method) &&
-            Arrays.asList(consumingMimeType).equals(
-                Arrays.asList(that.consumingMimeType)) &&
-            Arrays.asList(producingMimeType).equals(
-                Arrays.asList(that.producingMimeType)) &&
-            Arrays.asList(nameBindings).equals(
-                Arrays.asList(that.nameBindings));
+            Objects.equals(path, that.path) &&
+            Objects.equals(method, that.method) &&
+            Arrays.equals(consumingMimeType, that.consumingMimeType) &&
+            Arrays.equals(producingMimeType, that.producingMimeType) &&
+            Arrays.equals(nameBindings, that.nameBindings);
     }
 
 }


Mime
View raw message