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/04/28 13:05:14 UTC

svn commit: r397858 - in /incubator/servicemix/trunk/servicemix-wsn2005/src: main/java/org/apache/servicemix/wsn/spring/ test/java/org/apache/servicemix/wsn/component/ test/resources/org/apache/servicemix/wsn/

Author: gnodet
Date: Fri Apr 28 04:05:11 2006
New Revision: 397858

URL: http://svn.apache.org/viewcvs?rev=397858&view=rev
Log:
SM-339: Allow configuration of subscriptions and producers with XBean for WSN 

Modified:
    incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/CreatePullPointFactoryBean.java
    incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java
    incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/RegisterPublisherFactoryBean.java
    incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/SubscribeFactoryBean.java
    incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java
    incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/org/apache/servicemix/wsn/spring.xml

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/CreatePullPointFactoryBean.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/CreatePullPointFactoryBean.java?rev=397858&r1=397857&r2=397858&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/CreatePullPointFactoryBean.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/CreatePullPointFactoryBean.java Fri Apr 28 04:05:11 2006
@@ -23,6 +23,12 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Text;
 
+/**
+ * 
+ * @author gnodet
+ * @version $Revision: 376451 $
+ * @org.apache.xbean.XBean element="create-pull-point"
+ */
 public class CreatePullPointFactoryBean implements FactoryBean {
 
     private String address;

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java?rev=397858&r1=397857&r2=397858&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/PublisherComponent.java Fri Apr 28 04:05:11 2006
@@ -40,6 +40,12 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
+/**
+ * 
+ * @author gnodet
+ * @version $Revision: 376451 $
+ * @org.apache.xbean.XBean element="publisher"
+ */
 public class PublisherComponent extends ComponentSupport implements MessageExchangeListener {
 
     private static final Log log = LogFactory.getLog(PublisherComponent.class);
@@ -78,11 +84,24 @@
         this.topic = topic;
     }
 
+    /**
+     * @return Returns the subscription.
+     */
+    public Subscribe getSubscription() {
+        return subscription;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.servicemix.jbi.management.BaseLifeCycle#init()
+     */
     public void init() throws JBIException {
         super.init();
         getContext().activateEndpoint(getService(), subscriptionEndpoint);
     }
     
+    /* (non-Javadoc)
+     * @see javax.jbi.management.LifeCycleMBean#start()
+     */
     public void start() throws JBIException {
         new Thread() {
             public void run() {
@@ -99,10 +118,16 @@
         }.start();
     }
     
+    /* (non-Javadoc)
+     * @see javax.jbi.management.LifeCycleMBean#shutDown()
+     */
     public void shutDown() throws JBIException {
         super.shutDown();
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.servicemix.MessageExchangeListener#onMessageExchange(javax.jbi.messaging.MessageExchange)
+     */
     public void onMessageExchange(MessageExchange exchange) throws MessagingException {
         if (exchange.getStatus() != ExchangeStatus.ACTIVE) {
             return;

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/RegisterPublisherFactoryBean.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/RegisterPublisherFactoryBean.java?rev=397858&r1=397857&r2=397858&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/RegisterPublisherFactoryBean.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/RegisterPublisherFactoryBean.java Fri Apr 28 04:05:11 2006
@@ -20,6 +20,12 @@
 import org.oasis_open.docs.wsn.br_2.RegisterPublisher;
 import org.springframework.beans.factory.FactoryBean;
 
+/**
+ * 
+ * @author gnodet
+ * @version $Revision: 376451 $
+ * @org.apache.xbean.XBean element="register-publisher"
+ */
 public class RegisterPublisherFactoryBean implements FactoryBean {
 
     private String publisher;

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/SubscribeFactoryBean.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/SubscribeFactoryBean.java?rev=397858&r1=397857&r2=397858&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/SubscribeFactoryBean.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/spring/SubscribeFactoryBean.java Fri Apr 28 04:05:11 2006
@@ -26,6 +26,12 @@
 import org.oasis_open.docs.wsn.b_2.UseRaw;
 import org.springframework.beans.factory.FactoryBean;
 
+/**
+ * 
+ * @author gnodet
+ * @version $Revision: 376451 $
+ * @org.apache.xbean.XBean element="subscribe"
+ */
 public class SubscribeFactoryBean implements FactoryBean {
 
     private String consumer;

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java?rev=397858&r1=397857&r2=397858&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java Fri Apr 28 04:05:11 2006
@@ -17,46 +17,33 @@
 
 import java.io.File;
 import java.io.StringReader;
-import java.io.StringWriter;
 import java.net.URI;
 import java.net.URL;
 import java.util.List;
 
 import javax.jbi.JBIException;
-import javax.jbi.messaging.ExchangeStatus;
-import javax.jbi.messaging.MessageExchange;
-import javax.jbi.messaging.MessagingException;
 import javax.jbi.messaging.NormalizedMessage;
 import javax.jbi.servicedesc.ServiceEndpoint;
-import javax.xml.bind.JAXBContext;
 import javax.xml.namespace.QName;
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.transform.Source;
 
 import junit.framework.TestCase;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.BrokerService;
-import org.apache.servicemix.MessageExchangeListener;
-import org.apache.servicemix.components.util.ComponentSupport;
 import org.apache.servicemix.jbi.container.ActivationSpec;
 import org.apache.servicemix.jbi.container.JBIContainer;
 import org.apache.servicemix.jbi.jaxp.SourceTransformer;
-import org.apache.servicemix.jbi.jaxp.StringSource;
 import org.apache.servicemix.tck.Receiver;
 import org.apache.servicemix.tck.ReceiverComponent;
 import org.apache.servicemix.wsn.client.AbstractWSAClient;
 import org.apache.servicemix.wsn.client.CreatePullPoint;
 import org.apache.servicemix.wsn.client.NotificationBroker;
-import org.apache.servicemix.wsn.client.Publisher;
 import org.apache.servicemix.wsn.client.PullPoint;
 import org.apache.servicemix.wsn.client.Subscription;
+import org.apache.servicemix.wsn.spring.PublisherComponent;
 import org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType;
 import org.oasis_open.docs.wsn.b_2.Notify;
-import org.oasis_open.docs.wsn.b_2.Subscribe;
-import org.oasis_open.docs.wsn.b_2.SubscribeResponse;
-import org.oasis_open.docs.wsn.b_2.Unsubscribe;
-import org.oasis_open.docs.wsn.b_2.UnsubscribeResponse;
 import org.w3._2005._08.addressing.AttributedURIType;
 import org.w3._2005._08.addressing.EndpointReferenceType;
 import org.w3c.dom.Document;
@@ -266,12 +253,12 @@
 	
 	public void testDemandBasedPublisher() throws Exception {
 		PublisherComponent publisherComponent = new PublisherComponent();
+        publisherComponent.setService(new QName("http://servicemix.org/example", "publisher"));
+        publisherComponent.setEndpoint("publisher");
+        publisherComponent.setTopic("myTopic");
+        publisherComponent.setDemand(true);
 		jbi.activateComponent(publisherComponent, "publisher");
 		
-		Publisher publisher = wsnBroker.registerPublisher(
-									AbstractWSAClient.createWSA(PublisherComponent.SERVICE.getNamespaceURI() + "/" + PublisherComponent.SERVICE.getLocalPart() + "/" + PublisherComponent.ENDPOINT), 
-									"myTopic", true);
-		
 		Thread.sleep(50);
 		assertNull(publisherComponent.getSubscription());
 
@@ -286,8 +273,6 @@
 		Thread.sleep(500);
 		assertNull(publisherComponent.getSubscription());
 		
-		publisher.destroy();
-		
 		Thread.sleep(50);
 	}
     
@@ -355,53 +340,5 @@
 		epr.getAddress().setValue(service.getNamespaceURI() + "/" + service.getLocalPart() + "/" + endpoint);
 		return epr;
 	}
-	
-	public static class PublisherComponent extends ComponentSupport implements MessageExchangeListener {
-	    public static final QName SERVICE = new QName("http://servicemix.org/example", "publisher");
-	    public static final String ENDPOINT = "publisher";
-	    private Object subscription;
-	    public PublisherComponent() {
-	    	super(SERVICE, ENDPOINT);
-	    }
-		public Object getSubscription() {
-			return subscription;
-		}
-		public void onMessageExchange(MessageExchange exchange) throws MessagingException {
-			if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
-				try {
-					JAXBContext jaxbContext = JAXBContext.newInstance(Subscribe.class);
-					Source src = exchange.getMessage("in").getContent();
-					Object input = jaxbContext.createUnmarshaller().unmarshal(src);
-					if (input instanceof Subscribe) {
-						subscription = input;
-						SubscribeResponse response = new SubscribeResponse();
-						response.setSubscriptionReference(AbstractWSAClient.createWSA(PublisherComponent.SERVICE.getNamespaceURI() + "/" + PublisherComponent.SERVICE.getLocalPart() + "/" + PublisherComponent.ENDPOINT));
-						StringWriter writer = new StringWriter();
-						jaxbContext.createMarshaller().marshal(response, writer);
-						NormalizedMessage out = exchange.createMessage();
-						out.setContent(new StringSource(writer.toString()));
-						exchange.setMessage(out, "out");
-						send(exchange);
-					} else if (input instanceof Unsubscribe) {
-						subscription = null;
-						UnsubscribeResponse response = new UnsubscribeResponse();
-						StringWriter writer = new StringWriter();
-						jaxbContext.createMarshaller().marshal(response, writer);
-						NormalizedMessage out = exchange.createMessage();
-						out.setContent(new StringSource(writer.toString()));
-						exchange.setMessage(out, "out");
-						send(exchange);
-					} else {
-						throw new Exception("Unkown request");
-					}
-				} catch (Exception e) {
-					exchange.setError(e);
-					send(exchange);
-				}
-			} else if (exchange.getStatus() == ExchangeStatus.ERROR) {
-				exchange.setStatus(ExchangeStatus.DONE);
-				send(exchange);
-			}
-		}
-	}
+
 }

Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/org/apache/servicemix/wsn/spring.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/org/apache/servicemix/wsn/spring.xml?rev=397858&r1=397857&r2=397858&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/org/apache/servicemix/wsn/spring.xml (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/org/apache/servicemix/wsn/spring.xml Fri Apr 28 04:05:11 2006
@@ -1,75 +1,66 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns:sm="http://servicemix.apache.org/config/1.0" 
-	   xmlns:amq="http://activemq.org/config/1.0"
-	   xmlns:test="http://servicemix.org/test">
-
-  <!-- the JBI container -->
-  <sm:container id="jbi" embedded="true">
-    <sm:activationSpecs>
-
-      <sm:activationSpec id="receiver" service="test:service" endpoint="endpoint">
-        <sm:component>
-          <bean class="org.apache.servicemix.tck.ReceiverComponent">
-          </bean>
-        </sm:component>
-      </sm:activationSpec>
-
-      <sm:activationSpec>
-      	<sm:component>
-      	  <bean class="org.apache.servicemix.wsn.spring.WSNSpringComponent">
-      	    <property name="requests">
-      	      <list>
-      	        <bean class="org.apache.servicemix.wsn.spring.SubscribeFactoryBean">
-      	          <property name="consumer" value="http://servicemix.org/test/service/endpoint" />
-      	          <property name="topic" value="myTopic" />
-      	        </bean>
-      	      </list>
-      	    </property>
-      	    <property name="connectionFactory" ref="connectionFactory" />
-      	  </bean>
-        </sm:component>
-      </sm:activationSpec>
-      
-      <sm:activationSpec service="test:publisher" endpoint="endpoint">
-        <sm:component>
-          <bean class="org.apache.servicemix.wsn.spring.PublisherComponent">
-    	    <property name="topic" value="myTopic" />
-          </bean>
-        </sm:component>
-      </sm:activationSpec>
-      
-      <sm:activationSpec destinationService="test:publisher" destinationEndpoint="endpoint">
-        <sm:component>
-          <bean class="org.apache.servicemix.components.quartz.QuartzComponent">
-            <property name="triggers">
-              <map>
-                <entry>
-                  <key>
-                    <bean class="org.quartz.SimpleTrigger">
-                      <property name="repeatInterval" value="2000"/>
-                      <property name="repeatCount" value="20"/>
-                    </bean>
-                  </key>
-                    <bean class="org.quartz.JobDetail">
-                      <property name="name" value="My Example Job"/>
-                      <property name="group" value="ServiceMix"/>
-                    </bean>
-                </entry>
-              </map>
-            </property>
-          </bean>
-        </sm:component>
-      </sm:activationSpec>
-
-    </sm:activationSpecs>
-  </sm:container>
-
-  <bean id="connectionFactory" 
-        class="org.apache.activemq.ActiveMQConnectionFactory"
-        depends-on="broker">
-    <property name="brokerURL" value="tcp://localhost:61216" />
-  </bean>
-  
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+  xmlns:wsn="http://servicemix.apache.org/wsn/1.0" xmlns:amq="http://activemq.org/config/1.0"
+  xmlns:test="http://servicemix.org/test">
+
+  <!-- the JBI container -->
+  <sm:container id="jbi" embedded="true">
+    <sm:activationSpecs>
+
+      <sm:activationSpec id="receiver" service="test:service" endpoint="endpoint">
+        <sm:component>
+          <bean class="org.apache.servicemix.tck.ReceiverComponent" />
+        </sm:component>
+      </sm:activationSpec>
+
+      <sm:activationSpec>
+        <sm:component>
+          <wsn:component connectionFactory="#connectionFactory">
+            <wsn:requests>
+              <wsn:subscribe consumer="http://servicemix.org/test/service/endpoint" topic="myTopic"
+               />
+            </wsn:requests>
+          </wsn:component>
+        </sm:component>
+      </sm:activationSpec>
+
+      <sm:activationSpec service="test:publisher" endpoint="endpoint">
+        <sm:component>
+          <wsn:publisher topic="myTopic" />
+        </sm:component>
+      </sm:activationSpec>
+
+      <sm:activationSpec destinationService="test:publisher" destinationEndpoint="endpoint">
+        <sm:component>
+          <bean class="org.apache.servicemix.components.quartz.QuartzComponent">
+            <property name="triggers">
+              <map>
+                <entry>
+                  <key>
+                    <bean class="org.quartz.SimpleTrigger">
+                      <property name="repeatInterval" value="2000" />
+                      <property name="repeatCount" value="20" />
+                    </bean>
+                  </key>
+                  <bean class="org.quartz.JobDetail">
+                    <property name="name" value="My Example Job" />
+                    <property name="group" value="ServiceMix" />
+                  </bean>
+                </entry>
+              </map>
+            </property>
+          </bean>
+        </sm:component>
+      </sm:activationSpec>
+
+    </sm:activationSpecs>
+  </sm:container>
+
+  <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"
+    depends-on="broker">
+    <property name="brokerURL" value="tcp://localhost:61216" />
+  </bean>
+
   <amq:broker id="broker" persistent="false">
 
     <amq:transportConnectors>