1 package org.oddjob.jmx.client; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 7 import org.oddjob.state.JobState; 8 import org.oddjob.state.JobStateEvent; 9 import org.oddjob.state.JobStateListener; 10 11 17 18 class ClientStateHelper { 19 20 21 private JobStateEvent lastEvent; 22 23 24 private final List listeners = new ArrayList (); 25 26 27 private final Object owner; 28 29 34 35 public ClientStateHelper(Object owner) { 36 this.owner = owner; 37 lastEvent = new JobStateEvent(owner, JobState.READY, null); 38 } 39 40 public void jobStateChange(JobStateEvent event) { 41 JobStateEvent newEvent = new JobStateEvent(owner, event.getJobState(), 44 event.getTime(), event.getException()); 45 46 lastEvent = newEvent; 47 List copy = null; 48 synchronized (listeners) { 49 copy = new ArrayList (listeners); 50 } 51 for (Iterator it = copy.iterator(); it.hasNext();) { 52 ((JobStateListener)it.next()).jobStateChange(newEvent); 53 } 54 } 55 56 61 public void addJobStateListener(JobStateListener listener) { 62 synchronized (listeners) { 63 listeners.add(listener); 64 JobStateEvent nowEvent = null; 65 nowEvent = lastEvent; 66 67 listener.jobStateChange(nowEvent); 68 } 69 } 70 71 76 public void removeJobStateListener(JobStateListener listener) { 77 synchronized (listeners) { 78 listeners.remove(listener); 79 } 80 } 81 82 } 83 | Popular Tags |