@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<? extends Map<?, ?>> create(Type type, Genson genson) { // ok this is a fix but not the cleanest one... we make sure it is a parameterized type // otherwise we search for map impl in its hierarchy Type expandedType = type; if (getRawClass(type).getTypeParameters().length == 0) { expandedType = expandType(lookupGenericType(Map.class, getRawClass(type)), type); } Type keyType = typeOf(0, expandedType); Type valueType = typeOf(1, expandedType); Class<?> keyRawClass = getRawClass(keyType); KeyAdapter<?> keyAdapter = keyAdapter(keyRawClass); if (keyAdapter != null) return createConverter(getRawClass(type), keyAdapter, genson.provideConverter(valueType)); else return new ComplexMapConverter(genson.provideConverter(keyType), genson.provideConverter(valueType)); }
@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<? extends Map<?, ?>> create(Type type, Genson genson) { // ok this is a fix but not the cleanest one... we make sure it is a parameterized type // otherwise we search for map impl in its hierarchy Type expandedType = type; if (getRawClass(type).getTypeParameters().length == 0) { expandedType = expandType(lookupGenericType(Map.class, getRawClass(type)), type); } Type keyType = typeOf(0, expandedType); Type valueType = typeOf(1, expandedType); Class<?> keyRawClass = getRawClass(keyType); KeyAdapter<?> keyAdapter = keyAdapter(keyRawClass); if (keyAdapter != null) return createConverter(getRawClass(type), keyAdapter, genson.provideConverter(valueType)); else return new ComplexMapConverter(genson.provideConverter(keyType), genson.provideConverter(valueType)); }