// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package util;
import java.util.Date;
public abstract class Clock {
protected static final SystemClock SYSTEM_CLOCK = new SystemClock();
protected static Clock instance;
static {
restoreDefaultClock();
}
protected Clock() {
this(false);
}
protected Clock(boolean setAsInstance) {
if (setAsInstance) instance = this;
}
abstract long currentClockTimeInMillis() ;
Date currentClockDate() {
return new Date(currentClockTimeInMillis());
}
public static long currentTimeInMillis() {
return instance.currentClockTimeInMillis();
}
public static Date currentDate() {
return instance.currentClockDate();
}
public static void restoreDefaultClock() {
Clock.instance = SYSTEM_CLOCK;
}
}
class SystemClock extends Clock {
@Override
long currentClockTimeInMillis() {
return System.currentTimeMillis();
}
}