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: [email protected]
For additional commands, e-mail: [email protected]