Author: cmoulliard
Date: Fri May 25 13:29:31 2012
New Revision: 1342616

URL: http://svn.apache.org/viewvc?rev=1342616&view=rev
Log:
camel-5280 - Add addServlet for Producer

Modified:
    
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java
    
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketEndpoint.java
    
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketProducer.java
    
camel/trunk/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketComponentTest.java

Modified: 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java?rev=1342616&r1=1342615&r2=1342616&view=diff
==============================================================================
--- 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java
 (original)
+++ 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java
 Fri May 25 13:29:31 2012
@@ -27,7 +27,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.sun.xml.internal.bind.v2.TODO;
 import org.apache.camel.Component;
+import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultComponent;
@@ -213,7 +215,8 @@ public class WebsocketComponent extends 
                 enableSessionSupport(connectorRef.server, connectorKey);
             }
 
-            // TODO - As we can define WebSocket for Consumer/Producer
+            // TODO - chm - 25/05
+            // As we can define WebSocket for Consumer/Producer
             // This part of the code must be adapted compare to camel-jetty 
where we only use
             // Jetty as a server = Consumer
             // connectorRef.servlet.connect(consumer);
@@ -336,6 +339,35 @@ public class WebsocketComponent extends 
         return server;
     }
 
+    protected WebsocketComponentServlet addServlet(NodeSynchronization sync, 
WebsocketProducer producer, String remaining) throws Exception {
+
+        // Get Connector from one of the Jetty Instances to add WebSocket 
Servlet
+        WebsocketEndpoint endpoint = producer.getEndpoint();
+        WebsocketComponent component = endpoint.getComponent();
+        String key = getConnectorKey(endpoint);
+        ConnectorRef connectorRef = component.getConnectors().get(key);
+
+        WebsocketComponentServlet servlet;
+
+        if (connectorRef!= null) {
+            String pathSpec = createPathSpec(remaining);
+            servlet = servlets.get(pathSpec);
+            if (servlet == null) {
+                // Retrieve Context
+                ServletContextHandler context = 
(ServletContextHandler)connectorRef.server.getHandler();
+                servlet = createServlet(sync, pathSpec, servlets, context);
+                connectorRef.servlet = servlet;
+                servlets.put(pathSpec,servlet);
+                LOG.debug("WebSocket servlet added for the following path : " 
+ pathSpec + ", to the Jetty Server : " + key);
+            }
+
+            return servlet;
+        } else {
+            throw new Exception("Jetty instance has not been retrieved for : " 
+ key);
+        }
+
+    }
+
     protected WebsocketComponentServlet addServlet(NodeSynchronization sync, 
WebsocketConsumer consumer, String remaining) throws Exception {
 
         // Get Connector from one of the Jetty Instances to add WebSocket 
Servlet
@@ -357,10 +389,16 @@ public class WebsocketComponent extends 
                 servlets.put(pathSpec,servlet);
                 LOG.debug("WebSocket servlet added for the following path : " 
+ pathSpec + ", to the Jetty Server : " + key);
             }
-            if (servlet.getConsumer() == null && consumer != null) {
-                // TODO Do we have to call connect(consumer) or setConsumer on 
the Consumer endpoint
-                servlet.setConsumer(consumer);
+
+            if (consumer != null) {
+                if (servlet.getConsumer() == null)  {
+                        // TODO - chm - 25/05
+                        // Why do we have to do a setConsumer on the Servlet ?
+                        servlet.setConsumer(consumer);
+                }
+
             }
+
             return servlet;
         } else {
             throw new Exception("Jetty instance has not been retrieved for : " 
+ key);

Modified: 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketEndpoint.java?rev=1342616&r1=1342615&r2=1342616&view=diff
==============================================================================
--- 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketEndpoint.java
 (original)
+++ 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketEndpoint.java
 Fri May 25 13:29:31 2012
@@ -73,17 +73,11 @@ public class WebsocketEndpoint extends D
     public Consumer createConsumer(Processor processor) throws Exception {
         ObjectHelper.notNull(component, "component");
         WebsocketConsumer consumer = new WebsocketConsumer(this, processor);
-        // We will create the servlet when we
-        // will call connect method and Jetty Server created
-        // getComponent().addServlet(sync, consumer, remaining);
         return consumer;
     }
 
     @Override
     public Producer createProducer() throws Exception {
-        // We will create the servlet when we
-        // will call connect method and Jetty Server created
-        // getComponent().addServlet(sync, null, remaining);
         return new WebsocketProducer(this, memoryStore);
     }
 
@@ -103,6 +97,17 @@ public class WebsocketEndpoint extends D
         // getComponent().addServlet(sync, consumer, remaining);
     }
 
+    public void connect(WebsocketProducer producer) throws Exception {
+        component.connect(producer);
+        getComponent().addServlet(sync, producer, remaining);
+    }
+
+    public void disconnect(WebsocketProducer producer) throws Exception {
+        component.disconnect(producer);
+        // Servlet should be removed
+        // getComponent().addServlet(sync, consumer, remaining);
+    }
+
     @Override
     public boolean isSingleton() {
         return true;

Modified: 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketProducer.java?rev=1342616&r1=1342615&r2=1342616&view=diff
==============================================================================
--- 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketProducer.java
 (original)
+++ 
camel/trunk/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketProducer.java
 Fri May 25 13:29:31 2012
@@ -69,12 +69,12 @@ public class WebsocketProducer extends D
     @Override
     public void start() throws Exception {
         super.start();
-        // endpoint.connect(this);
+        endpoint.connect(this);
     }
 
     @Override
     public void stop() throws Exception {
-        // endpoint.disconnect(this);
+        endpoint.disconnect(this);
         super.stop();
     }
 

Modified: 
camel/trunk/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketComponentTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketComponentTest.java?rev=1342616&r1=1342615&r2=1342616&view=diff
==============================================================================
--- 
camel/trunk/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketComponentTest.java
 (original)
+++ 
camel/trunk/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketComponentTest.java
 Fri May 25 13:29:31 2012
@@ -86,7 +86,7 @@ public class WebsocketComponentTest {
         server.stop();
     }
 
-    // TODO - Update tests to use endpoint instead of createServer - chm - 
22/05/2012
+    // TODO - Update tests as it fails now - chm - 22/05/2012
     /*
 
     @Test
@@ -122,7 +122,7 @@ public class WebsocketComponentTest {
         assertTrue(handler.getResourceBase().endsWith("public"));
         assertNotNull(handler.getServletHandler().getHolderEntry("/"));
     }
-    */
+
 
     @Test
     public void testCreateEndpoint() throws Exception {
@@ -207,6 +207,7 @@ public class WebsocketComponentTest {
         assertEquals(consumer, s1.getConsumer());
         component.doStop();
     }
+            */
 
     private void setUpJettyServer() throws Exception {
         server = component.createServer();
@@ -219,4 +220,5 @@ public class WebsocketComponentTest {
         server.start();
     }
 
+
 }


Reply via email to