Author: markt
Date: Thu Mar  7 23:27:12 2013
New Revision: 1454166

URL: http://svn.apache.org/r1454166
Log:
Better unwrapping of messages
Start to add plumbing for decoding

Modified:
    
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
    
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
    
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
    
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java?rev=1454166&r1=1454165&r2=1454166&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
 (original)
+++ 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
 Thu Mar  7 23:27:12 2013
@@ -42,15 +42,29 @@ public abstract class PojoMessageHandler
 
     @Override
     public final void onMessage(T message) {
+
+        // Can this message be decoded?
+        Object payload = decode(message);
+
+        if (payload == null) {
+            // Not decoded. Unwrap if required. Unwrap only ever applies to
+            // ByteBuffers
+            if (unwrap) {
+                ByteBuffer bb = (ByteBuffer) message;
+                byte[] array = new byte[bb.remaining()];
+                bb.get(array);
+                payload = array;
+            } else {
+                payload = message;
+            }
+        }
+
         Object[] parameters = params.clone();
         if (indexSession != -1) {
             parameters[indexSession] = session;
         }
-        if (unwrap) {
-            parameters[indexPayload] = ((ByteBuffer) message).array();
-        } else {
-            parameters[indexPayload] = message;
-        }
+        parameters[indexPayload] = payload;
+
         Object result;
         try {
             result = method.invoke(pojo, parameters);
@@ -59,4 +73,7 @@ public abstract class PojoMessageHandler
         }
         processResult(result);
     }
+
+
+    protected abstract Object decode(T message);
 }

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java?rev=1454166&r1=1454165&r2=1454166&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
 (original)
+++ 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
 Thu Mar  7 23:27:12 2013
@@ -32,4 +32,10 @@ public class PojoMessageHandlerWholeBina
             int indexSession) {
         super(pojo, method, session, params, indexPayload, unwrap, 
indexSession);
     }
+
+    @Override
+    protected Object decode(ByteBuffer message) {
+        // TODO Not implemented
+        return null;
+    }
 }

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java?rev=1454166&r1=1454165&r2=1454166&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
 (original)
+++ 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
 Thu Mar  7 23:27:12 2013
@@ -32,4 +32,10 @@ public class PojoMessageHandlerWholePong
             int indexSession) {
         super(pojo, method, session, params, indexPayload, unwrap, 
indexSession);
     }
+
+    @Override
+    protected Object decode(PongMessage message) {
+        // Never decoded
+        return null;
+    }
 }

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java?rev=1454166&r1=1454165&r2=1454166&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java
 (original)
+++ 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java
 Thu Mar  7 23:27:12 2013
@@ -32,4 +32,10 @@ public class PojoMessageHandlerWholeText
         super(pojo, method, session, params, indexPayload, unwrap,
                 indexSession);
     }
+
+    @Override
+    protected Object decode(String message) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }



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

Reply via email to