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]