package gueei.binding;
import java.util.Collection;
public interface IObservable<T> {
// Hack to know the generic type of observable
public abstract Class<T> getType();
public abstract void subscribe(Observer o);
public abstract void unsubscribe(Observer o);
// For debug purpose, internal use only
abstract Observer[] getAllObservers();
public abstract void notifyChanged(Object initiator);
public abstract void notifyChanged(Collection<Object> initiators);
public abstract void notifyChanged();
public abstract void set(T newValue, Collection<Object> initiators);
public abstract void set(T newValue);
/**
* _setObject() is a type unchecked version of set()
* This is intended for internal use only
* @param newValue
* @param initiators
*/
public abstract void _setObject(Object newValue, Collection<Object> initiators);
public abstract T get();
public abstract boolean isNull();
}