package io.cattle.platform.task;
import io.cattle.platform.lock.LockDelegator;
import io.cattle.platform.lock.definition.LockDefinition;
import javax.inject.Inject;
public abstract class AbstractSingletonTask implements LockDefinition, Task {
LockDelegator delegator;
@Override
public final void run() {
if (!delegator.tryLock(this)) {
return;
}
doRun();
}
protected abstract void doRun();
@Override
public String getLockId() {
return getName();
}
public LockDelegator getDelegator() {
return delegator;
}
@Inject
public void setDelegator(LockDelegator delegator) {
this.delegator = delegator;
}
}