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

Teemu Andersén updated OWB-737:
-------------------------------

    Priority: Major  (was: Minor)

Minor=>Major: Major seems to be more consistent with other open issues.
                
> @specializes @alternative child class disables super class even when not 
> enabled when using stereotypes
> -------------------------------------------------------------------------------------------------------
>
>                 Key: OWB-737
>                 URL: https://issues.apache.org/jira/browse/OWB-737
>             Project: OpenWebBeans
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.6
>         Environment: OS X 10.7.5 / Tomcat 7.0.22; Windows 7 / IBM WebSphere 
> Application Server 7.x;
>            Reporter: Teemu Andersén
>              Labels: alternative, specializes
>         Attachments: src.zip
>
>
> When using stereotypes to select alternatives the OWB doesn't recognize a 
> Bean as an alternative when it processes specialized classes. This causes the 
> super class to be always disabled.
> Not sure if this is a bug or not but in most other cases the same class would 
> be recognized as an alternative even if it was marked as one via stereotype 
> and not directly using the @Alternative annotation.
> Steps to reproduce:
> 1) create a test alternative stereotype
> 2) create a service
> 3) create an alternative test service
>     - extend the production service
>     - annotate with test alternative stereotype and specializes
> 4) Don't enable the test alternative stereotype
> Expected:
> The production service is enabled
> What happens:
> Both services are disabled
> Example (also in the src.zip):
> @Stereotype
> @Alternative
> @Retention(RetentionPolicy.RUNTIME)
> @Target({ METHOD, FIELD, PARAMETER, TYPE })
> public @interface Development {
> }
> public class ServiceBean implements Serializable {
>       public String getMessage() {
>               return "Production";
>       }
> }
> /**
>  * Alternative implementation that is enabled by Development stereotype.
>  */
> // @Alternative - When this annotation is commented this class is not 
> recognized as an alternative when processing specialized classes.
> @Development
> @Specializes
> public class DevelopmentService extends Service {
>       @Override
>       public String getMessage() {
>               return "Development";
>       }
> }
> ====
> Problem area:
> org.apache.webbeans.util.WebBeansUtil [1477-1486]:
> if (!AnnotationUtil.hasClassAnnotation(specializedClass, Alternative.class))
> {
>     //disable superbean if the current bean is not an alternative
>     ((AbstractOwbBean<?>)superBean).setEnabled(false);
> }
> else if(altManager.isClassAlternative(specializedClass))
> {
>     //disable superbean if the current bean is an enabled alternative
>     ((AbstractOwbBean<?>)superBean).setEnabled(false);
> }

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

Reply via email to