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