You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2016/09/06 18:09:21 UTC

[jira] [Resolved] (ARIES-1500) Fix wildcard types support

     [ https://issues.apache.org/jira/browse/ARIES-1500?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet resolved ARIES-1500.
------------------------------------
    Resolution: Fixed

Blueprint does strict checking.  In your example, there's no way to ensure you won't run into a ClassCastException, so blueprint refuses to inject.  If you change the constructor to accept a WritableValue instead of WritableValue<String>, then it will work fine.

Also, in this very case, you can use the WritableStringValue and a bean of type SimpleStringProperty ;-)
You could also use a custom converter.

I think our implementation goes way beyond what the OSGi spec says.  I think if we want to go beyond, i.e. allow non enforceable casts, we need a flag somewhere to turn on this feature.  If you want to provide a patch to go that way, please open a new jira.

> Fix wildcard types support
> --------------------------
>
>                 Key: ARIES-1500
>                 URL: https://issues.apache.org/jira/browse/ARIES-1500
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>    Affects Versions: blueprint-core-1.5.0
>         Environment: All
>            Reporter: Jean-Philippe CLEMENT
>            Assignee: Guillaume Nodet
>             Fix For: blueprint-core-1.6.0
>
>         Attachments: org.apache.aries.blueprint.core-1.6.0-SNAPSHOT.jar
>
>
> Let's take a bean with the method setSomething(Something<T>) called via blueprint with another bean implementing Something => exception saying that bean conversion is not possible. But, if I change the method signature without the generic type setSomething(Something), then it works as expected.
> Blueprint should not care for the generic type as Java is type erasure and do not exceed the spec.
> There is no nice work around. Have to change all APIs used via Blueprint and take note for all deviations. This is really heavy.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)