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

Dan Allen (JIRA) jira-events at lists.jboss.org
Wed Dec 8 17:44:31 EST 2010


     [ https://jira.jboss.org/browse/SEAMCATCH-23?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Allen reopened SEAMCATCH-23:
--------------------------------



Regardless of what happens with CDI-7, we can still support less-specific handlers by saying that Catch simply does the equivalent of firing multiple events, for each permutation of the qualifiers.

For instance, if we include the @WebRequest qualifier in the ExceptionToCatch, we notify handlers that have the @WebRequest qualifier and handlers that have no qualifier. How it's accomplished is an implementation detail.

The only open question I have is whether the catch-all observer should be required to have an explicit @Any. You could argue that an exception with the @WebRequest qualifier does not have the @Default qualifier, and therefore would not match an observer with no qualifier (as that has the @Default qualifier). This is where I'm just not sure how observers should work. I'm okay with requiring @Any for the catch-all observer.

Thus, if the exception Throwable has two qualifiers, such as @WebRequest and @Secure, then handlers with the following qualifiers + type would be called

- @Handles @Any CaughtException<Throwable>
- @Handles @WebRequest CaughtException<Throwable>
- @Handles @WebRequest @Secure CaughtException<Throwable>

This supports using qualifiers as topic selectors.

> 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