[seam-issues] [JBoss JIRA] Commented: (SEAMCATCH-23) Handlers without qualifiers should be notified even if ExceptionToCatch has qualifiers

Dan Allen (JIRA) jira-events at lists.jboss.org
Tue Dec 7 20:05:00 EST 2010


    [ https://jira.jboss.org/browse/SEAMCATCH-23?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12568374#comment-12568374 ] 

Dan Allen commented on SEAMCATCH-23:
------------------------------------

I found the definitive sentence in the JSR-299 specification that supports this (chapter 10):

An observer method will be notified of an event if the event object is:
 
1. assignable to the observed event type and
2. all the qualifiers on the event observer are also event qualifiers of the event

Further clarified by 5.2

The type and qualifiers of the injection point are called the required type and required qualifiers.

That supports my claim that the qualifiers on the observer (in our case, handler) must be a subset of the qualifiers on the event (in our case, caught exception). There is one special case, @Any, which matches any qualifier set. @Any is implicit on an observer (in our case, handler) if no qualifiers are present.

> Handlers without qualifiers should be notified even if ExceptionToCatch has qualifiers
> --------------------------------------------------------------------------------------
>
>                 Key: SEAMCATCH-23
>                 URL: https://jira.jboss.org/browse/SEAMCATCH-23
>             Project: Seam Catch
>          Issue Type: Bug
>          Components: Core Implementation
>    Affects Versions: Alpha2
>            Reporter: Dan Allen
>            Assignee: Jason Porter
>             Fix For: Alpha3
>
>
> Qualifiers are meant to narrow the handlers that are invoked (in the same way as observers). Less specific handlers (particularly handlers without any qualifiers) should be notified if the set of qualifiers on the handler are a subset of the qualifiers on the exception payload. Currently Catch fails this assertion.
> Let's assume that the following exception (of type Throwable) is sent to Catch:
> beanManager.fireEvent(new ExceptionToCatch(e, new AnnotationLiteral<WebRequest>() {}));
> The following two handlers should match:
> void handleAny(@Handles CaughtException<Throwable> caught) {}
> void handleForWebRequest(@Handles @WebRequest CaughtException<Throwable> caught) {}
> However, the following handler would not be invoked because it's qualifiers are not a subset of the qualifiers on the exception payload:
> void handleForRestRequest(@Handles @RestRequest CaughtException<Throwable> caught) {}
> For reference, see JSR-299, Section 10.2.3: Multiple event qualifiers

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the seam-issues mailing list