public ParameterizedCollectionType(Type pt) { this.collectionMemberClass = InjectionUtils.getRawType(pt); this.typeArgs = new Type[] {pt}; }
public static Class<?> getRawType(Type genericType) { if (genericType instanceof Class) { return (Class<?>) genericType; } else if (genericType instanceof ParameterizedType) { ParameterizedType paramType = (ParameterizedType)genericType; Type t = paramType.getRawType(); if (t instanceof Class) { return (Class<?>)t; } } else if (genericType instanceof GenericArrayType) { return getRawType(((GenericArrayType)genericType).getGenericComponentType()); } return null; }
public static Class<?> getRawType(Type genericType) { if (genericType instanceof Class) { return (Class<?>) genericType; } else if (genericType instanceof ParameterizedType) { ParameterizedType paramType = (ParameterizedType)genericType; Type t = paramType.getRawType(); if (t instanceof Class) { return (Class<?>)t; } } else if (genericType instanceof GenericArrayType) { return getRawType(((GenericArrayType)genericType).getGenericComponentType()); } return null; }
private static boolean allowedMapListValue(Class<?> cls, Type type) { if (List.class.isAssignableFrom(cls)) { Class<?> listtype = getRawType( getType(((ParameterizedType)type).getActualTypeArguments(), 0)); return InjectionUtils.isPrimitive(listtype); } return false; }
private static boolean allowedMapListValue(Class<?> cls, Type type) { if (List.class.isAssignableFrom(cls)) { Class<?> listtype = getRawType( getType(((ParameterizedType)type).getActualTypeArguments(), 0)); return InjectionUtils.isPrimitive(listtype); } return false; }
private static boolean isSupportedMap(Type genericType) { Class<?> rawType = getRawType(genericType); if (Map.class.isAssignableFrom(rawType) && genericType instanceof ParameterizedType) { ParameterizedType paramType = (ParameterizedType) genericType; if (paramType.getActualTypeArguments().length == 2) { Class<?> firstType = getRawType(getType(paramType.getActualTypeArguments(), 0)); Type secondType = getType(paramType.getActualTypeArguments(), 1); Class<?> secondRawType = getRawType(secondType); return InjectionUtils.isPrimitive(firstType) && (InjectionUtils.isPrimitive(secondRawType) || allowedMapListValue(secondRawType, secondType)); } } return false; }
private static boolean isSupportedMap(Type genericType) { Class<?> rawType = getRawType(genericType); if (Map.class.isAssignableFrom(rawType) && genericType instanceof ParameterizedType) { ParameterizedType paramType = (ParameterizedType) genericType; if (paramType.getActualTypeArguments().length == 2) { Class<?> firstType = getRawType(getType(paramType.getActualTypeArguments(), 0)); Type secondType = getType(paramType.getActualTypeArguments(), 1); Class<?> secondRawType = getRawType(secondType); return InjectionUtils.isPrimitive(firstType) && (InjectionUtils.isPrimitive(secondRawType) || allowedMapListValue(secondRawType, secondType)); } } return false; }
Type[] types = InjectionUtils.getActualTypes(genericType); boolean isJaxbElement = types != null && types.length > 0 && InjectionUtils.getRawType(types[0]) == JAXBElement.class;
public static Type processGenericTypeIfNeeded(Class<?> serviceCls, Class<?> paramCls, Type type) { if (type instanceof TypeVariable) { type = InjectionUtils.getSuperType(serviceCls, (TypeVariable<?>)type); } else if (type instanceof ParameterizedType && ((ParameterizedType)type).getActualTypeArguments()[0] instanceof TypeVariable && isSupportedCollectionOrArray(getRawType(type))) { TypeVariable<?> typeVar = (TypeVariable<?>)((ParameterizedType)type).getActualTypeArguments()[0]; Type theType = InjectionUtils.getSuperType(serviceCls, typeVar); Class<?> cls = theType instanceof Class ? (Class<?>)theType : InjectionUtils.getActualType(theType, 0); type = new ParameterizedCollectionType(cls); } if (type == null || type == Object.class) { type = paramCls; } return type; }
boolean isResolved = false; for (Type bound : bounds) { Class<?> cls = InjectionUtils.getRawType(bound); if (cls != null && (cls == Object.class || cls.isAssignableFrom(expectedType))) { isResolved = true; Class<?> actualClass = InjectionUtils.getRawType(arg); if (actualClass == null) { continue;
boolean isResolved = false; for (int j = 0; j < bounds.length; j++) { Class<?> cls = InjectionUtils.getRawType(bounds[j]); if (cls != null && cls.isAssignableFrom(expectedType)) { isResolved = true; return; Class<?> actualClass = InjectionUtils.getRawType(arg); if (actualClass == null) { continue;
realGenericType = realType; } else { realType = getRawType(types[0]); realGenericType = types[0];
public static Type processGenericTypeIfNeeded(Class<?> serviceCls, Class<?> paramCls, Type type) { if (type instanceof TypeVariable) { type = InjectionUtils.getSuperType(serviceCls, (TypeVariable<?>)type); } else if (type instanceof ParameterizedType) { ParameterizedType pt = (ParameterizedType)type; if (pt.getActualTypeArguments()[0] instanceof TypeVariable && isSupportedCollectionOrArray(getRawType(pt))) { TypeVariable<?> typeVar = (TypeVariable<?>)pt.getActualTypeArguments()[0]; Type theType = InjectionUtils.getSuperType(serviceCls, typeVar); if (theType instanceof Class) { type = new ParameterizedCollectionType((Class<?>)theType); } else { type = processGenericTypeIfNeeded(serviceCls, paramCls, theType); type = new ParameterizedCollectionType(type); } } } if (type == null || type == Object.class) { type = paramCls; } return type; }