001package com.hammurapi.common; 002 003import java.util.Map; 004import java.util.concurrent.ConcurrentHashMap; 005 006/** 007 * Wraps java.util.Observable into com.hammurapi.Observable. 008 * @author Pavel Vlasov 009 * 010 */ 011public class ObservableAdapter implements Observable<java.util.Observable> { 012 013 private java.util.Observable observable; 014 015 016 public ObservableAdapter(java.util.Observable observable) { 017 this.observable = observable; 018 } 019 020 private Map<Observer<?>, java.util.Observer> observerMap = new ConcurrentHashMap<Observer<?>, java.util.Observer>(); 021 022 023 @Override 024 public void addObserver(final Observer<? super java.util.Observable> observer) { 025 java.util.Observer uo = new java.util.Observer() { 026 027 @Override 028 public void update(java.util.Observable o, Object arg) { 029 observer.update(observable); 030 } 031 032 }; 033 observerMap.put(observer, uo); 034 } 035 036 @Override 037 public void deleteObserver(Observer<? super java.util.Observable> o) { 038 observable.deleteObserver(observerMap.remove(o)); 039 } 040}