[cdi-dev] [JBoss JIRA] (CDI-18) Global enablement of interceptors, decorators and alternatives

Mark Struberg (Commented) (JIRA) jira-events at lists.jboss.org
Thu Dec 8 10:35:43 EST 2011


    [ https://issues.jboss.org/browse/CDI-18?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12649280#comment-12649280 ] 

Mark Struberg commented on CDI-18:
----------------------------------

Yes Pete, for the problem see the issue text. For why the BDA stuff became what it is now please see my very first comment:
> This issue originates from the interceptor order problematic

I'll try to sum up the discussion so far:

While discussing this very issue with BDAs we identified another related issue (class visibility) while discussing CDI-129 (@EnterpriseApplicationScoped): @Specializes. This doesn't need a BDA entry in beans.xml and is also broken atm.

My solution would be as follwing
a.) Introduce an 'ordinal' + 'enabled' in beans.xml for <interceptors>, <decorators> and <alternatives> as described in my first post. This will solve the interceptor ordering issue and remove the troubles with BDAs

b.) Specify the class visibility rules (see CDI-129 for the problem): 
"The container must ensure that for any 
* @Specializes @NScoped class Y extends X and
* @Alternative @NScoped class Y implements X
class Y is accessible by all classes which can access X in the same @NScoped context.

Example: 
If the container discovers a
public @EnterpriseApplicationScoped class X {
}
defined in a shared ear-lib which has a
public @EnterpriseApplicationScoped @Specializes class Y extends class X {
}
defined in WEB-INF/classes of one of the EARs web application, a DeploymentException must be thrown.

Defining the
public @EnterpriseApplicationScoped @Specializes class Y extends class X {
}
in a shared ear-lib jar as well will be perfectly fine.
"

                
> Global enablement of interceptors, decorators and alternatives
> --------------------------------------------------------------
>
>                 Key: CDI-18
>                 URL: https://issues.jboss.org/browse/CDI-18
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Beans, Decorators, Interceptors, Packaging and Deployment
>    Affects Versions: 1.0
>            Reporter: Mark Struberg
>            Priority: Critical
>             Fix For: 1.1 (Proposed)
>
>
> Currently the spec defines that <interceptors>, <decorators> and <alternatives> affect only the Bean Archives where they are configured in (via beans.xml). 
> Thus if you e.g. enable an Alternative in a WEB-INF/beans.xml, it does NOT count for the jars in it's WEB-INF/lib folder!
> This is pretty unhandy because you would need to repackage all your jars in your WEB-INF/lib folder and add/expand the <alternatives> sections in their beans.xml.
> Needless to say that this is not only hard to do in a company build but is also impossibly to handle at deploy time in an OSGi environment!

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the cdi-dev mailing list