JOHNZON-282 harnessing ParameterizedType usage for library handling of readers
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 @@
}
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 {