[ https://issues.apache.org/jira/browse/OWB-865?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13667460#comment-13667460 ]
Romain Manni-Bucau commented on OWB-865: ---------------------------------------- In fact it is more or less the same as the other jira. @Specializes means replace super managed bean type by another. Abstract clzss are not manged bean (no need of this annotation) and removing the bean from the types of the managed bean (@Typed) is about the same since the parent bean class doesnt match the java parent class anymore. Then you get the issue because that's not the producer class which is important but the producer returned method type. > @Typed disables specializing class > ---------------------------------- > > Key: OWB-865 > URL: https://issues.apache.org/jira/browse/OWB-865 > Project: OpenWebBeans > Issue Type: Bug > Components: Inheritance, Specialization > Affects Versions: 1.2.1 > Reporter: Reinis Vicups > Attachments: specializes.zip > > > The SpecializedBarProducer @Specializes BaseBarProducer. > Now, annotating both classes with @Typed(Object.class) cause > SpecializedBarProducer beeing ignored (or in other words - the @Specializes > being ignored). See attached testcase BarTest. > If only BaseBarProducer is being annotated with @Typed(Object.class) > following excpetion is thrown: > org.apache.webbeans.exception.WebBeansDeploymentException: > org.apache.webbeans.exception.inject.InconsistentSpecializationException: > WebBean component class : de.orbitx.specializes.SpecializedBarProducer is not > enabled for specialized by the class > de.orbitx.specializes.SpecializedBarProducer class > at > org.apache.webbeans.config.BeansDeployer.checkSpecializations(BeansDeployer.java:709) > at > org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:188) > at > org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:182) > at > org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:158) > at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:798) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:612) > at > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:608) > at > org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:580) > at > org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:664) > at > org.apache.openejb.junit.ApplicationComposer$DeployApplication.evaluate(ApplicationComposer.java:64) > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) > at org.junit.runners.ParentRunner.run(ParentRunner.java:300) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) > Caused by: > org.apache.webbeans.exception.inject.InconsistentSpecializationException: > WebBean component class : de.orbitx.specializes.SpecializedBarProducer is not > enabled for specialized by the class > de.orbitx.specializes.SpecializedBarProducer class > at > org.apache.webbeans.util.WebBeansUtil.configureSpecializations(WebBeansUtil.java:784) > at > org.apache.webbeans.util.WebBeansUtil.configureSpecializations(WebBeansUtil.java:643) > at > org.apache.webbeans.config.BeansDeployer.checkSpecializations(BeansDeployer.java:700) > ... 25 more > All in all the behavior appears to me inconsistent, because either > - annotating both classes as @Typed shall not lead to ignoring the extending > class or > - annotating only the base class shall not lead to exception (since as I > understood the spec @Specializes shall inherit all annotations from the base > class); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira