- public java.lang.AutoCloseable createInstance() {
- TimeUnit unit = TimeUnit.MILLISECONDS;
- if (getTickDuration() != null && getThreadFactoryDependency() == null && getTicksPerWheel() == null) {
- return new HashedWheelTimerCloseable(new HashedWheelTimer(getTickDuration(), unit));
- }
- if (getTickDuration() != null && getThreadFactoryDependency() == null && getTicksPerWheel() != null) {
- return new HashedWheelTimerCloseable(new HashedWheelTimer(getTickDuration(), unit, getTicksPerWheel()));
- }
- if (getTickDuration() == null && getThreadFactoryDependency() != null && getTicksPerWheel() == null) {
- return new HashedWheelTimerCloseable(new HashedWheelTimer(getThreadFactoryDependency()));
- }
- if (getTickDuration() != null && getThreadFactoryDependency() != null && getTicksPerWheel() == null) {
- return new HashedWheelTimerCloseable(new HashedWheelTimer(getThreadFactoryDependency(), getTickDuration(),
- unit));
- }
- if (getTickDuration() != null && getThreadFactoryDependency() != null && getTicksPerWheel() != null) {
- return new HashedWheelTimerCloseable(new HashedWheelTimer(getThreadFactoryDependency(), getTickDuration(),
- unit, getTicksPerWheel()));
- }
- return new HashedWheelTimerCloseable(new HashedWheelTimer());
- }
-
- static final private class HashedWheelTimerCloseable implements AutoCloseable, Timer {
-
- private final Timer timer;
+ public AutoCloseable createInstance() {
+ // The service is provided via blueprint so wait for and return it here for backwards compatibility.
+ final WaitingServiceTracker<Timer> tracker = WaitingServiceTracker.create(
+ Timer.class, bundleContext, "(type=global-timer)");
+ final Timer timer = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);