package org.zstack.header.core; import org.zstack.header.HasThreadContext; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import static java.util.Arrays.asList; /** */ public abstract class AbstractCompletion implements AsyncBackup, HasThreadContext { protected List<AsyncBackup> backups; private final AtomicBoolean successCalled = new AtomicBoolean(false); private final AtomicBoolean failCalled = new AtomicBoolean(false); public final List<AsyncBackup> getBackups() { return backups; } public final void setBackups(List<AsyncBackup> backups) { this.backups = backups; } protected AbstractCompletion(AsyncBackup one, AsyncBackup... others) { if (one != null) { backups = new ArrayList<>(); backups.add(one); Collections.addAll(backups, others); } else { backups = asList(others); } } public final AtomicBoolean getSuccessCalled() { return successCalled; } public final AtomicBoolean getFailCalled() { return failCalled; } }