You are viewing a plain text version of this content. The canonical link for it is here.
Posted to muse-commits@ws.apache.org by da...@apache.org on 2006/08/02 03:20:06 UTC

svn commit: r427834 - in /webservices/muse/trunk/modules: muse-wsn-api/src/org/apache/muse/ws/notification/ muse-wsn-impl/src/org/apache/muse/ws/notification/impl/ muse-wsn-impl/src/org/apache/muse/ws/notification/remote/

Author: danj
Date: Tue Aug  1 18:20:05 2006
New Revision: 427834

URL: http://svn.apache.org/viewvc?rev=427834&view=rev
Log:
Fix for MUSE-44 - persistence of subscription resources. This will be illustrated in a new sample project, 
wsn-producer. Subscriptions will be reloaded after an app is rebooted and continue publishing messages as 
if no reboot had happened. Persistence of subscription data is very similar to that of router table data.

Added:
    webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducerPersistence.java
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/NotificationProducerFilePersistence.java
Modified:
    webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducer.java
    webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/WsnConstants.java
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/FilterFactory.java
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/Messages.properties
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/PublishAllMessagesFilter.java
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleNotificationProducer.java
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleSubscriptionManager.java
    webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/remote/NotificationConsumerClient.java

Modified: webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducer.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducer.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducer.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducer.java Tue Aug  1 18:20:05 2006
@@ -54,6 +54,8 @@
         WstConstants.TOPIC_SET_QNAME
     };
     
+    void addSubscription(WsResource subscription);
+    
     Topic addTopic(QName topicName) 
         throws BaseFault;
     
@@ -105,6 +107,8 @@
     
     void publish(QName topicName, XmlSerializable content)
         throws SoapFault;
+    
+    void removeSubscription(EndpointReference subscriptionEPR);
     
     /**
      * 

Added: webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducerPersistence.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducerPersistence.java?rev=427834&view=auto
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducerPersistence.java (added)
+++ webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/NotificationProducerPersistence.java Tue Aug  1 18:20:05 2006
@@ -0,0 +1,27 @@
+/*=============================================================================*
+ *  Copyright 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.muse.ws.notification;
+
+import org.apache.muse.core.Persistence;
+import org.apache.muse.core.ResourceManagerListener;
+
+public interface NotificationProducerPersistence extends Persistence, ResourceManagerListener
+{
+    NotificationProducer getNotificationProducer();
+    
+    void setNotificationProducer(NotificationProducer producer);
+}

Modified: webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/WsnConstants.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/WsnConstants.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/WsnConstants.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-api/src/org/apache/muse/ws/notification/WsnConstants.java Tue Aug  1 18:20:05 2006
@@ -48,15 +48,15 @@
     
     public static final String PULL_POINT_CREATION_URI = WSDL_NAMESPACE_URI + "/PullPointCreation";
     
-    public static final String NOTIFY_URI = WSDL_NAMESPACE_URI + "/Notify";
+    public static final String NOTIFY_URI = CONSUMER_URI + "/NotifyRequest";
     
-    public static final String SUBSCRIBE_URI = WSDL_NAMESPACE_URI + "/Subscribe";
+    public static final String SUBSCRIBE_URI = PRODUCER_URI + "/SubscribeRequest";
     
-    public static final String GET_CURRENT_URI = WSDL_NAMESPACE_URI + "/GetCurrentMessage";
+    public static final String GET_CURRENT_URI = PRODUCER_URI + "/GetCurrentMessageRequest";
     
-    public static final String PAUSE_URI = WSDL_NAMESPACE_URI + "/PauseSubscription";
+    public static final String PAUSE_URI = SUBSCRIPTION_MGR_URI + "/PauseSubscriptionRequest";
     
-    public static final String RESUME_URI = WSDL_NAMESPACE_URI + "/ResumeSubscription";
+    public static final String RESUME_URI = SUBSCRIPTION_MGR_URI + "/ResumeSubscriptionRequest";
 
     public static final QName NOTIFICATION_MSG_QNAME = 
         new QName(NAMESPACE_URI, "NotificationMessage", PREFIX);

Modified: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/FilterFactory.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/FilterFactory.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/FilterFactory.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/FilterFactory.java Tue Aug  1 18:20:05 2006
@@ -74,7 +74,7 @@
         
         if (content != null)
         {
-            String dialect = props.getAttribute(WsnConstants.DIALECT);
+            String dialect = content.getAttribute(WsnConstants.DIALECT);
             String pattern = XmlUtils.extractText(content);
             return new MessagePatternFilter(pattern, dialect);
         }

Modified: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/Messages.properties
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/Messages.properties?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/Messages.properties (original)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/Messages.properties Tue Aug  1 18:20:05 2006
@@ -12,7 +12,7 @@
 NoTopicConsumers = There are no TopicConsumers associated with the topic 'XXX'.
 NullMessageArray = The NotificationMessage array is null.
 NullProducerResource = The owning resource (the producer) is null.
-NoSubscriptionManager = There is no resource that implements the WS-N SubscriptionManager portType defined in touchpoint.xml. In order to use and manage subscriptions, a touchpoint must expose a resource of type com.ibm.ws.notification.Subscription (or a sub-type); this resource will represent all new subscriptions created by the resource.
+NoSubscriptionManager = There is no resource that implements the WS-N SubscriptionManager portType defined in muse.xml. In order to use and manage subscriptions, an endpoint must expose a resource with a capability of 'http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager'; this resource will represent all new subscriptions created by the resource.
 FoundSubscriptionManager = Successfully found the SubscriptionManager endpoint at 'XXX' with resource name 'XXX'. All Subscription resources will be managed by this endpoint.
 NullConsumerEPR = The wsn:ConsumerReference is null.
 UseNotifyIsFalse = The UseNotify value is 'false' - this implementation of WS-N Subscription only supports UseNotify = 'true' (that is, it only sends subscriptions to WS-N Notify).
@@ -37,3 +37,4 @@
 NoTopicExpressionText = The wsn:TopicExpression element in the Subscribe message does not have any text inside of it. There must be a valid topic path inside the element.
 InvalidTopicDialect = The topic path dialect 'XXX' is invalid - only the simple and concrete dialects from WS-N 1.2 are supported.
 NullConsumerElement = The Subscribe message does not contain a wsn:ConsumerReference element.
+IncorrectPersistenceRoot = This implementation of the NotificationProducer capability requires that any persistence implementation have the XXX interface. Your class - XXX - does not implement the methods from this interface.

Added: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/NotificationProducerFilePersistence.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/NotificationProducerFilePersistence.java?rev=427834&view=auto
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/NotificationProducerFilePersistence.java (added)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/NotificationProducerFilePersistence.java Tue Aug  1 18:20:05 2006
@@ -0,0 +1,117 @@
+/*=============================================================================*
+ *  Copyright 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.muse.ws.notification.impl;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.w3c.dom.Element;
+
+import org.apache.muse.core.AbstractFilePersistence;
+import org.apache.muse.core.Resource;
+import org.apache.muse.util.xml.XmlUtils;
+import org.apache.muse.ws.addressing.EndpointReference;
+import org.apache.muse.ws.addressing.soap.SoapFault;
+import org.apache.muse.ws.notification.Filter;
+import org.apache.muse.ws.notification.NotificationProducer;
+import org.apache.muse.ws.notification.NotificationProducerPersistence;
+import org.apache.muse.ws.notification.SubscriptionManager;
+import org.apache.muse.ws.notification.WsnConstants;
+import org.apache.muse.ws.resource.WsResource;
+
+public class NotificationProducerFilePersistence 
+    extends AbstractFilePersistence implements NotificationProducerPersistence
+{
+    private NotificationProducer _producer = null;
+    
+    protected Resource reloadResource(Element resourceXML) 
+        throws SoapFault
+    {
+        //
+        // get the EPR of the entry resource so we can look it up
+        //
+        Element subEprXML = XmlUtils.getElement(resourceXML, WsnConstants.SUBSCRIPTION_EPR_QNAME);
+        EndpointReference subEPR = new EndpointReference(subEprXML);
+        
+        //
+        // get properties of the subscription so we can add them back to 
+        // the resource instance
+        //
+        Element consumerEprXML = XmlUtils.getElement(resourceXML, WsnConstants.CONSUMER_QNAME);
+        EndpointReference consumerEPR = new EndpointReference(consumerEprXML);
+        
+        Element producerEprXML = XmlUtils.getElement(resourceXML, WsnConstants.PRODUCER_QNAME);
+        EndpointReference producerEPR = new EndpointReference(producerEprXML);
+        
+        Element filterXML = XmlUtils.getElement(resourceXML, WsnConstants.FILTER_QNAME);
+        Filter filter = FilterFactory.getInstance().newInstance(filterXML, null);
+        
+        //
+        // find the subscription resource, use the SubscriptionManager capability 
+        // to set property values
+        //
+        WsResource subResource = (WsResource)getResourceManager().getResource(subEPR);
+        SubscriptionManager sub = (SubscriptionManager)subResource.getCapability(WsnConstants.SUBSCRIPTION_MGR_URI);
+        
+        sub.setConsumerReference(consumerEPR);
+        sub.setProducerReference(producerEPR);
+        sub.setFilter(filter);
+        
+        getNotificationProducer().addSubscription(subResource);
+        
+        return subResource;
+    }
+
+    protected void createResourceFile(EndpointReference epr, Resource resource, File resourceFile) 
+        throws SoapFault
+    {
+        SubscriptionManager sub = (SubscriptionManager)resource.getCapability(WsnConstants.SUBSCRIPTION_MGR_URI);
+        Element subXML = sub.toXML();
+        
+        try
+        {
+            XmlUtils.toFile(subXML, resourceFile);
+        }
+        
+        catch (IOException error)
+        {
+            throw new SoapFault(error);
+        }
+    }
+    
+    public void resourceAdded(EndpointReference epr, Resource resource) 
+        throws SoapFault
+    {
+        createResourceFile(epr, resource);
+    }
+    
+    public void resourceRemoved(EndpointReference epr)
+        throws SoapFault
+    {
+        destroyResourceFile(epr);
+    }
+
+    public NotificationProducer getNotificationProducer()
+    {
+        return _producer;
+    }
+
+    public void setNotificationProducer(NotificationProducer producer)
+    {
+        _producer = producer;
+    }
+}

Modified: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/PublishAllMessagesFilter.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/PublishAllMessagesFilter.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/PublishAllMessagesFilter.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/PublishAllMessagesFilter.java Tue Aug  1 18:20:05 2006
@@ -19,7 +19,7 @@
 import org.apache.muse.util.xml.XPathUtils;
 import org.apache.muse.ws.notification.faults.InvalidMessageContentExpressionFault;
 
-class PublishAllMessagesFilter extends MessagePatternFilter
+public class PublishAllMessagesFilter extends MessagePatternFilter
 {
     private static PublishAllMessagesFilter _SINGLETON = null;
     

Modified: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleNotificationProducer.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleNotificationProducer.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleNotificationProducer.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleNotificationProducer.java Tue Aug  1 18:20:05 2006
@@ -31,10 +31,12 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
+import org.apache.muse.core.Persistence;
 import org.apache.muse.core.Resource;
 import org.apache.muse.core.ResourceManager;
 import org.apache.muse.core.ResourceManagerListener;
 import org.apache.muse.core.routing.MessageHandler;
+import org.apache.muse.util.LoggingUtils;
 import org.apache.muse.util.ReflectUtils;
 import org.apache.muse.util.messages.Messages;
 import org.apache.muse.util.messages.MessagesFactory;
@@ -90,7 +92,7 @@
     
     private TopicSet _topicSet = new SimpleTopicSet();
     
-    protected synchronized void addSubscription(Resource sub)
+    public synchronized void addSubscription(WsResource sub)
     {
         SubscriptionManager subMgr = 
             (SubscriptionManager)sub.getCapability(WsnConstants.SUBSCRIPTION_MGR_URI);
@@ -286,6 +288,23 @@
             throw new RuntimeException(_MESSAGES.get("NoSubscriptionManager"));
         
         //
+        // make sure any persistence impl is of the right type
+        //
+        Persistence persistence = getPersistence();
+        
+        if (persistence != null)
+        {
+            if (!NotificationProducerPersistence.class.isAssignableFrom(persistence.getClass()))
+            {
+                Object[] filler = { NotificationProducerPersistence.class, persistence.getClass() };
+                throw new RuntimeException(_MESSAGES.get("IncorrectPersistenceRoot", filler));
+            }
+            
+            NotificationProducerPersistence npPersistence = (NotificationProducerPersistence)persistence;
+            npPersistence.setNotificationProducer(this);
+        }
+        
+        //
         // make sure we can listen for new subscriptions/destructions
         //
         manager.addListener(this);
@@ -372,7 +391,7 @@
         publish(topicName, content.toXML());
     }
     
-    protected synchronized void removeSubscription(EndpointReference epr)
+    public synchronized void removeSubscription(EndpointReference epr)
     {
         _subscriptionsByEPR.remove(epr);
     }
@@ -384,7 +403,22 @@
         // collection will not be updated until afterwards
         //
         if (resource.hasCapability(WsnConstants.SUBSCRIPTION_MGR_URI))
-            addSubscription(resource);
+        {
+            addSubscription((WsResource)resource);
+        
+            NotificationProducerPersistence persistence = (NotificationProducerPersistence)getPersistence();
+            
+            try
+            {
+                if (persistence != null)
+                    persistence.resourceAdded(epr, resource);
+            }
+            
+            catch (SoapFault fault)
+            {
+                LoggingUtils.logError(getLog(), fault);
+            }
+        }
     }
 
     public void resourceRemoved(EndpointReference epr)
@@ -394,6 +428,19 @@
         // collection will not be updated until afterwards
         //
         removeSubscription(epr);
+        
+        NotificationProducerPersistence persistence = (NotificationProducerPersistence)getPersistence();
+        
+        try
+        {
+            if (persistence != null)
+                persistence.resourceRemoved(epr);
+        }
+        
+        catch (SoapFault fault)
+        {
+            LoggingUtils.logError(getLog(), fault);
+        }
     }
 
     public WsResource subscribe(EndpointReference consumer, 

Modified: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleSubscriptionManager.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleSubscriptionManager.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleSubscriptionManager.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/impl/SimpleSubscriptionManager.java Tue Aug  1 18:20:05 2006
@@ -90,6 +90,8 @@
     
     private boolean _isPaused = false;
     
+    private boolean _isUsingTrace = false;
+    
     private EndpointReference _producer = null;
 
     /**
@@ -107,11 +109,18 @@
         EndpointReference consumer = getConsumerReference();
         EndpointReference producer = getProducerReference();
         Environment env = getEnvironment();
-        return new NotificationConsumerClient(consumer, producer, env);
+        
+        NotificationConsumerClient client = new NotificationConsumerClient(consumer, producer, env);
+        client.setTrace(isUsingTrace());
+        
+        return client;
     }
     
     protected synchronized NotificationConsumerClient getConsumerClient()
     {
+        if (_client == null)
+            _client = createConsumerClient();
+        
         return _client;
     }
     
@@ -165,26 +174,18 @@
     {
         super.initialize();
         
-        if (getProducerReference() == null)
-            throw new IllegalStateException(_MESSAGES.get("NoProducerEPR"));
-        
-        if (getConsumerReference() == null)
-            throw new IllegalStateException(_MESSAGES.get("NoConsumerEPR"));
-
-        if (getFilter() == null)
-            throw new IllegalStateException(_MESSAGES.get("NoFilter"));
-        
         if (!getResource().hasCapability(WsrlConstants.SCHEDULED_TERMINATION_URI))
             throw new IllegalStateException("Subscriptions must support WSRL ScheduledTermination");
         
-        boolean trace = false;
         String traceString = getInitializationParameter(_TRACE_PARAM);
         
         if (traceString != null)
-            trace = Boolean.valueOf(traceString).booleanValue();
-
-        _client = createConsumerClient();
-        _client.setTrace(trace);
+            _isUsingTrace = Boolean.valueOf(traceString).booleanValue();
+    }
+    
+    protected boolean isUsingTrace()
+    {
+        return _isUsingTrace;
     }
     
     public synchronized boolean isPaused()
@@ -257,16 +258,19 @@
         return toXML(XmlUtils.EMPTY_DOC);
     }
 
-    public Element toXML(Document factory)
+    public Element toXML(Document doc)
     {
-        Element root = XmlUtils.createElement(factory, WsnConstants.SUBSCRIBE_RESPONSE_QNAME);
+        Element root = XmlUtils.createElement(doc, WsnConstants.SUBSCRIBE_QNAME);
         
-        EndpointReference epr = getWsResource().getEndpointReference();
-        
-        Element subXML = XmlUtils.createElement(factory, WsnConstants.SUBSCRIPTION_EPR_QNAME);
-        XmlUtils.moveSubTree(epr.toXML(), subXML);
+        EndpointReference sub = getWsResource().getEndpointReference();
+        EndpointReference consumer = getConsumerReference();
+        EndpointReference producer = getProducerReference();
+        Filter filter = getFilter();
         
-        root.appendChild(subXML);
+        XmlUtils.setElement(root, WsnConstants.SUBSCRIPTION_EPR_QNAME, sub);
+        XmlUtils.setElement(root, WsnConstants.CONSUMER_QNAME, consumer);
+        XmlUtils.setElement(root, WsnConstants.PRODUCER_QNAME, producer);
+        XmlUtils.setElement(root, WsnConstants.FILTER_QNAME, filter);
         
         return root;
     }

Modified: webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/remote/NotificationConsumerClient.java
URL: http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/remote/NotificationConsumerClient.java?rev=427834&r1=427833&r2=427834&view=diff
==============================================================================
--- webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/remote/NotificationConsumerClient.java (original)
+++ webservices/muse/trunk/modules/muse-wsn-impl/src/org/apache/muse/ws/notification/remote/NotificationConsumerClient.java Tue Aug  1 18:20:05 2006
@@ -33,7 +33,7 @@
  * the base WS-RF interfaces.
  *
  * @author Dan Jemiolo (danj)
- *
+ * 
  */
 
 public class NotificationConsumerClient extends WsResourceClient



---------------------------------------------------------------------
To unsubscribe, e-mail: muse-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-commits-help@ws.apache.org