Author: markt
Date: Thu Jan 31 17:28:04 2019
New Revision: 1852620

URL: http://svn.apache.org/viewvc?rev=1852620&view=rev
Log:
Ensure a DeploymentException rather than an IllegalArgumentException is thrown 
if a method annotated with @OnMessage does not conform to the requirements set 
out in the Javadoc.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java?rev=1852620&r1=1852619&r2=1852620&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java 
Thu Jan 31 17:28:04 2019
@@ -407,7 +407,7 @@ public class PojoMethodMapping {
                     if (indexString == -1) {
                         indexString = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -415,7 +415,7 @@ public class PojoMethodMapping {
                     if (indexReader == -1) {
                         indexReader = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -423,7 +423,7 @@ public class PojoMethodMapping {
                     if (indexBoolean == -1) {
                         indexBoolean = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateLastParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -431,7 +431,7 @@ public class PojoMethodMapping {
                     if (indexByteBuffer == -1) {
                         indexByteBuffer = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -439,7 +439,7 @@ public class PojoMethodMapping {
                     if (indexByteArray == -1) {
                         indexByteArray = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -447,7 +447,7 @@ public class PojoMethodMapping {
                     if (indexInputStream == -1) {
                         indexInputStream = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -456,7 +456,7 @@ public class PojoMethodMapping {
                         indexPrimitive = i;
                         primitiveType = types[i];
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -464,7 +464,7 @@ public class PojoMethodMapping {
                     if (indexSession == -1) {
                         indexSession = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateSessionParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -472,13 +472,13 @@ public class PojoMethodMapping {
                     if (indexPong == -1) {
                         indexPong = i;
                     } else {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicatePongMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
                 } else {
                     if (decoderMatch != null && decoderMatch.hasMatches()) {
-                        throw new IllegalArgumentException(sm.getString(
+                        throw new DeploymentException(sm.getString(
                                 "pojoMethodMapping.duplicateMessageParam",
                                 m.getName(), m.getDeclaringClass().getName()));
                     }
@@ -486,6 +486,8 @@ public class PojoMethodMapping {
 
                     if (decoderMatch.hasMatches()) {
                         indexPayload = i;
+                    } else {
+                        throw new DeploymentException("Boo!");
                     }
                 }
             }
@@ -493,7 +495,7 @@ public class PojoMethodMapping {
             // Additional checks required
             if (indexString != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.duplicateMessageParam",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -502,7 +504,7 @@ public class PojoMethodMapping {
             }
             if (indexReader != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.duplicateMessageParam",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -511,7 +513,7 @@ public class PojoMethodMapping {
             }
             if (indexByteArray != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.duplicateMessageParam",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -520,7 +522,7 @@ public class PojoMethodMapping {
             }
             if (indexByteBuffer != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.duplicateMessageParam",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -529,7 +531,7 @@ public class PojoMethodMapping {
             }
             if (indexInputStream != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.duplicateMessageParam",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -538,7 +540,7 @@ public class PojoMethodMapping {
             }
             if (indexPrimitive != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.duplicateMessageParam",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -547,7 +549,7 @@ public class PojoMethodMapping {
             }
             if (indexPong != -1) {
                 if (indexPayload != -1) {
-                    throw new IllegalArgumentException(sm.getString(
+                    throw new DeploymentException(sm.getString(
                             "pojoMethodMapping.pongWithPayload",
                             m.getName(), m.getDeclaringClass().getName()));
                 } else {
@@ -563,28 +565,28 @@ public class PojoMethodMapping {
                 indexBoolean = -1;
             }
             if (indexPayload == -1) {
-                throw new IllegalArgumentException(sm.getString(
+                throw new DeploymentException(sm.getString(
                         "pojoMethodMapping.noPayload",
                         m.getName(), m.getDeclaringClass().getName()));
             }
             if (indexPong != -1 && indexBoolean != -1) {
-                throw new IllegalArgumentException(sm.getString(
+                throw new DeploymentException(sm.getString(
                         "pojoMethodMapping.partialPong",
                         m.getName(), m.getDeclaringClass().getName()));
             }
             if(indexReader != -1 && indexBoolean != -1) {
-                throw new IllegalArgumentException(sm.getString(
+                throw new DeploymentException(sm.getString(
                         "pojoMethodMapping.partialReader",
                         m.getName(), m.getDeclaringClass().getName()));
             }
             if(indexInputStream != -1 && indexBoolean != -1) {
-                throw new IllegalArgumentException(sm.getString(
+                throw new DeploymentException(sm.getString(
                         "pojoMethodMapping.partialInputStream",
                         m.getName(), m.getDeclaringClass().getName()));
             }
             if (decoderMatch != null && decoderMatch.hasMatches() &&
                     indexBoolean != -1) {
-                throw new IllegalArgumentException(sm.getString(
+                throw new DeploymentException(sm.getString(
                         "pojoMethodMapping.partialObject",
                         m.getName(), m.getDeclaringClass().getName()));
             }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1852620&r1=1852619&r2=1852620&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jan 31 17:28:04 2019
@@ -211,6 +211,12 @@
         specification and ensure that the deployment of an Endpoint fails if
         <code>@PathParam</code> is used with an invalid parameter type. (markt)
       </fix>
+      <fix>
+        Ensure a <code>DeploymentException</code> rather than an
+        <code>IllegalArgumentException</code> is thrown if a method annotated
+        with <code>@OnMessage</code> does not conform to the requirements set
+        out in the Javadoc. (mark)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Web applications">



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

Reply via email to