You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/08/22 01:23:21 UTC

svn commit: r433425 - /incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java

Author: gnodet
Date: Mon Aug 21 16:23:21 2006
New Revision: 433425

URL: http://svn.apache.org/viewvc?rev=433425&view=rev
Log:
Allow deployment of publishers in an SU

Modified:
    incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java?rev=433425&r1=433424&r2=433425&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java Mon Aug 21 16:23:21 2006
@@ -47,12 +47,14 @@
 import org.oasis_open.docs.wsn.b_2.CreatePullPointResponse;
 import org.oasis_open.docs.wsn.b_2.Subscribe;
 import org.oasis_open.docs.wsn.b_2.SubscribeResponse;
+import org.oasis_open.docs.wsn.br_2.RegisterPublisher;
+import org.oasis_open.docs.wsn.br_2.RegisterPublisherResponse;
 
 public class WSNDeployer extends AbstractDeployer implements Deployer {
 
     protected FilenameFilter filter;
     protected JAXBContext context;
-    
+
     public WSNDeployer(BaseComponent component) {
         super(component);
         filter = new XmlFilter();
@@ -105,29 +107,30 @@
         }
         return createEndpoint(request);
     }
-    
+
     public Endpoint createEndpoint(Object request) throws DeploymentException {
         if (request instanceof Subscribe) {
             return new WSNSubscriptionEndpoint((Subscribe) request);
         } else if (request instanceof CreatePullPoint) {
             return new WSNPullPointEndpoint((CreatePullPoint) request);
-        //} else if (request instanceof RegisterPublisher) {
+        } else if (request instanceof RegisterPublisher) {
+            return new WSNPublisherEndpoint((RegisterPublisher) request);
         } else {
             throw failure("deploy", "Unsupported request " + request.getClass().getName(), null);
         }
     }
-    
+
     public class WSNSubscriptionEndpoint extends Endpoint implements EndpointManager {
 
         private Subscribe request;
         private SubscribeResponse response;
-        
+
         public WSNSubscriptionEndpoint(Subscribe request) throws DeploymentException {
             this.service = new QName("http://servicemix.org/wsnotification", "Subscription");
             this.endpoint = new IdGenerator().generateSanitizedId();
             this.request = request;
         }
-        
+
         @Override
         public Role getRole() {
             return Role.CONSUMER;
@@ -158,18 +161,18 @@
         }
 
     }
-    
+
     public class WSNPullPointEndpoint extends Endpoint implements EndpointManager {
 
         private CreatePullPoint request;
         private CreatePullPointResponse response;
-        
+
         public WSNPullPointEndpoint(CreatePullPoint request) throws DeploymentException {
             this.service = new QName("http://servicemix.org/wsnotification", "Subscription");
             this.endpoint = new IdGenerator().generateSanitizedId();
             this.request = request;
         }
-        
+
         @Override
         public Role getRole() {
             return Role.PROVIDER;
@@ -200,7 +203,49 @@
         }
 
     }
-    
+
+    public static class WSNPublisherEndpoint extends Endpoint implements EndpointManager {
+
+        private RegisterPublisher request;
+        private RegisterPublisherResponse response;
+        
+        public WSNPublisherEndpoint(RegisterPublisher request) {
+            this.service = new QName("http://servicemix.org/wsnotification", "Publisher");
+            this.endpoint = new IdGenerator().generateSanitizedId();
+            this.request = request;
+        }
+
+        @Override
+        public Role getRole() {
+            return Role.CONSUMER;
+        }
+
+        @Override
+        public void activate() throws Exception {
+            JbiNotificationBroker broker = ((WSNLifeCycle) serviceUnit.getComponent().getLifeCycle()).getNotificationBroker();
+            response = broker.handleRegisterPublisher(request, this);
+        }
+
+        @Override
+        public void deactivate() throws Exception {
+            JbiNotificationBroker broker = ((WSNLifeCycle) serviceUnit.getComponent().getLifeCycle()).getNotificationBroker();
+            broker.unsubscribe(response.getPublisherRegistrationReference().getAddress().getValue());
+        }
+
+        @Override
+        public ExchangeProcessor getProcessor() {
+            return null;
+        }
+
+        public Object register(String address, Object service) throws EndpointRegistrationException {
+            return null;
+        }
+
+        public void unregister(Object endpoint) throws EndpointRegistrationException {
+        }
+
+    }
+
     public static class WSNServiceUnit extends ServiceUnit {
         public void start() throws Exception {
             List<Endpoint> activated = new ArrayList<Endpoint>();