Author: markt
Date: Mon May 19 13:33:09 2014
New Revision: 1595898
URL: http://svn.apache.org/r1595898
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56446
Clearer handling of exceptions when calling a method on a POJO based WebSocket
endpoint. Based on a suggestion by Eugene Chung.
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
tomcat/trunk/webapps/docs/changelog.xml
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java?rev=1595898&r1=1595897&r2=1595898&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
Mon May 19 13:33:09 2014
@@ -25,6 +25,7 @@ import javax.websocket.MessageHandler;
import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;
+import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.websocket.WrappedMessageHandler;
/**
@@ -107,4 +108,15 @@ public abstract class PojoMessageHandler
public final long getMaxMessageSize() {
return maxMessageSize;
}
+
+
+ protected final void handlePojoMethodException(Throwable t) {
+ t = ExceptionUtils.unwrapInvocationTargetException(t);
+ ExceptionUtils.handleThrowable(t);
+ if (t instanceof RuntimeException) {
+ throw (RuntimeException) t;
+ } else {
+ throw new RuntimeException(t);
+ }
+ }
}
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java?rev=1595898&r1=1595897&r2=1595898&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
Mon May 19 13:33:09 2014
@@ -66,11 +66,11 @@ public abstract class PojoMessageHandler
} else {
parameters[indexPayload] = message;
}
- Object result;
+ Object result = null;
try {
result = method.invoke(pojo, parameters);
} catch (IllegalAccessException | InvocationTargetException e) {
- throw new IllegalArgumentException(e);
+ handlePojoMethodException(e);
}
processResult(result);
}
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=1595898&r1=1595897&r2=1595898&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
Mon May 19 13:33:09 2014
@@ -75,11 +75,11 @@ public abstract class PojoMessageHandler
}
parameters[indexPayload] = payload;
- Object result;
+ Object result = null;
try {
result = method.invoke(pojo, parameters);
} catch (IllegalAccessException | InvocationTargetException e) {
- throw new IllegalArgumentException(e);
+ handlePojoMethodException(e);
}
processResult(result);
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1595898&r1=1595897&r2=1595898&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon May 19 13:33:09 2014
@@ -63,6 +63,15 @@
</add>
</changelog>
</subsection>
+ <section name="WebSocket">
+ <changelog>
+ <scode>
+ <bug>56446</bug>: Clearer handling of exceptions when calling a method
+ on a POJO based WebSocket endpoint. Based on a suggestion by Eugene
+ Chung. (markt)
+ </scode>
+ </changelog>
+ </section>
</section>
<section name="Tomcat 8.0.8 (markt)">
<subsection name="Catalina">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]