KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > jmx > WaitForState


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.jmx;
5
6 import org.apache.log4j.Logger;
7 import org.oddjob.Stateful;
8 import org.oddjob.state.JobState;
9 import org.oddjob.state.JobStateEvent;
10 import org.oddjob.state.JobStateListener;
11
12 public class WaitForState implements JobStateListener {
13     private static final Logger logger = Logger.getLogger(WaitForState.class);
14     
15     private final Stateful stateful;
16     private JobState jobState;
17     
18     public WaitForState(Object JavaDoc o) {
19         stateful = (Stateful) o;
20     }
21     
22     public void waitFor(JobState required) {
23         stateful.addJobStateListener(this);
24         try {
25             synchronized (this) {
26                 while (jobState != required) {
27                     logger.debug("Waiting for [" + stateful +
28                             "] to be [" + required + "]");
29                     wait();
30                 }
31             }
32         } catch (InterruptedException JavaDoc e) {
33         } finally {
34             stateful.removeJobStateListener(this);
35         }
36         
37     }
38
39     synchronized public void jobStateChange(JobStateEvent event) {
40         jobState = event.getJobState();
41         notifyAll();
42     }
43     
44
45 }
Popular Tags