[weld-issues] [JBoss JIRA] (WELD-1102) Bean type Foo<B extends Bar> not assignable to required type Foo<Bar<Integer>>

Marko Lukša (JIRA) jira-events at lists.jboss.org
Wed Apr 4 05:59:47 EDT 2012


Marko Lukša created WELD-1102:
---------------------------------

             Summary: Bean type Foo<B extends Bar> not assignable to required type Foo<Bar<Integer>>
                 Key: WELD-1102
                 URL: https://issues.jboss.org/browse/WELD-1102
             Project: Weld
          Issue Type: Bug
            Reporter: Marko Lukša
            Assignee: Marko Lukša


There is a strange piece of code in {{org.jboss.weld.util.reflection.Reflections}}:

{code}
    public static boolean isAssignableFrom(Class<?> rawType1, Type[] actualTypeArguments1, Type type2) {
        ...
        } else if (type2 instanceof TypeVariable<?>) {
            TypeVariable<?> typeVariable = (TypeVariable<?>) type2;
            if (isTypeBounded(rawType1, actualTypeArguments1, typeVariable.getBounds())) {  <--- suspicious!
                return true;
            }
        }
        ...
    }

    public static boolean isTypeBounded(Type type, Type[] lowerBounds, Type[] upperBounds) {
        if (lowerBounds.length > 0) {
            if (!isAssignableFrom(type, lowerBounds)) {
                return false;
            }
        }
        if (upperBounds.length > 0) {
            if (!isAssignableFrom(upperBounds, type)) {
                return false;
            }
        }
        return true;
    }

{code}

What's strange is that {{isTypeBounded()}} is called with actualTypeArguments1, which are actual type arguments of type1 (and not type2!). 

The result is that the bean type {{Foo<B extends Bar>}} is assignable to {{Foo<Bar<Baz>>}} (if Baz extends Bar), but it is NOT assignable to {{Foo<Bar<Integer>>}} just because Bar is not assignable from Integer. 






--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the weld-issues mailing list