Author: markt
Date: Thu Nov 29 13:54:24 2012
New Revision: 1415160

URL: http://svn.apache.org/viewvc?rev=1415160&view=rev
Log:
WebSocket 1.0 implementation part4 of many
Start to think about POJO handling. This is roughly what needs to be done but 
is certainly incomplete and probably in the wrong place.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/WsEndpointPojo.java
    
tomcat/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
    tomcat/trunk/webapps/examples/websocket/echo.html

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsEndpointPojo.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsEndpointPojo.java?rev=1415160&r1=1415159&r2=1415160&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsEndpointPojo.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsEndpointPojo.java Thu Nov 
29 13:54:24 2012
@@ -24,6 +24,9 @@ import javax.websocket.DefaultServerConf
 import javax.websocket.Endpoint;
 import javax.websocket.EndpointConfiguration;
 import javax.websocket.Session;
+import javax.websocket.WebSocketClose;
+import javax.websocket.WebSocketError;
+import javax.websocket.WebSocketOpen;
 
 public class WsEndpointPojo extends Endpoint {
 
@@ -36,12 +39,35 @@ public class WsEndpointPojo extends Endp
     public WsEndpointPojo(Class<?> clazzPojo, String path)
             throws InstantiationException, IllegalAccessException {
         this.pojo = clazzPojo.newInstance();
-        this.config = new DefaultServerConfiguration(path);
+        this.config = new DefaultServerConfiguration(path) {
 
-        // TODO - Find these
-        this.onOpen = null;
-        this.onClose = null;
-        this.onError = null;
+            @Override
+            public boolean checkOrigin(String originHeaderValue) {
+                return true;
+            }
+
+        };
+
+        // TODO - Don't want to have to do this on every connection
+        Method open = null;
+        Method close = null;
+        Method error = null;
+        Method[] methods = clazzPojo.getMethods();
+        for (int i = 0; i < methods.length; i++) {
+            if (open == null &&
+                    methods[i].getAnnotation(WebSocketOpen.class) != null) {
+                open = methods[i];
+            } else if (close == null &&
+                    methods[i].getAnnotation(WebSocketClose.class) != null) {
+                close = methods[i];
+            } else if (error == null &&
+                    methods[i].getAnnotation(WebSocketError.class) != null) {
+                error = methods[i];
+            }
+        }
+        this.onOpen = open;
+        this.onClose = close;
+        this.onError = error;
     }
 
     @Override
@@ -52,6 +78,7 @@ public class WsEndpointPojo extends Endp
     @Override
     public void onOpen(Session session) {
         if (onOpen != null) {
+
             try {
                 onOpen.invoke(pojo, session);
             } catch (IllegalAccessException | IllegalArgumentException

Modified: 
tomcat/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java?rev=1415160&r1=1415159&r2=1415160&view=diff
==============================================================================
--- 
tomcat/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
 (original)
+++ 
tomcat/trunk/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
 Thu Nov 29 13:54:24 2012
@@ -17,8 +17,13 @@
 package websocket.echo;
 
 import javax.websocket.WebSocketEndpoint;
+import javax.websocket.WebSocketOpen;
 
 @WebSocketEndpoint("/websocket/echoAnnotation")
 public class EchoAnnotation {
 
+    @WebSocketOpen
+    public void printOpen() {
+        System.out.println("EchoAnnotation.printOpen()");
+    }
 }

Modified: tomcat/trunk/webapps/examples/websocket/echo.html
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/websocket/echo.html?rev=1415160&r1=1415159&r2=1415160&view=diff
==============================================================================
--- tomcat/trunk/webapps/examples/websocket/echo.html (original)
+++ tomcat/trunk/webapps/examples/websocket/echo.html Thu Nov 29 13:54:24 2012
@@ -137,9 +137,12 @@
             <!-- echo example using messages on the server side -->
             <input id="radio2" type="radio" name="group1" 
value="/examples/websocket/echoMessage"
                    onclick="updateTarget(this.value);"> <label 
for="radio2">messages</label>
-            <!-- echo example using new programmatic API on the  server side 
-->
+            <!-- echo example using new programmatic API on the server side -->
             <input id="radio3" type="radio" name="group1" 
value="/examples/websocket/echoProgrammatic"
                    onclick="updateTarget(this.value);"> <label 
for="radio2">new programmatic</label>
+            <!-- echo example using new annotation API on the server side -->
+            <input id="radio3" type="radio" name="group1" 
value="/examples/websocket/echoAnnotation"
+                   onclick="updateTarget(this.value);"> <label 
for="radio2">new annotation</label>
         </div>
         <div>
             <input id="target" type="text" size="40" style="width: 350px"/>



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

Reply via email to