]
Martin Kouba updated CDI-715:
-----------------------------
Fix Version/s: 2.1 (Discussion)
Transitive stereotype declarations - clarify conflicting default
scopes
-----------------------------------------------------------------------
Key: CDI-715
URL:
https://issues.jboss.org/browse/CDI-715
Project: CDI Specification Issues
Issue Type: Clarification
Reporter: Martin Kouba
Priority: Minor
Fix For: 2.1 (Discussion)
Stereotype declarations are transitive. However, the spec is not clear what happens if a
stereotype declares a default scope and also a second stereotype which also declares a
default scope. Only _"If a stereotype declares more than one scope, the container
automatically detects the problem and treats it as a definition error."_ is defined.
Weld currently does merge the stereotypes and throws {{DefinitionException}} if NOT all
stereotypes specify the same scope _and_ the bean does NOT declare a scope (this makes
sense imho).
Note that this is not a problem for {{@Named}}, {{@Alternative}} and -interceptor
bindings-.
Any {{@Alternative}} makes a bean an alternative. Any {{@Named}} means the name is
defaulted. -All bindings are added to the set-.
UPDATE: Interceptor bindings are probably also affected. The interceptors spec defines
_"An interceptor binding declared on a method or constructor replaces an interceptor
binding of the same type declared at class level or inherited from a superclass."_
(3.3 Binding an Interceptor to a Component) which implies that multiple interceptor
bindings of the same type are not supported. So the spec should probably cover cases where
stereotypes declare the interceptor bindings of the same type.