Sorry for the wait, it took me a while to extract a reproducible testcase from our code. I think I've constructed a reproduction now (see testcase-weld-2501.tar.gz) by basing it on what exactly we were doing. I've included a check to make sure the decorator itself was working :-).
When I run Weld2501Test using `mvn -Dtest=Weld2501Test test` I get:
{code} ------------------------------------------------------- T E S T S ------------------------------------------------------- Running org.jboss.weld.tests.decorators.defaultmethod.weld2501.Weld2501Test Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.053 sec <<< FAILURE! - in org.jboss.weld.tests.decorators.defaultmethod.weld2501.Weld2501Test testDefaultMethodGetsIntercepted(org.jboss.weld.tests.decorators.defaultmethod.weld2501.Weld2501Test) Time elapsed: 0.044 sec <<< FAILURE! java.lang.AssertionError: A method with default implementation in an interface should be decorated even when the bean does not override it and it is the *only* decorated method expected:<2> but was:<1> at org.jboss.weld.tests.decorators.defaultmethod.weld2501.Weld2501Test.testDefaultMethodGetsIntercepted(Weld2501Test.java:61)
Results :
Failed tests: Weld2501Test.testDefaultMethodGetsIntercepted:61 A method with default implementation in an interface should be decorated even when the bean does not override it and it is the *only* decorated method expected:<2> but was:<1>
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 {code}
Funnily enough, the test succeeds if I remove the abstract class from in between the interface and the concrete bean class. I'm not sure why.
If you look at target/surefire-reports/org.jboss.weld.tests.decorators.defaultmethod.weld2501.Weld2501Test-output.txt you'll see the extra decorator gets called for the one decorated method but not for the other. |
|