Author: dleangen Date: Mon Apr 17 08:45:32 2017 New Revision: 1791667 URL: http://svn.apache.org/viewvc?rev=1791667&view=rev Log: Fix for FELIX-5616
Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/Util.java Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java?rev=1791667&r1=1791666&r2=1791667&view=diff ============================================================================== --- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java (original) +++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java Mon Apr 17 08:45:32 2017 @@ -143,7 +143,7 @@ public class AdapterImpl implements Inte @SuppressWarnings("unchecked") @Override public Object to(Type type) { - List<ConverterFunction<?>> tr = typeRules.get(Util.primitiveToBoxed(type)); + List<ConverterFunction<?>> tr = typeRules.get(Util.baseType(type)); if (tr == null) tr = Collections.emptyList(); List<ConverterFunction<?>> converters = new ArrayList<>(tr.size() + allRules.size()); Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/Util.java URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/Util.java?rev=1791667&r1=1791666&r2=1791667&view=diff ============================================================================== --- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/Util.java (original) +++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/Util.java Mon Apr 17 08:45:32 2017 @@ -21,6 +21,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Arrays; import java.util.Collections; @@ -32,6 +33,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import org.osgi.util.converter.TypeReference; + class Util { private static final Map<Class<?>, Class<?>> boxedClasses; static { @@ -56,6 +59,15 @@ class Util { else return null; } + + static Type baseType(Type type) { + if (type instanceof Class) + return primitiveToBoxed((Class<?>) type); + else if (type instanceof ParameterizedType) + return type; + else + return null; + } static Class<?> primitiveToBoxed(Class<?> cls) { Class<?> boxed = boxedClasses.get(cls);