package org.prevayler.implementation.clock;
import java.util.Date;
import org.prevayler.Clock;
public class PausableClock implements Clock {
private final Clock _realClock;
private final BrokenClock _brokenClock=new BrokenClock();
private Clock _activeClock;
public PausableClock( Clock realClock){
_realClock=realClock;
resume();
}
public synchronized Date time(){
return _activeClock.time();
}
public synchronized void pause(){
advanceTo(_realClock.time());
_activeClock=_brokenClock;
}
public void advanceTo( Date time){
_brokenClock.advanceTo(time);
}
public synchronized void resume(){
_activeClock=_realClock;
}
public Date realTime(){
return _realClock.time();
}
}