1 | package com.hammurapi.common; |
2 | |
3 | import java.util.Map; |
4 | import java.util.concurrent.ConcurrentHashMap; |
5 | |
6 | /** |
7 | * Wraps java.util.Observable into com.hammurapi.Observable. |
8 | * @author Pavel Vlasov |
9 | * |
10 | */ |
11 | public class ObservableAdapter implements Observable<java.util.Observable> { |
12 | |
13 | private java.util.Observable observable; |
14 | |
15 | |
16 | public ObservableAdapter(java.util.Observable observable) { |
17 | this.observable = observable; |
18 | } |
19 | |
20 | private Map<Observer<?>, java.util.Observer> observerMap = new ConcurrentHashMap<Observer<?>, java.util.Observer>(); |
21 | |
22 | |
23 | @Override |
24 | public void addObserver(final Observer<? super java.util.Observable> observer) { |
25 | java.util.Observer uo = new java.util.Observer() { |
26 | |
27 | @Override |
28 | public void update(java.util.Observable o, Object arg) { |
29 | observer.update(observable); |
30 | } |
31 | |
32 | }; |
33 | observerMap.put(observer, uo); |
34 | } |
35 | |
36 | @Override |
37 | public void deleteObserver(Observer<? super java.util.Observable> o) { |
38 | observable.deleteObserver(observerMap.remove(o)); |
39 | } |
40 | } |