You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/02/20 19:08:25 UTC

svn commit: r1448332 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java

Author: markt
Date: Wed Feb 20 18:08:24 2013
New Revision: 1448332

URL: http://svn.apache.org/r1448332
Log:
First step in refactoring as it isn't just message handlers we need to determine the generic types for

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java?rev=1448332&r1=1448331&r2=1448332&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java Wed Feb 20 18:08:24 2013
@@ -407,11 +407,11 @@ public class WsSession implements Sessio
 
     // Protected so unit tests can use it
     protected static Class<?> getMessageType(MessageHandler listener) {
-        return (Class<?>) getMessageType(listener.getClass());
+        return (Class<?>) getGenericType(listener.getClass());
     }
 
 
-    private static Object getMessageType(Class<? extends MessageHandler> clazz) {
+    private static Object getGenericType(Class<? extends MessageHandler> clazz) {
 
         // Look to see if this class implements the generic MessageHandler<>
         // interface
@@ -423,12 +423,12 @@ public class WsSession implements Sessio
             if (iface instanceof ParameterizedType) {
                 ParameterizedType pi = (ParameterizedType) iface;
                 // Look for the MessageHandler<> interface
-                if (pi.getRawType().equals(MessageHandler.Basic.class)
-                        || pi.getRawType().equals(MessageHandler.Async.class)) {
-                    // Whichever interface it is, there is only one generic
-                    // type.
-                    return getTypeParameter(
-                            clazz, pi.getActualTypeArguments()[0]);
+                if (pi.getRawType() instanceof Class) {
+                    if (MessageHandler.class.isAssignableFrom(
+                            (Class<?>) pi.getRawType())) {
+                        return getTypeParameter(
+                                clazz, pi.getActualTypeArguments()[0]);
+                    }
                 }
             }
         }
@@ -437,7 +437,7 @@ public class WsSession implements Sessio
         Class<? extends MessageHandler> superClazz =
                 (Class<? extends MessageHandler>) clazz.getSuperclass();
 
-        Object result = getMessageType(superClazz);
+        Object result = getGenericType(superClazz);
         if (result instanceof Class<?>) {
             // Superclass implements interface and defines explicit type for
             // MessageHandler<>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org