private static boolean isAssignableFrom()

in webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java [298:335]


    private static boolean isAssignableFrom(boolean isDelegateOrEvent, boolean isProducer, ParameterizedType injectionPointType, Class<?> beanType,
                                            Map<Type, Integer> visited)
    {
        Class<?> rawInjectionPointType = getRawType(injectionPointType);
        if (rawInjectionPointType.equals(beanType))
        {
            if (isProducer)
            {
                for (Type t : injectionPointType.getActualTypeArguments())
                {
                    if (!TypeVariable.class.isInstance(t) || !isNotBound(TypeVariable.class.cast(t).getBounds()))
                    {
                        if (!Class.class.isInstance(t) || Object.class != t)
                        {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        if (!rawInjectionPointType.isAssignableFrom(beanType))
        {
            return false;
        }
        if (beanType.getSuperclass() != null && isAssignableFrom(isDelegateOrEvent, isProducer, injectionPointType, beanType.getGenericSuperclass(), visited))
        {
            return true;
        }
        for (Type genericInterface: beanType.getGenericInterfaces())
        {
            if (isAssignableFrom(isDelegateOrEvent, isProducer, injectionPointType, genericInterface, visited))
            {
                return true;
            }
        }
        return false;
    }