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/27 17:39:41 UTC

svn commit: r1450836 - in /tomcat/trunk: java/org/apache/tomcat/websocket/server/ test/org/apache/tomcat/websocket/

Author: markt
Date: Wed Feb 27 16:39:41 2013
New Revision: 1450836

URL: http://svn.apache.org/r1450836
Log:
Move towards new programmatic API

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
    tomcat/trunk/java/org/apache/tomcat/websocket/server/ServerContainerImpl.java
    tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java
    tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java
    tomcat/trunk/test/org/apache/tomcat/websocket/TesterEchoServer.java

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties?rev=1450836&r1=1450835&r2=1450836&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties Wed Feb 27 16:39:41 2013
@@ -14,6 +14,7 @@
 # limitations under the License.
 sci.newInstance.fail=Failed to create an Endpoint instance of type [{0}]
 serverContainer.endpointDeploy=Endpoint class [{0}] deploying to path [{1}] in ServletContext [{2}]
+serverContainer.missingAnnotation=Cannot deploy POJO class [{0}] as it is not annotated with @ServerEndpoint
 serverContainer.missingEndpoint=An Endpoint instance has been request for path [{0}] but no matching Endpoint class was found
 serverContainer.pojoDeploy=POJO class [{0}] deploying to path [{1}] in ServletContext [{2}]
 serverContainer.servletContextMismatch=Attempted to register a POJO annotated for WebSocket at path [{0}] in the ServletContext with context path [{1}] when the WebSocket ServerContainer is allocated to the ServletContext with context path [{2}]

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/ServerContainerImpl.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/ServerContainerImpl.java?rev=1450836&r1=1450835&r2=1450836&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/ServerContainerImpl.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/ServerContainerImpl.java Wed Feb 27 16:39:41 2013
@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHa
 import javax.servlet.ServletContext;
 import javax.servlet.ServletRegistration;
 import javax.websocket.DeploymentException;
+import javax.websocket.server.ServerEndpoint;
 import javax.websocket.server.ServerEndpointConfiguration;
 import javax.websocket.server.ServerEndpointConfigurationBuilder;
 
@@ -83,6 +84,7 @@ public class ServerContainerImpl extends
 
 
     public void setServletContext(ServletContext servletContext) {
+
         if (this.servletContext == servletContext) {
             return;
         }
@@ -146,24 +148,17 @@ public class ServerContainerImpl extends
      * WebSocket endpoints.
      *
      * @param pojo   The annotated POJO
-     * @param ctxt   The ServletContext the endpoint is to be published in
-     * @param wsPath The path at which the endpoint is to be published
      */
-    public void publishServer(Class<?> pojo, ServletContext ctxt,
-            String wsPath) {
-        if (ctxt == null) {
+    public void publishServer(Class<?> pojo) {
+
+        ServerEndpoint annotation = pojo.getAnnotation(ServerEndpoint.class);
+        if (annotation == null) {
             throw new IllegalArgumentException(
-                    sm.getString("serverContainer.servletContextMissing"));
-        }
-        // Set the ServletContext if it hasn't already been set
-        if (servletContext == null) {
-            setServletContext(ctxt);
-        } else if (ctxt != servletContext) {
-            // Should never happen
-            throw new IllegalStateException(sm.getString(
-                    "serverContainer.servletContextMismatch", wsPath,
-                    servletContext.getContextPath(), ctxt.getContextPath()));
+                    sm.getString("serverContainer.missingAnnotation",
+                            pojo.getName()));
         }
+        String wsPath = annotation.value();
+
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("serverContainer.pojoDeploy",
                     pojo.getName(), wsPath, servletContext.getContextPath()));

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java?rev=1450836&r1=1450835&r2=1450836&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java Wed Feb 27 16:39:41 2013
@@ -43,10 +43,9 @@ public class WsSci implements ServletCon
         }
 
         ServerContainerImpl sc = ServerContainerImpl.getServerContainer();
+        sc.setServletContext(ctx);
         for (Class<?> clazz : clazzes) {
-            ServerEndpoint annotation =
-                    clazz.getAnnotation(ServerEndpoint.class);
-            sc.publishServer(clazz, ctx, annotation.value());
+            sc.publishServer(clazz);
         }
     }
 }

Modified: tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java?rev=1450836&r1=1450835&r2=1450836&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java Wed Feb 27 16:39:41 2013
@@ -36,6 +36,7 @@ import javax.websocket.MessageHandler;
 import javax.websocket.OnMessage;
 import javax.websocket.Session;
 import javax.websocket.WebSocketContainer;
+import javax.websocket.server.ServerEndpoint;
 import javax.websocket.server.ServerEndpointConfigurationBuilder;
 
 import org.junit.Assert;
@@ -412,11 +413,13 @@ public class TestWsWebSocketContainer ex
         public void contextInitialized(ServletContextEvent sce) {
             super.contextInitialized(sce);
             ServerContainerImpl sc = ServerContainerImpl.getServerContainer();
-            sc.publishServer(BlockingPojo.class, sce.getServletContext(), PATH);
+            sc.setServletContext(sce.getServletContext());
+            sc.publishServer(BlockingPojo.class);
         }
     }
 
 
+    @ServerEndpoint("/block")
     public static class BlockingPojo {
         @SuppressWarnings("unused")
         @OnMessage

Modified: tomcat/trunk/test/org/apache/tomcat/websocket/TesterEchoServer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/TesterEchoServer.java?rev=1450836&r1=1450835&r2=1450836&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/websocket/TesterEchoServer.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/websocket/TesterEchoServer.java Wed Feb 27 16:39:41 2013
@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import javax.servlet.ServletContextEvent;
 import javax.websocket.OnMessage;
 import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
 
 import org.apache.tomcat.websocket.server.ServerContainerImpl;
 import org.apache.tomcat.websocket.server.WsListener;
@@ -37,12 +38,13 @@ public class TesterEchoServer {
         public void contextInitialized(ServletContextEvent sce) {
             super.contextInitialized(sce);
             ServerContainerImpl sc = ServerContainerImpl.getServerContainer();
-            sc.publishServer(Async.class, sce.getServletContext(), PATH_ASYNC);
-            sc.publishServer(
-                    Basic.class, sce.getServletContext(), PATH_BASIC);
+            sc.setServletContext(sce.getServletContext());
+            sc.publishServer(Async.class);
+            sc.publishServer(Basic.class);
         }
     }
 
+    @ServerEndpoint("/echoAsync")
     public static class Async {
 
         @OnMessage
@@ -74,6 +76,8 @@ public class TesterEchoServer {
         }
     }
 
+
+    @ServerEndpoint("/echoBasic")
     public static class Basic {
         @OnMessage
         public void echoTextMessage(Session session, String msg) {



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