Repository: reef
Updated Branches:
  refs/heads/master f6a0e452c -> 51b76fc72


[REEF-1907] Use proper generic parameters in HandlerContainer

JIRA:
  [REEF-1907](https://issues.apache.org/jira/browse/REEF-1907)

Pull Request:
  This closes #1397


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/51b76fc7
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/51b76fc7
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/51b76fc7

Branch: refs/heads/master
Commit: 51b76fc72899ce5fdfe0327fea02b4860ab5ba31
Parents: f6a0e45
Author: Sergiy Matusevych <[email protected]>
Authored: Wed Oct 18 19:48:45 2017 -0700
Committer: Markus Weimer <[email protected]>
Committed: Tue Oct 24 10:17:48 2017 -0700

----------------------------------------------------------------------
 .../apache/reef/wake/remote/impl/HandlerContainer.java | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/51b76fc7/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/impl/HandlerContainer.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/impl/HandlerContainer.java
 
b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/impl/HandlerContainer.java
index 3a2772f..89b44e3 100644
--- 
a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/impl/HandlerContainer.java
+++ 
b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/impl/HandlerContainer.java
@@ -44,7 +44,7 @@ final class HandlerContainer<T> implements 
EventHandler<RemoteEvent<byte[]>> {
       EventHandler<RemoteMessage<? extends T>>> msgTypeToHandlerMap = new 
ConcurrentHashMap<>();
 
   private final ConcurrentMap<Tuple2<RemoteIdentifier, Class<? extends T>>,
-      EventHandler<? extends T>> tupleToHandlerMap = new ConcurrentHashMap<>();
+      EventHandler<? super T>> tupleToHandlerMap = new ConcurrentHashMap<>();
 
   private final Codec<T> codec;
   private final String name;
@@ -80,7 +80,7 @@ final class HandlerContainer<T> implements 
EventHandler<RemoteEvent<byte[]>> {
   public AutoCloseable registerHandler(
       final RemoteIdentifier sourceIdentifier,
       final Class<? extends T> messageType,
-      final EventHandler<? extends T> theHandler) {
+      final EventHandler<? super T> theHandler) {
 
     final Tuple2<RemoteIdentifier, Class<? extends T>> tuple =
         new Tuple2<RemoteIdentifier, Class<? extends T>>(sourceIdentifier, 
messageType);
@@ -187,7 +187,7 @@ final class HandlerContainer<T> implements 
EventHandler<RemoteEvent<byte[]>> {
     LOG.log(Level.FINER, "RemoteManager: {0} value: {1}", new Object[] 
{this.name, value});
 
     final T decodedEvent = this.codec.decode(value.getEvent());
-    final Class<?> clazz = decodedEvent.getClass();
+    final Class<? extends T> clazz = (Class<? extends T>) 
decodedEvent.getClass();
 
     LOG.log(Level.FINEST, "RemoteManager: {0} decoded event {1} :: {2}",
         new Object[] {this.name, clazz.getCanonicalName(), decodedEvent});
@@ -195,9 +195,10 @@ final class HandlerContainer<T> implements 
EventHandler<RemoteEvent<byte[]>> {
     // check remote identifier and message type
     final SocketRemoteIdentifier id = new 
SocketRemoteIdentifier((InetSocketAddress)value.remoteAddress());
 
-    final Tuple2<RemoteIdentifier, Class<?>> tuple = new 
Tuple2<RemoteIdentifier, Class<?>>(id, clazz);
+    final Tuple2<RemoteIdentifier, Class<? extends T>> tuple =
+        new Tuple2<RemoteIdentifier, Class<? extends T>>(id, clazz);
 
-    final EventHandler<T> tupleHandler = (EventHandler<T>) 
this.tupleToHandlerMap.get(tuple);
+    final EventHandler<? super T> tupleHandler = 
this.tupleToHandlerMap.get(tuple);
 
     if (tupleHandler != null) {
 
@@ -219,7 +220,7 @@ final class HandlerContainer<T> implements 
EventHandler<RemoteEvent<byte[]>> {
 
       LOG.log(Level.FINER, "Message handler: {0}", clazz.getCanonicalName());
 
-      messageHandler.onNext(new DefaultRemoteMessage(id, decodedEvent));
+      messageHandler.onNext(new DefaultRemoteMessage<>(id, decodedEvent));
     }
   }
 }

Reply via email to