johnzon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin (JIRA)" <>
Subject [jira] [Created] (JOHNZON-223) Deserialization of objects with generic types leads to an error
Date Wed, 24 Jul 2019 06:52:00 GMT
Kevin created JOHNZON-223:

             Summary: Deserialization of objects with generic types leads to an error
                 Key: JOHNZON-223
             Project: Johnzon
          Issue Type: Bug
          Components: JSON-B
    Affects Versions: 1.1.12
            Reporter: Kevin

In our project we use generic containers e.g. for enums to enrich them with additional information.
For the serialization in Json we use an own adapter.
Serialization in Json works without problems, but deserialization into an object results in
an error:
 javax.json.bind.JsonbException: Cannot cast sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
to java.lang.Class{code}

>From my point of view the problem lies in the method
org.apache.johnzon.mapper.Mappings.findConverter line 570

final ParameterizedType type = ParameterizedType.class.cast(decoratedType.getType());
final Type rawType = type.getRawType();
if (Class.class.isInstance(rawType)
        && Collection.class.isAssignableFrom(Class.class.cast(rawType))
        && type.getActualTypeArguments().length >= 1) {
    typeToTest = type.getActualTypeArguments()[0];
} // TODO: map{code}
The condition checks here whether it is a collection, otherwise nothing else is done for ParameterizedTypes.
However, the variable typeToTest should be set to rawType for ParameterizedTypes so that
a converter can be found afterwards. Otherwise typeToTest remains a ParameterizedType and
the query in line 576 if (converter == null && Class.class.isInstance(typeToTest))
fails and no converter will be searched.


A small test can be found here: []

This message was sent by Atlassian JIRA

View raw message