[cdi-dev] [JBoss JIRA] (CDI-490) Clarify what happens when an interceptor/decorator is enabled using both @Priority and beans.xml

Jozef Hartinger (JIRA) issues at jboss.org
Wed Nov 5 03:15:39 EST 2014


Jozef Hartinger created CDI-490:
-----------------------------------

             Summary: Clarify what happens when an interceptor/decorator is enabled using both @Priority and beans.xml
                 Key: CDI-490
                 URL: https://issues.jboss.org/browse/CDI-490
             Project: CDI Specification Issues
          Issue Type: Clarification
          Components: Decorators, Interceptors
    Affects Versions: 1.2.Final
            Reporter: Jozef Hartinger


Suppose an InterceptorA has @Priority and is also listed in the beans.xml file of a particular BDA. Such interceptor is for sure enabled because:

{quote}An interceptor is said to be enabled if it is enabled in at least one bean archive or is listed in the final
list of interceptors for the application, as defined in Section 11.5.2, “AfterTypeDiscovery event”.{quote}

it matches both parts of the statement.

As for ordering, the following statement defines invocation order:
{quote}Interceptors enabled using @Priority are called before interceptors enabled using beans.xml.{quote}

Since InterceptorA is enabled by both @Priority and beans.xml, the following applies:
"Interceptors enabled using @Priority" = \{ InterceptorA \}
"interceptors enabled using beans.xml" = \{ InterceptorA \}

We can perform substitution in the statement and we get:
*\{ InterceptorA \} are called before \{ InterceptorA \}*
which does not seem right.

The specification should explicitly address this scenario. There are several options (some of them are better, some are worse):
1) Invoke the interceptor twice - each time in the corresponding order given by priority and position in beans.xml
2) Invoke the interceptor once in the @Priority part of the invocation chain (@Priority has precedence)
3) Invoke the interceptor once in the beans.xml part of the invocation chain (beans.xml has precedence)
4) Forbid an interceptor to be enabled by both @Priority and beans.xml



--
This message was sent by Atlassian JIRA
(v6.3.1#6329)



More information about the cdi-dev mailing list