I have found a bug that looks very similar to
WELD-2407 on releases that contain the fix.
If a class implements two interfaces, one of which is a generic interface with an default implementation of a method. The other is a non-generic interface, which extends an generic interface that has a non-default deceleration of that same method, then I can see the same exception as
WELD-2407. I have attached a recreate file with source which will make it a lot clearer.
This is purely speculative, but perhaps when weld builds the proxy it is seeing the regular deceleration first and then ignoring the default method as a duplicate?
I have tested this on IBM liberty with weld 2.4.8 and 3.1.0, and I have attached an FFDC file that contains the stack.
I have also attached a war file with sources that demonstrates the problem. Inside the war file there are three packages
- simple - which does not recreate the problem. I have left this here in order to provide a counter example.
- exact - which recreates the problem using the same type hierarchy as the customer who reported this problem to me.
- medium - where I simplified the type hierarchy a little.