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

Jean-Baptiste Onofré resolved KARAF-5177.
-----------------------------------------
    Resolution: Cannot Reproduce

I'm not able to reproduce your issue. Can you please provide a complete test 
case ?

> Mismatching interface and implementation return type causes generic type loss
> -----------------------------------------------------------------------------
>
>                 Key: KARAF-5177
>                 URL: https://issues.apache.org/jira/browse/KARAF-5177
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-core
>            Reporter: Anton Johansson
>            Priority: Major
>
> Hey!
> We're running a quite old Karaf now, and we have plans on upgrading. We're 
> running 2.4.2.
> We just noticed a very strange and dangerous thing in our environment.
> Say I have an interface:
> {code}
> public interface ITest {
>     Collection<MyType> getTypes();
> }
> {code}
> ... and an implementation:
> {code}
> public class Test implements ITest {
>     List<MyType> getTypes() {
>         return emptyList();
>     }
> }
> {code}
> Notice the mismatching return types. We do some reflection based scanning 
> when we create our services. So if we analyze the class Test, and get the 
> method #getTypes(), and then get the generic return type 
> (#getGenericReturnType()), it will give us the following declaration:
> java.util.Collection
> We should really get this declaration:
> java.util.List<com.mypackage.MyType>
> If I change so the return types match, I do get the correct declaration. As 
> you can see, we lose the generic information about the return type, which is 
> devastation for us. It's also very hard to notice this issue, because the 
> generic return type is only used in some cases, in a clustered environment.
> Do you know why this happens?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to