1 2 package org.state4j.publishing; 3 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Vector; 7 8 public class PublisherImpl implements Publisher { 9 private List<Observer> observers = new Vector<Observer>(); 10 11 public PublisherImpl() {} 12 13 public void attach(Observer arg0) { 14 this.observers.add(arg0); 15 arg0.addPublisher(this); 16 } 17 18 public void attach(List<Observer> arg0) { 19 Iterator<Observer> iter = arg0.iterator(); 20 while (iter.hasNext()) { 21 Observer arg1 = iter.next(); 22 this.observers.add(arg1); 23 arg1.addPublisher(this); 24 } 25 } 26 27 public void detach(Observer arg0) { 28 this.observers.remove(arg0); 29 arg0.removePublisher(this); 30 } 31 32 public void publish(Publishable arg0) { 33 Iterator<Observer> iter = this.observers.iterator(); 34 while (iter.hasNext()) { 35 Observer observer = iter.next(); 36 try { 37 observer.notify(arg0); 38 } catch (InterruptedException exc) { 39 } 40 } 41 } 42 }