dflorey 2004/08/09 08:02:18
Modified: webdavclient/clientlib/src/java/org/apache/webdav/lib
NotificationListener.java
Log:
Added synchronization
Revision Changes Path
1.7 +34 -30
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/NotificationListener.java
Index: NotificationListener.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/NotificationListener.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- NotificationListener.java 9 Aug 2004 10:03:52 -0000 1.6
+++ NotificationListener.java 9 Aug 2004 15:02:18 -0000 1.7
@@ -190,7 +190,9 @@
String subscriptionId =
subscribeMethod.getResponseHeader(SubscribeMethod.H_SUBSCRIPTION_ID).getValue();
logger.log(Level.INFO, "Received subscription
id="+subscriptionId+", listener: "+listener);
int id = Integer.valueOf(subscriptionId).intValue();
- subscribers.add(new Subscription(id, uri, listener));
+ synchronized ( subscribers ) {
+ subscribers.add(new Subscription(id, uri, listener));
+ }
if ( subscribersAsString == null ) {
subscribersAsString = String.valueOf(id);
} else {
@@ -208,30 +210,32 @@
public boolean unsubscribe(String uri, Subscriber listener, Credentials
credentials) {
UnsubscribeMethod unsubscribeMethod = new
UnsubscribeMethod(repositoryDomain+uri);
- for ( Iterator i = subscribers.iterator(); i.hasNext(); ) {
- Subscription subscription = (Subscription)i.next();
- if ( subscription.getSubscriber().equals(listener) ) {
- String id = String.valueOf(subscription.getId());
-
unsubscribeMethod.addRequestHeader(UnsubscribeMethod.H_SUBSCRIPTION_ID, id);
- try {
- unsubscribeMethod.setDoAuthentication(true);
- HttpState httpState = new HttpState();
- httpState.setCredentials(null, repositoryHost,
credentials);
- HttpConnection httpConnection = new
HttpConnection(repositoryHost, repositoryPort, protocol);
- httpConnection.setConnectionTimeout(CONNECTION_TIMEOUT);
- int state =
unsubscribeMethod.execute(httpState, httpConnection);
- if ( state == HttpStatus.SC_OK ) {
- i.remove();
- return true;
- } else {
- logger.log(Level.SEVERE,
"Unsubscription failed. State: "+state);
- }
- } catch (IOException e) {
- logger.log(Level.SEVERE, "Unsubscription of
listener '"+listener+"' failed!", e);
- }
- }
- }
- logger.log(Level.SEVERE, "Listener not unsubscribed!");
+ synchronized ( subscribers ) {
+ for ( Iterator i = subscribers.iterator(); i.hasNext(); ) {
+ Subscription subscription = (Subscription)i.next();
+ if ( subscription.getSubscriber().equals(listener) ) {
+ String id = String.valueOf(subscription.getId());
+
unsubscribeMethod.addRequestHeader(UnsubscribeMethod.H_SUBSCRIPTION_ID, id);
+ try {
+ unsubscribeMethod.setDoAuthentication(true);
+ HttpState httpState = new HttpState();
+ httpState.setCredentials(null, repositoryHost, credentials);
+ HttpConnection httpConnection = new
HttpConnection(repositoryHost, repositoryPort, protocol);
+ httpConnection.setConnectionTimeout(CONNECTION_TIMEOUT);
+ int state = unsubscribeMethod.execute(httpState,
httpConnection);
+ if ( state == HttpStatus.SC_OK ) {
+ i.remove();
+ return true;
+ } else {
+ logger.log(Level.SEVERE, "Unsubscription failed. State:
"+state);
+ }
+ } catch (IOException e) {
+ logger.log(Level.SEVERE, "Unsubscription of listener
'"+listener+"' failed!", e);
+ }
+ }
+ }
+ }
+ logger.log(Level.SEVERE, "Listener not unsubscribed!");
return false;
}
@@ -306,10 +310,10 @@
}
}
}
-
+
private boolean isRegistered(int id) {
for ( Iterator i = subscribers.iterator(); i.hasNext(); ) {
- Subscription subscription = (Subscription)i.next();
+ Subscription subscription = (Subscription)i.next();
if ( subscription.getId() == id ) return true;
}
return false;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]