1 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 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 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 |