package com.sequenceiq.cloudbreak.cloud.task;
import static com.sequenceiq.cloudbreak.cloud.scheduler.PollGroup.CANCELLED;
import com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext;
import com.sequenceiq.cloudbreak.cloud.scheduler.PollGroup;
import com.sequenceiq.cloudbreak.cloud.store.InMemoryStateStore;
public abstract class AbstractPollTask<T> implements PollTask<T> {
private final AuthenticatedContext authenticatedContext;
private final boolean cancellable;
public AbstractPollTask(AuthenticatedContext authenticatedContext) {
this(authenticatedContext, true);
}
public AbstractPollTask(AuthenticatedContext authenticatedContext, boolean cancellable) {
this.authenticatedContext = authenticatedContext;
this.cancellable = cancellable;
}
@Override
public AuthenticatedContext getAuthenticatedContext() {
return authenticatedContext;
}
@Override
public boolean cancelled() {
if (!cancellable) {
return false;
}
PollGroup pollGroup = InMemoryStateStore.getStack(getAuthenticatedContext().getCloudContext().getId());
return pollGroup != null && CANCELLED.equals(pollGroup);
}
}