//Prevayler(TM) - The Free-Software Prevalence Layer.
//Copyright (C) 2001-2003 Klaus Wuestefeld
//This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
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(); }
}