You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2003/11/24 15:23:08 UTC
cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/enterprise/deploy/server JmxProgressObject.java
ammulder 2003/11/24 06:23:08
Modified: modules/core/src/java/org/apache/geronimo/enterprise/deploy/server
JmxProgressObject.java
Log:
Change to make notification listener remove properly
- add equals and hashCode to filter
- call remove method that accepts a filter as one of the args
Revision Changes Path
1.4 +21 -3 incubator-geronimo/modules/core/src/java/org/apache/geronimo/enterprise/deploy/server/JmxProgressObject.java
Index: JmxProgressObject.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/enterprise/deploy/server/JmxProgressObject.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JmxProgressObject.java 22 Nov 2003 20:08:54 -0000 1.3
+++ JmxProgressObject.java 24 Nov 2003 14:23:08 -0000 1.4
@@ -101,6 +101,7 @@
private JobDeploymentStatus status;
private EventListenerList listenerList = new EventListenerList();
private NotificationListener listener;
+ private NotificationFilter filter;
public JmxProgressObject(int jobID, MBeanServer server, CommandType command) {
status = new JobDeploymentStatus(command);
@@ -108,7 +109,7 @@
this.server = server;
try {
server.addNotificationListener(CONTROLLER, listener = new PONotificationListener(),
- new PONotificationFilter(jobID),null);
+ filter = new PONotificationFilter(jobID),null);
server.invoke(CONTROLLER, "startDeploymentJob", new Object[]{new Integer(jobID)}, new String[]{Integer.TYPE.toString()});
} catch(InstanceNotFoundException e) {
throw new RuntimeException("ProgressObject unable to register with server");
@@ -470,13 +471,15 @@
}
if(status.isCompleted() || status.isFailed()) {
try {
- server.removeNotificationListener(CONTROLLER, listener);
+ server.removeNotificationListener(CONTROLLER, listener, filter, null);
} catch(InstanceNotFoundException e) {
log.error("Unable to remove notification listener", e);
} catch(ListenerNotFoundException e) {
log.error("Unable to remove notification listener", e);
}
}
+ } else {
+ log.error("Got a notification for "+dn.getDeploymentID()+", expecting "+jobID);
}
}
}
@@ -502,6 +505,21 @@
result = ((DeploymentNotification)notification).getDeploymentID() == jobID;
}
return result;
+ }
+
+ public boolean equals(Object o) {
+ if(this == o) return true;
+ if(!(o instanceof PONotificationFilter)) return false;
+
+ final PONotificationFilter poNotificationFilter = (PONotificationFilter)o;
+
+ if(jobID != poNotificationFilter.jobID) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ return jobID;
}
}
}