[ 
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

        
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues

Reply via email to