dflorey     2004/03/10 10:10:04

  Modified:    src/webdav/server/org/apache/slide/webdav/event
                        NotificationTrigger.java Subscriber.java
  Log:
  Bugfix
  
  Revision  Changes    Path
  1.5       +13 -14    
jakarta-slide/src/webdav/server/org/apache/slide/webdav/event/NotificationTrigger.java
  
  Index: NotificationTrigger.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/event/NotificationTrigger.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NotificationTrigger.java  10 Mar 2004 15:35:47 -0000      1.4
  +++ NotificationTrigger.java  10 Mar 2004 18:10:04 -0000      1.5
  @@ -26,9 +26,7 @@
   import org.apache.commons.httpclient.HttpConnection;
   import org.apache.commons.httpclient.HttpState;
   import org.apache.slide.common.Domain;
  -import org.apache.slide.event.EventCollection;
  -import org.apache.slide.event.EventCollectionListener;
  -import org.apache.slide.event.VetoException;
  +import org.apache.slide.event.*;
   import org.apache.slide.util.conf.Configurable;
   import org.apache.slide.util.conf.Configuration;
   import org.apache.slide.util.conf.ConfigurationException;
  @@ -114,11 +112,10 @@
       }
   
       private void notifySubscribers(EventCollection collection) {
  -        List events = collection.getCollection();
           Map subscriberEnumerations = new HashMap();
  -        for ( Iterator i = events.iterator(); i.hasNext(); ) {
  -            EventCollection.Event event = (EventCollection.Event)i.next();
  -            Subscriber[] subscribers = getSubscribers(event);
  +        ContentEvent[] update = 
EventCollectionFilter.getChangedContents(collection);
  +        for ( int i = 0; i < update.length; i++ ) {
  +            Subscriber[] subscribers = getSubscribers(update[i]);
               for ( int j = 0; j < subscribers.length; j++ ) {
                   final Subscriber subscriber = subscribers[j];
                   if ( subscriber.getNotificationDelay() == 0 ) {
  @@ -148,7 +145,7 @@
                       }
                   }
                   // remember this event for later poll method call
  -                ((Subscriber)subscriber).addEvent(event);
  +                ((Subscriber)subscriber).addEvent(update[i]);
               }
           }
           for ( Iterator i = subscriberEnumerations.entrySet().iterator(); 
i.hasNext(); ) {
  @@ -165,7 +162,9 @@
                   firstSubscriber = false;
                   subscriberBuffer.append(id);
               }
  -            notifySubscriber(callBack, subscriberBuffer.toString());
  +            if ( !firstSubscriber ) {
  +                notifySubscriber(callBack, subscriberBuffer.toString());
  +            }
           }
       }
   
  @@ -184,7 +183,7 @@
           }
       }
   
  -    private Subscriber []getSubscribers(EventCollection.Event event) {
  +    private Subscriber []getSubscribers(ResourceEvent event) {
           List matchingSubscribers = new ArrayList();
           for ( Iterator i = subscribers.iterator(); i.hasNext(); ) {
               Subscriber subscriber = (Subscriber)i.next();
  
  
  
  1.4       +9 -11     
jakarta-slide/src/webdav/server/org/apache/slide/webdav/event/Subscriber.java
  
  Index: Subscriber.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/event/Subscriber.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Subscriber.java   25 Feb 2004 11:09:12 -0000      1.3
  +++ Subscriber.java   10 Mar 2004 18:10:04 -0000      1.4
  @@ -54,7 +54,7 @@
           this.depth = depth;
       }
   
  -    public void addEvent(EventCollection.Event event) {
  +    public void addEvent(ResourceEvent event) {
           events.add(event);
       }
   
  @@ -82,13 +82,11 @@
           this.notify = notify;
       }
   
  -    public boolean matches(EventCollection.Event event) {
  +    public boolean matches(ResourceEvent event) {
           boolean matching = false;
  -        if ( event.getEvent() instanceof ResourceEvent ) {
  -            String eventUri = ((ResourceEvent)event.getEvent()).getUri();
  -            if ( eventUri != null && uri != null && ((depth == 
AbstractWebdavMethod.INFINITY && eventUri.startsWith(uri.toString())) || (depth == 0 
&& eventUri.equals(uri.toString())))) {
  -                matching = true;
  -            }
  +        String eventUri = event.getUri();
  +        if ( eventUri != null && uri != null && ((depth == 
AbstractWebdavMethod.INFINITY && eventUri.startsWith(uri.toString())) || (depth == 0 
&& eventUri.equals(uri.toString())))) {
  +            matching = true;
           }
           return matching;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to