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 }