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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org