[ 
https://issues.apache.org/jira/browse/OPENEJB-583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12554831
 ] 

Jacek Laskowski commented on OPENEJB-583:
-----------------------------------------

I could reproduce the last part of the issue when a bean class has 
@ExcludeDefaultInterceptors whereas its business method has 
@ExcludeClassInterceptors. When such a bean's deployed, ProcessAnnotatedBeans 
adds new interceptor and interceptorbindings sections in ejb-jar.xml - one for 
@ExcludeDefaultInterceptors and another for @ExcludeClassInterceptors. In 
InterceptorBindingBuilder.processBindings they're both considered as 
Level.CLASS and when the first - @ExcludeClassInterceptors - is processed the 
type's Type.ADDITION_OR_LOWER_EXCLUSION and since info.excludeClassInterceptors 
is true, Level.CLASS's added to excludes. The second InterceptorBindingInfo for 
@ExcludeDefaultInterceptors is "filtered out" at "if (excludes.contains(level)) 
continue;" and never gets its chance to disable package-level interceptors for 
a given method.

DMB's added in the openejb-dev mailing list:

FYI, this test case is going to be invaluable to you: 
org.apache.openejb.core.stateless.StatelessInterceptorTest

I wrote that up before we had the corresponding itests.  It was invaluable to 
me when writing the original binding processing code. It doesn't have the 
situation described in OPENEJB-583, but it could
be added so you'd have a small isolated unit test to walk through with a 
debugger.

> Problems excluding default interceptor
> --------------------------------------
>
>                 Key: OPENEJB-583
>                 URL: https://issues.apache.org/jira/browse/OPENEJB-583
>             Project: OpenEJB
>          Issue Type: Bug
>          Components: interceptors
>    Affects Versions: 3.0-beta-1
>            Reporter: Prasad Kashyap
>            Assignee: Jacek Laskowski
>             Fix For: 3.0-beta-2
>
>
> http://www.nabble.com/forum/ViewPost.jtp?post=10271166&framed=y&skin=2756
> This problem exists uniformly for both annotation specified and DD 
> specificied interceptors
> If you try to exclude a class from default interceptors, the lifecycle events 
> are excluded but some of the business methods are not.
> When a @ExcludeDefault is specified at the class level, default interceptors 
> are excluded only for those business methods that do not have a @ExcludeClass 
> specified on them. 
> If a business method has a @ExcludeClass specified on it, it ignores the 
> @ExcludeDefault specified for the whole class (either by annotation or xml).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to