[ 
https://issues.apache.org/jira/browse/YARN-4457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15290164#comment-15290164
 ] 

Daniel Templeton commented on YARN-4457:
----------------------------------------

Oh, [~kasha], if only it were that simple.  A {{Dispatcher}} is intended to 
handle a variety of event types.  The {{register()}} method lets classes 
register a specific handler for a specific event type.  It is really untyped 
with respect to events.  The confusion comes from the {{getEventHandler()}} 
convenience method, which returns a generic event handler, not one of the ones 
that was registered.

In theory we could have the method return an {{EventHandler<? extends Event>}}, 
which would be more specific.  It doesn't actually change anything, however, as 
the {{EventHandler.handle()}} method (it's only method) would still accept a 
parameter of type {{Event}}, and it's bad practice to have a wildcarded type as 
the return type.  Wildcards are icky, and forcing callers to deal with them by 
putting them in the return type is bad form.

> Cleanup unchecked types for EventHandler
> ----------------------------------------
>
>                 Key: YARN-4457
>                 URL: https://issues.apache.org/jira/browse/YARN-4457
>             Project: Hadoop YARN
>          Issue Type: Improvement
>    Affects Versions: 2.7.1
>            Reporter: Daniel Templeton
>            Assignee: Daniel Templeton
>         Attachments: YARN-4457.001.patch, YARN-4457.002.patch, 
> YARN-4457.003.patch, YARN-4457.004.patch, YARN-4457.005.patch
>
>
> The EventHandler class is often used in an untyped context resulting in a 
> bunch of warnings about unchecked usage.  The culprit is the 
> {{Dispatcher.getHandler()}} method.  Fixing the typing on the method to 
> return {{EventHandler<Event>}} instead of {{EventHandler}} clears up the 
> errors and doesn't not introduce any incompatible changes.  In the case that 
> some code does:
> {code}
> EventHandler h = dispatcher.getHandler();
> {code}
> it will still work and will issue a compiler warning about raw types.  There 
> are, however, no instances of this issue in the current source base.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to