You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2019/09/28 15:21:52 UTC

[johnzon] branch master updated: JOHNZON-282 harnessing ParameterizedType usage for library handling of readers

This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git


The following commit(s) were added to refs/heads/master by this push:
     new b18c183  JOHNZON-282 harnessing ParameterizedType usage for library handling of readers
b18c183 is described below

commit b18c183bd430a8da6b15435114240a8259ca1021
Author: Romain Manni-Bucau <rm...@apache.org>
AuthorDate: Sat Sep 28 17:21:43 2019 +0200

    JOHNZON-282 harnessing ParameterizedType usage for library handling of readers
---
 .../java/org/apache/johnzon/jsonb/JsonbAccessMode.java     | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
index 7f6ddaa..4d19dff 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
@@ -1038,17 +1038,17 @@ public class JsonbAccessMode implements AccessMode, Closeable {
     }
 
     private boolean hasRawType(final Type type) {
-        return Class.class.isInstance(type) || ParameterizedType.class.isInstance(type);
+        return Class.class.isInstance(type) ||
+            (ParameterizedType.class.isInstance(type) &&
+                    Class.class.isInstance(ParameterizedType.class.cast(type).getRawType()));
     }
 
-    private Class<?> getRawType(final Type type) {
-        if (!Class.class.isInstance(type) && !ParameterizedType.class.isInstance(type)) {
-            throw new IllegalStateException("Unsupported generic type " + type.getClass().getName());
-        } else if (Class.class.isInstance(type)) {
+    private Class<?> getRawType(final Type type) { // only intended to be used after hasRawType check
+        if (Class.class.isInstance(type)) {
             return Class.class.cast(type);
-        } else /*if (ParameterizedType.class.isInstance(type))*/ {
-            return Class.class.cast(ParameterizedType.class.cast(type).getRawType());
         }
+        // ParameterizedType + Class raw type
+        return Class.class.cast(ParameterizedType.class.cast(type).getRawType());
     }
 
     private static class ClassDecoratedType implements DecoratedType {