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>