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/02/11 20:12:54 UTC
svn commit: r377016 - in /incubator/servicemix/trunk/servicemix-wsn2005/src:
main/java/org/apache/servicemix/wsn/
main/java/org/apache/servicemix/wsn/client/
main/java/org/apache/servicemix/wsn/component/
main/java/org/apache/servicemix/wsn/jbi/ test/j...
Author: gnodet
Date: Sat Feb 11 11:12:52 2006
New Revision: 377016
URL: http://svn.apache.org/viewcvs?rev=377016&view=rev
Log:
SM-297: Deploy subscriptions and pull-points as service units
Added:
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java
incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/
incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/pullpoint.xml
incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/subscribe.xml
incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/subscription/
incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/subscription/subscribe.xml
Removed:
incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/org/apache/servicemix/wsn/component/
Modified:
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractEndpoint.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractNotificationBroker.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractPullPoint.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractSubscription.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/EndpointManager.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/NotificationBroker.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/PullPoint.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNConfiguration.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNLifeCycle.java
incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/jbi/JbiSubscription.java
incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractEndpoint.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractEndpoint.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractEndpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractEndpoint.java Sat Feb 11 11:12:52 2006
@@ -38,6 +38,10 @@
public String getAddress() {
return address;
}
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
public void register() throws EndpointRegistrationException {
endpoint = manager.register(getAddress(), this);
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractNotificationBroker.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractNotificationBroker.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractNotificationBroker.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractNotificationBroker.java Sat Feb 11 11:12:52 2006
@@ -15,6 +15,7 @@
*/
package org.apache.servicemix.wsn;
+import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -41,6 +42,7 @@
import org.oasis_open.docs.wsn.br_1.PublisherRegistrationFailedFaultType;
import org.oasis_open.docs.wsn.br_1.RegisterPublisher;
import org.oasis_open.docs.wsn.br_1.RegisterPublisherResponse;
+import org.apache.servicemix.jbi.util.DOMUtil;
import org.apache.servicemix.wsn.jaxws.InvalidFilterFault;
import org.apache.servicemix.wsn.jaxws.InvalidMessageContentExpressionFault;
import org.apache.servicemix.wsn.jaxws.InvalidProducerPropertiesExpressionFault;
@@ -64,6 +66,7 @@
import org.apache.servicemix.wsn.jaxws.UnacceptableInitialTerminationTimeFault;
import org.w3._2005._03.addressing.AttributedURIType;
import org.w3._2005._03.addressing.EndpointReferenceType;
+import org.w3c.dom.Element;
@WebService(endpointInterface = "org.apache.servicemix.wsn.jaxws.NotificationBroker")
public abstract class AbstractNotificationBroker extends AbstractEndpoint implements NotificationBroker, NotificationConsumer {
@@ -156,17 +159,22 @@
throws InvalidFilterFault, InvalidMessageContentExpressionFault, InvalidProducerPropertiesExpressionFault, InvalidTopicExpressionFault, InvalidUseRawValueFault, ResourceUnknownFault, SubscribeCreationFailedFault, TopicExpressionDialectUnknownFault, TopicNotSupportedFault, UnacceptableInitialTerminationTimeFault {
log.debug("Subscribe");
- return handleSubscribe(subscribeRequest);
+ return handleSubscribe(subscribeRequest, null);
}
-
- protected SubscribeResponse handleSubscribe(Subscribe subscribeRequest) throws InvalidFilterFault, InvalidMessageContentExpressionFault, InvalidProducerPropertiesExpressionFault, InvalidTopicExpressionFault, InvalidUseRawValueFault, SubscribeCreationFailedFault, TopicExpressionDialectUnknownFault, TopicNotSupportedFault, UnacceptableInitialTerminationTimeFault {
+
+ public SubscribeResponse handleSubscribe(Subscribe subscribeRequest,
+ EndpointManager manager) throws InvalidFilterFault, InvalidMessageContentExpressionFault, InvalidProducerPropertiesExpressionFault, InvalidTopicExpressionFault, InvalidUseRawValueFault, SubscribeCreationFailedFault, TopicExpressionDialectUnknownFault, TopicNotSupportedFault, UnacceptableInitialTerminationTimeFault {
AbstractSubscription subscription = null;
boolean success = false;
try {
subscription = createSubcription(idGenerator.generateSanitizedId());
+ subscription.setBroker(this);
subscriptions.put(subscription.getAddress(), subscription);
subscription.create(subscribeRequest);
- subscription.register();
+ if (manager != null) {
+ subscription.setManager(manager);
+ }
+ subscription.register();
SubscribeResponse response = new SubscribeResponse();
response.setSubscriptionReference(createEndpointReference(subscription.getAddress()));
success = true;
@@ -185,6 +193,13 @@
}
}
}
+
+ public void unsubscribe(String address) throws UnableToDestroySubscriptionFault {
+ AbstractSubscription subscription = (AbstractSubscription) subscriptions.remove(address);
+ if (subscription != null) {
+ subscription.unsubscribe();
+ }
+ }
/**
*
@@ -229,30 +244,43 @@
throws InvalidTopicExpressionFault, PublisherRegistrationFailedFault, PublisherRegistrationRejectedFault, ResourceUnknownFault, TopicNotSupportedFault {
log.debug("RegisterPublisher");
- AbstractPublisher publisher = null;
- boolean success = false;
- try {
- publisher = createPublisher(idGenerator.generateSanitizedId());
- publishers.put(publisher.getAddress(), publisher);
- publisher.register();
- publisher.create(registerPublisherRequest);
- RegisterPublisherResponse response = new RegisterPublisherResponse();
- response.setPublisherRegistrationReference(createEndpointReference(publisher.getAddress()));
- success = true;
- return response;
- } catch (EndpointRegistrationException e) {
- PublisherRegistrationFailedFaultType fault = new PublisherRegistrationFailedFaultType();
- throw new PublisherRegistrationFailedFault("Unable to register new endpoint", fault, e);
- } finally {
- if (!success && publisher != null) {
- publishers.remove(publisher.getAddress());
- try {
- publisher.destroy();
- } catch (ResourceNotDestroyedFault e) {
- log.info("Error destroying publisher", e);
- }
- }
- }
+ return handleRegisterPublisher(registerPublisherRequest, null);
+ }
+
+ public RegisterPublisherResponse handleRegisterPublisher(
+ RegisterPublisher registerPublisherRequest,
+ EndpointManager manager) throws InvalidTopicExpressionFault,
+ PublisherRegistrationFailedFault,
+ PublisherRegistrationRejectedFault,
+ ResourceUnknownFault,
+ TopicNotSupportedFault {
+ AbstractPublisher publisher = null;
+ boolean success = false;
+ try {
+ publisher = createPublisher(idGenerator.generateSanitizedId());
+ publishers.put(publisher.getAddress(), publisher);
+ if (manager != null) {
+ publisher.setManager(manager);
+ }
+ publisher.register();
+ publisher.create(registerPublisherRequest);
+ RegisterPublisherResponse response = new RegisterPublisherResponse();
+ response.setPublisherRegistrationReference(createEndpointReference(publisher.getAddress()));
+ success = true;
+ return response;
+ } catch (EndpointRegistrationException e) {
+ PublisherRegistrationFailedFaultType fault = new PublisherRegistrationFailedFaultType();
+ throw new PublisherRegistrationFailedFault("Unable to register new endpoint", fault, e);
+ } finally {
+ if (!success && publisher != null) {
+ publishers.remove(publisher.getAddress());
+ try {
+ publisher.destroy();
+ } catch (ResourceNotDestroyedFault e) {
+ log.info("Error destroying publisher", e);
+ }
+ }
+ }
}
/**
@@ -271,12 +299,31 @@
throws PullNotificationNotSupportedFault, UnableToCreatePullPoint {
log.debug("CreatePullEndpoint");
- AbstractPullPoint pullPoint = null;
+ return handleCreatePullPoint(createPullPointRequest, null);
+ }
+
+ public CreatePullPointResponse handleCreatePullPoint(
+ CreatePullPoint createPullPointRequest,
+ EndpointManager manager)
+ throws PullNotificationNotSupportedFault, UnableToCreatePullPoint {
+ AbstractPullPoint pullPoint = null;
boolean success = false;
try {
pullPoint = createPullPoint(idGenerator.generateSanitizedId());
+ for (Iterator it = createPullPointRequest.getAny().iterator(); it.hasNext();) {
+ Element el = (Element) it.next();
+ if ("address".equals(el.getLocalName()) &&
+ "http://servicemix.apache.org/wsn2005/1.0".equals(el.getNamespaceURI())) {
+ String address = DOMUtil.getElementText(el).trim();
+ pullPoint.setAddress(address);
+ }
+ }
+ pullPoint.setBroker(this);
pullPoints.put(pullPoint.getAddress(), pullPoint);
pullPoint.create(createPullPointRequest);
+ if (manager != null) {
+ pullPoint.setManager(manager);
+ }
pullPoint.register();
CreatePullPointResponse response = new CreatePullPointResponse();
response.setPullPoint(createEndpointReference(pullPoint.getAddress()));
@@ -295,6 +342,13 @@
}
}
}
+ }
+
+ public void destroyPullPoint(String address) throws UnableToDestroyPullPoint {
+ AbstractPullPoint pullPoint = pullPoints.remove(address);
+ if (pullPoint != null) {
+ pullPoint.destroy();
+ }
}
protected EndpointReferenceType createEndpointReference(String address) {
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractPullPoint.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractPullPoint.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractPullPoint.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractPullPoint.java Sat Feb 11 11:12:52 2006
@@ -46,6 +46,8 @@
private static Log log = LogFactory.getLog(AbstractPullPoint.class);
+ protected AbstractNotificationBroker broker;
+
public AbstractPullPoint(String name) {
super(name);
}
@@ -103,7 +105,7 @@
throws UnableToDestroyPullPoint {
log.debug("Destroy");
- destroy();
+ broker.destroyPullPoint(getAddress());
return new DestroyResponse();
}
@@ -126,4 +128,12 @@
protected String createAddress() {
return "http://servicemix.org/wsnotification/PullPoint/" + getName();
}
+
+ public AbstractNotificationBroker getBroker() {
+ return broker;
+ }
+
+ public void setBroker(AbstractNotificationBroker broker) {
+ this.broker = broker;
+ }
}
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractSubscription.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractSubscription.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractSubscription.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/AbstractSubscription.java Sat Feb 11 11:12:52 2006
@@ -83,6 +83,7 @@
protected TopicExpressionType topic;
protected QueryExpressionType contentFilter;
protected EndpointReferenceType consumerReference;
+ protected AbstractNotificationBroker broker;
public AbstractSubscription(String name) {
super(name);
@@ -131,7 +132,7 @@
Unsubscribe unsubscribeRequest)
throws ResourceUnknownFault, UnableToDestroySubscriptionFault {
- unsubscribe();
+ broker.unsubscribe(getAddress());
return new UnsubscribeResponse();
}
@@ -361,4 +362,12 @@
fault);
}
}
+
+ public AbstractNotificationBroker getBroker() {
+ return broker;
+ }
+
+ public void setBroker(AbstractNotificationBroker broker) {
+ this.broker = broker;
+ }
}
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/EndpointManager.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/EndpointManager.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/EndpointManager.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/EndpointManager.java Sat Feb 11 11:12:52 2006
@@ -17,7 +17,8 @@
public interface EndpointManager {
- Object register(String address, Object service) throws EndpointRegistrationException;
+ Object register(String address,
+ Object service) throws EndpointRegistrationException;
void unregister(Object endpoint) throws EndpointRegistrationException;
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/AbstractWSAClient.java Sat Feb 11 11:12:52 2006
@@ -16,11 +16,19 @@
package org.apache.servicemix.wsn.client;
import javax.jbi.JBIException;
+import javax.jbi.component.ComponentContext;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;
+import org.apache.servicemix.client.DefaultServiceMixClient;
import org.apache.servicemix.client.ServiceMixClient;
+import org.apache.servicemix.client.ServiceMixClientFacade;
+import org.apache.servicemix.jbi.container.JBIContainer;
import org.apache.servicemix.jbi.resolver.EndpointResolver;
import org.apache.servicemix.jbi.resolver.ServiceAndEndpointNameResolver;
+import org.oasis_open.docs.wsn.b_1.Subscribe;
+import org.oasis_open.docs.wsn.br_1.RegisterPublisher;
import org.w3._2005._03.addressing.AttributedURIType;
import org.w3._2005._03.addressing.EndpointReferenceType;
@@ -32,7 +40,7 @@
public AbstractWSAClient() {
}
-
+
public AbstractWSAClient(EndpointReferenceType endpoint, ServiceMixClient client) {
this.endpoint = endpoint;
this.resolver = resolveWSA(endpoint);
@@ -46,6 +54,18 @@
epr.setAddress(attUri);
return epr;
}
+
+ public static ServiceMixClient createJaxbClient(JBIContainer container) throws JBIException, JAXBException {
+ DefaultServiceMixClient client = new DefaultServiceMixClient(container);
+ client.setMarshaler(new JAXBMarshaller(JAXBContext.newInstance(Subscribe.class, RegisterPublisher.class)));
+ return client;
+ }
+
+ public static ServiceMixClient createJaxbClient(ComponentContext context) throws JAXBException {
+ ServiceMixClientFacade client = new ServiceMixClientFacade(context);
+ client.setMarshaler(new JAXBMarshaller(JAXBContext.newInstance(Subscribe.class, RegisterPublisher.class)));
+ return client;
+ }
public static EndpointResolver resolveWSA(EndpointReferenceType ref) {
String[] parts = splitUri(ref.getAddress().getValue());
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/NotificationBroker.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/NotificationBroker.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/NotificationBroker.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/NotificationBroker.java Sat Feb 11 11:12:52 2006
@@ -24,6 +24,11 @@
import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;
+import org.apache.servicemix.client.ServiceMixClient;
+import org.apache.servicemix.client.ServiceMixClientFacade;
+import org.apache.servicemix.jbi.container.JBIContainer;
+import org.apache.servicemix.jbi.resolver.ServiceNameEndpointResolver;
+import org.apache.servicemix.wsn.AbstractSubscription;
import org.oasis_open.docs.wsn.b_1.CreatePullPoint;
import org.oasis_open.docs.wsn.b_1.CreatePullPointResponse;
import org.oasis_open.docs.wsn.b_1.FilterType;
@@ -38,12 +43,6 @@
import org.oasis_open.docs.wsn.b_1.UseRaw;
import org.oasis_open.docs.wsn.br_1.RegisterPublisher;
import org.oasis_open.docs.wsn.br_1.RegisterPublisherResponse;
-import org.apache.servicemix.client.DefaultServiceMixClient;
-import org.apache.servicemix.client.ServiceMixClient;
-import org.apache.servicemix.client.ServiceMixClientFacade;
-import org.apache.servicemix.jbi.container.JBIContainer;
-import org.apache.servicemix.jbi.resolver.ServiceNameEndpointResolver;
-import org.apache.servicemix.wsn.AbstractSubscription;
import org.w3._2005._03.addressing.EndpointReferenceType;
public class NotificationBroker extends AbstractWSAClient {
@@ -61,24 +60,18 @@
}
public NotificationBroker(ComponentContext context, String brokerName) throws JAXBException {
- ServiceMixClientFacade client = new ServiceMixClientFacade(context);
- client.setMarshaler(new JAXBMarshaller(JAXBContext.newInstance(Subscribe.class, RegisterPublisher.class)));
- setClient(client);
+ setClient(createJaxbClient(context));
setEndpoint(createWSA(WSN_URI + "/" + WSN_SERVICE + "/" + brokerName));
setResolver(resolveWSA(getEndpoint()));
}
public NotificationBroker(JBIContainer container) throws JBIException, JAXBException {
- DefaultServiceMixClient client = new DefaultServiceMixClient(container);
- client.setMarshaler(new JAXBMarshaller(JAXBContext.newInstance(Subscribe.class, RegisterPublisher.class)));
- setClient(client);
+ setClient(createJaxbClient(container));
setResolver(new ServiceNameEndpointResolver(NOTIFICATION_BROKER));
}
public NotificationBroker(JBIContainer container, String brokerName) throws JBIException, JAXBException {
- DefaultServiceMixClient client = new DefaultServiceMixClient(container);
- client.setMarshaler(new JAXBMarshaller(JAXBContext.newInstance(Subscribe.class)));
- setClient(client);
+ setClient(createJaxbClient(container));
setEndpoint(createWSA(WSN_URI + "/" + WSN_SERVICE + "/" + brokerName));
setResolver(resolveWSA(getEndpoint()));
}
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/PullPoint.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/PullPoint.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/PullPoint.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/client/PullPoint.java Sat Feb 11 11:12:52 2006
@@ -19,12 +19,14 @@
import java.util.List;
import javax.jbi.JBIException;
+import javax.xml.bind.JAXBException;
+import org.apache.servicemix.client.ServiceMixClient;
+import org.apache.servicemix.jbi.container.JBIContainer;
import org.oasis_open.docs.wsn.b_1.Destroy;
import org.oasis_open.docs.wsn.b_1.GetMessages;
import org.oasis_open.docs.wsn.b_1.GetMessagesResponse;
import org.oasis_open.docs.wsn.b_1.NotificationMessageHolderType;
-import org.apache.servicemix.client.ServiceMixClient;
import org.w3._2005._03.addressing.EndpointReferenceType;
public class PullPoint extends AbstractWSAClient {
@@ -32,6 +34,10 @@
public PullPoint(EndpointReferenceType pullPoint, ServiceMixClient client) {
super(pullPoint, client);
}
+
+ public PullPoint(EndpointReferenceType pullPoint, JBIContainer container) throws JBIException, JAXBException {
+ super(pullPoint, createJaxbClient(container));
+ }
public List<NotificationMessageHolderType> getMessages(int max) throws JBIException {
GetMessages getMessages = new GetMessages();
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNComponent.java Sat Feb 11 11:12:52 2006
@@ -19,13 +19,21 @@
import org.apache.servicemix.common.BaseComponent;
import org.apache.servicemix.common.BaseLifeCycle;
+import org.apache.servicemix.common.BaseServiceUnitManager;
+import org.apache.servicemix.common.Deployer;
public class WSNComponent extends BaseComponent {
- @Override
+ @Override
protected BaseLifeCycle createLifeCycle() {
return new WSNLifeCycle(this);
}
+
+ @Override
+ public BaseServiceUnitManager createServiceUnitManager() {
+ Deployer[] deployers = new Deployer[] { new WSNDeployer(this) };
+ return new BaseServiceUnitManager(this, deployers);
+ }
public ConnectionFactory getConnectionFactory() {
return ((WSNLifeCycle) lifeCycle).getConnectionFactory();
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNConfiguration.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNConfiguration.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNConfiguration.java Sat Feb 11 11:12:52 2006
@@ -15,7 +15,9 @@
*/
package org.apache.servicemix.wsn.component;
-public class WSNConfiguration implements WSNConfigurationMBean {
+import org.apache.servicemix.common.PersistentConfiguration;
+
+public class WSNConfiguration extends PersistentConfiguration implements WSNConfigurationMBean {
private String initialContextFactory;
private String jndiProviderURL;
Added: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java?rev=377016&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java (added)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNDeployer.java Sat Feb 11 11:12:52 2006
@@ -0,0 +1,212 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.wsn.component;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.Iterator;
+
+import javax.jbi.management.DeploymentException;
+import javax.jbi.management.LifeCycleMBean;
+import javax.jbi.messaging.MessageExchange.Role;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.namespace.QName;
+
+import org.apache.activemq.util.IdGenerator;
+import org.apache.servicemix.common.AbstractDeployer;
+import org.apache.servicemix.common.BaseComponent;
+import org.apache.servicemix.common.Deployer;
+import org.apache.servicemix.common.Endpoint;
+import org.apache.servicemix.common.ExchangeProcessor;
+import org.apache.servicemix.common.ServiceUnit;
+import org.apache.servicemix.wsn.EndpointManager;
+import org.apache.servicemix.wsn.EndpointRegistrationException;
+import org.apache.servicemix.wsn.jaxws.NotificationBroker;
+import org.apache.servicemix.wsn.jbi.JbiNotificationBroker;
+import org.oasis_open.docs.wsn.b_1.CreatePullPoint;
+import org.oasis_open.docs.wsn.b_1.CreatePullPointResponse;
+import org.oasis_open.docs.wsn.b_1.Subscribe;
+import org.oasis_open.docs.wsn.b_1.SubscribeResponse;
+
+public class WSNDeployer extends AbstractDeployer implements Deployer {
+
+ protected FilenameFilter filter;
+ protected JAXBContext context;
+
+ public WSNDeployer(BaseComponent component) {
+ super(component);
+ filter = new XmlFilter();
+ try {
+ context = WSNEndpoint.createJAXBContext(NotificationBroker.class);
+ } catch (JAXBException e) {
+ throw new RuntimeException("Could not create jaxb context", e);
+ }
+ }
+
+ public boolean canDeploy(String serviceUnitName, String serviceUnitRootPath) {
+ File[] xmls = new File(serviceUnitRootPath).listFiles(filter);
+ return xmls != null && xmls.length > 0;
+ }
+
+ public ServiceUnit deploy(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException {
+ File[] xmls = new File(serviceUnitRootPath).listFiles(filter);
+ if (xmls == null || xmls.length == 0) {
+ throw failure("deploy", "No wsdl found", null);
+ }
+ WSNServiceUnit su = new WSNServiceUnit();
+ su.setComponent(component);
+ su.setName(serviceUnitName);
+ su.setRootPath(serviceUnitRootPath);
+ for (int i = 0; i < xmls.length; i++) {
+ Endpoint ep = createEndpoint(xmls[i]);
+ ep.setServiceUnit(su);
+ su.addEndpoint(ep);
+ }
+ if (su.getEndpoints().size() == 0) {
+ throw failure("deploy", "Invalid wsdl: no endpoints found", null);
+ }
+ return su;
+ }
+
+ protected Endpoint createEndpoint(File file) throws DeploymentException {
+ Object request = null;
+ try {
+ request = context.createUnmarshaller().unmarshal(file);
+ } catch (JAXBException e) {
+ throw failure("deploy", "Invalid xml", e);
+ }
+ 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 {
+ 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;
+ }
+
+ @Override
+ public void activate() throws Exception {
+ JbiNotificationBroker broker = ((WSNLifeCycle) serviceUnit.getComponent().getLifeCycle()).getNotificationBroker();
+ response = broker.handleSubscribe(request, this);
+ }
+
+ @Override
+ public void deactivate() throws Exception {
+ JbiNotificationBroker broker = ((WSNLifeCycle) serviceUnit.getComponent().getLifeCycle()).getNotificationBroker();
+ broker.unsubscribe(response.getSubscriptionReference().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 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;
+ }
+
+ @Override
+ public void activate() throws Exception {
+ JbiNotificationBroker broker = ((WSNLifeCycle) serviceUnit.getComponent().getLifeCycle()).getNotificationBroker();
+ response = broker.createPullPoint(request);
+ }
+
+ @Override
+ public void deactivate() throws Exception {
+ JbiNotificationBroker broker = ((WSNLifeCycle) serviceUnit.getComponent().getLifeCycle()).getNotificationBroker();
+ broker.destroyPullPoint(response.getPullPoint().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 {
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNPullPointEndpoint) {
+ endpoint.activate();
+ }
+ }
+ for (Iterator iter = getEndpoints().iterator(); iter.hasNext();) {
+ Endpoint endpoint = (Endpoint) iter.next();
+ if (endpoint instanceof WSNSubscriptionEndpoint) {
+ endpoint.activate();
+ }
+ }
+ this.status = LifeCycleMBean.RUNNING;
+ }
+ }
+
+ public static class XmlFilter implements FilenameFilter {
+
+ public boolean accept(File dir, String name) {
+ return name.endsWith(".xml");
+ }
+
+ }
+
+}
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNEndpoint.java Sat Feb 11 11:12:52 2006
@@ -35,6 +35,7 @@
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.namespace.QName;
import javax.xml.ws.WebFault;
@@ -81,17 +82,21 @@
throw new IllegalStateException("Unable to find WebService annotation");
}
endpointInterface = Class.forName(ws.endpointInterface());
- List<Class> classes = new ArrayList<Class>();
- classes.add(JbiFault.class);
- for (Method mth : endpointInterface.getMethods()) {
- WebMethod wm = (WebMethod) mth.getAnnotation(WebMethod.class);
- if (wm != null) {
- classes.add(mth.getReturnType());
- classes.addAll(Arrays.asList(mth.getParameterTypes()));
- }
- }
- return JAXBContext.newInstance(classes.toArray(new Class[0]));
+ return createJAXBContext(endpointInterface);
}
+
+ public static JAXBContext createJAXBContext(Class interfaceClass) throws JAXBException {
+ List<Class> classes = new ArrayList<Class>();
+ classes.add(JbiFault.class);
+ for (Method mth : interfaceClass.getMethods()) {
+ WebMethod wm = (WebMethod) mth.getAnnotation(WebMethod.class);
+ if (wm != null) {
+ classes.add(mth.getReturnType());
+ classes.addAll(Arrays.asList(mth.getParameterTypes()));
+ }
+ }
+ return JAXBContext.newInstance(classes.toArray(new Class[0]));
+ }
@Override
public void deactivate() throws Exception {
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNLifeCycle.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNLifeCycle.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNLifeCycle.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/component/WSNLifeCycle.java Sat Feb 11 11:12:52 2006
@@ -135,4 +135,8 @@
}
+ public JbiNotificationBroker getNotificationBroker() {
+ return notificationBroker;
+ }
+
}
Modified: incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/jbi/JbiSubscription.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/jbi/JbiSubscription.java?rev=377016&r1=377015&r2=377016&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/jbi/JbiSubscription.java (original)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/main/java/org/apache/servicemix/wsn/jbi/JbiSubscription.java Sat Feb 11 11:12:52 2006
@@ -52,15 +52,20 @@
super(name);
}
+ @Override
+ protected void start() throws SubscribeCreationFailedFault {
+ super.start();
+ }
+
@Override
protected void validateSubscription(Subscribe subscribeRequest) throws InvalidFilterFault, InvalidMessageContentExpressionFault, InvalidProducerPropertiesExpressionFault, InvalidTopicExpressionFault, InvalidUseRawValueFault, SubscribeCreationFailedFault, TopicExpressionDialectUnknownFault, TopicNotSupportedFault, UnacceptableInitialTerminationTimeFault {
super.validateSubscription(subscribeRequest);
- String[] parts = split(consumerReference.getAddress().getValue());
- endpoint = context.getEndpoint(new QName(parts[0], parts[1]), parts[2]);
- if (endpoint == null) {
- SubscribeCreationFailedFaultType fault = new SubscribeCreationFailedFaultType();
- throw new SubscribeCreationFailedFault("Unable to resolve consumer reference endpoint", fault);
- }
+ String[] parts = split(consumerReference.getAddress().getValue().trim());
+ endpoint = context.getEndpoint(new QName(parts[0], parts[1]), parts[2]);
+ if (endpoint == null) {
+ SubscribeCreationFailedFaultType fault = new SubscribeCreationFailedFaultType();
+ throw new SubscribeCreationFailedFault("Unable to resolve consumer reference endpoint", fault);
+ }
}
protected String[] split(String uri) {
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=377016&r1=377015&r2=377016&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 Sat Feb 11 11:12:52 2006
@@ -15,8 +15,11 @@
*/
package org.apache.servicemix.wsn.component;
+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;
@@ -33,25 +36,25 @@
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
-import org.oasis_open.docs.wsn.b_1.NotificationMessageHolderType;
-import org.oasis_open.docs.wsn.b_1.Notify;
-import org.oasis_open.docs.wsn.b_1.Subscribe;
-import org.oasis_open.docs.wsn.b_1.SubscribeResponse;
-import org.oasis_open.docs.wsn.b_1.Unsubscribe;
-import org.oasis_open.docs.wsn.b_1.UnsubscribeResponse;
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.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.component.WSNComponent;
+import org.oasis_open.docs.wsn.b_1.NotificationMessageHolderType;
+import org.oasis_open.docs.wsn.b_1.Notify;
+import org.oasis_open.docs.wsn.b_1.Subscribe;
+import org.oasis_open.docs.wsn.b_1.SubscribeResponse;
+import org.oasis_open.docs.wsn.b_1.Unsubscribe;
+import org.oasis_open.docs.wsn.b_1.UnsubscribeResponse;
import org.w3._2005._03.addressing.AttributedURIType;
import org.w3._2005._03.addressing.EndpointReferenceType;
import org.w3c.dom.Document;
@@ -66,6 +69,7 @@
private JBIContainer jbi;
private BrokerService jmsBroker;
private NotificationBroker wsnBroker;
+ private WSNComponent wsnComponent;
protected void setUp() throws Exception {
jmsBroker = new BrokerService();
@@ -78,11 +82,11 @@
jbi.init();
jbi.start();
- WSNComponent component = new WSNComponent();
- component.setConnectionFactory(new ActiveMQConnectionFactory("vm://localhost"));
+ wsnComponent = new WSNComponent();
+ wsnComponent.setConnectionFactory(new ActiveMQConnectionFactory("vm://localhost"));
ActivationSpec as = new ActivationSpec();
as.setComponentName("servicemix-wsn2005");
- as.setComponent(component);
+ as.setComponent(wsnComponent);
jbi.activateComponent(as);
wsnBroker = new NotificationBroker(jbi);
@@ -268,6 +272,57 @@
Thread.sleep(50);
}
+
+ public void testDeployPullPoint() throws Exception {
+ URL url = getClass().getClassLoader().getResource("pullpoint/pullpoint.xml");
+ File path = new File(new URI(url.toString()));
+ path = path.getParentFile();
+ wsnComponent.getServiceUnitManager().deploy("pullpoint", path.getAbsolutePath());
+
+ wsnComponent.getServiceUnitManager().start("pullpoint");
+
+ wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
+ PullPoint pullPoint = new PullPoint(AbstractWSAClient.createWSA("http://www.consumer.org/service/endpoint"),
+ jbi);
+ assertEquals(1, pullPoint.getMessages(0).size());
+ }
+
+ public void testDeploySubscription() throws Exception {
+ URL url = getClass().getClassLoader().getResource("subscription/subscribe.xml");
+ File path = new File(new URI(url.toString()));
+ path = path.getParentFile();
+ wsnComponent.getServiceUnitManager().deploy("subscription", path.getAbsolutePath());
+
+ ActivationSpec consumer = new ActivationSpec();
+ consumer.setService(new QName("http://www.consumer.org", "service"));
+ consumer.setEndpoint("endpoint");
+ Receiver receiver = new ReceiverComponent();
+ consumer.setComponent(receiver);
+ jbi.activateComponent(consumer);
+
+ wsnComponent.getServiceUnitManager().start("subscription");
+
+ wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
+ // Wait for notification
+ Thread.sleep(50);
+ receiver.getMessageList().assertMessagesReceived(1);
+ receiver.getMessageList().flushMessages();
+
+ wsnComponent.getServiceUnitManager().stop("subscription");
+
+ wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
+ // Wait for notification
+ Thread.sleep(50);
+ assertEquals(0, receiver.getMessageList().flushMessages().size());
+
+ wsnComponent.getServiceUnitManager().start("subscription");
+
+ wsnBroker.notify("myTopic", parse("<hello>world</hello>"));
+ // Wait for notification
+ Thread.sleep(50);
+ receiver.getMessageList().assertMessagesReceived(1);
+ receiver.getMessageList().flushMessages();
+ }
protected Element parse(String txt) throws Exception {
DocumentBuilder builder = new SourceTransformer().createDocumentBuilder();
Added: incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/pullpoint.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/pullpoint.xml?rev=377016&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/pullpoint.xml (added)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/pullpoint.xml Sat Feb 11 11:12:52 2006
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<wsnt:CreatePullPoint xmlns:wsnt="http://docs.oasis-open.org/wsn/b-1"
+ xmlns:sm="http://servicemix.apache.org/wsn2005/1.0">
+ <sm:address>
+ http://www.consumer.org/service/endpoint
+ </sm:address>
+</wsnt:CreatePullPoint>
\ No newline at end of file
Added: incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/subscribe.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/subscribe.xml?rev=377016&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/subscribe.xml (added)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/pullpoint/subscribe.xml Sat Feb 11 11:12:52 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<wsnt:Subscribe
+ xmlns:wsnt="http://docs.oasis-open.org/wsn/b-1"
+ xmlns:wsa="http://www.w3.org/2005/03/addressing"
+ xmlns:ncex="http://www.consumer.org"
+ xmlns:npex="http://www.producer.org">
+ <wsnt:ConsumerReference>
+ <wsa:Address>
+ http://www.consumer.org/service/endpoint
+ </wsa:Address>
+ </wsnt:ConsumerReference>
+ <wsnt:Filter>
+ <wsnt:TopicExpression Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">
+ myTopic
+ </wsnt:TopicExpression>
+ </wsnt:Filter>
+</wsnt:Subscribe>
\ No newline at end of file
Added: incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/subscription/subscribe.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/subscription/subscribe.xml?rev=377016&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/subscription/subscribe.xml (added)
+++ incubator/servicemix/trunk/servicemix-wsn2005/src/test/resources/subscription/subscribe.xml Sat Feb 11 11:12:52 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<wsnt:Subscribe
+ xmlns:wsnt="http://docs.oasis-open.org/wsn/b-1"
+ xmlns:wsa="http://www.w3.org/2005/03/addressing"
+ xmlns:ncex="http://www.consumer.org"
+ xmlns:npex="http://www.producer.org">
+ <wsnt:ConsumerReference>
+ <wsa:Address>
+ http://www.consumer.org/service/endpoint
+ </wsa:Address>
+ </wsnt:ConsumerReference>
+ <wsnt:Filter>
+ <wsnt:TopicExpression Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">
+ myTopic
+ </wsnt:TopicExpression>
+ </wsnt:Filter>
+</wsnt:Subscribe>
\ No newline at end of file