[ 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)