
com.github.phantomthief.failover.impl.DummyFailover Maven / Gradle / Ivy
package com.github.phantomthief.failover.impl;
import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.Collections.emptySet;
import static java.util.Collections.singletonList;
import static java.util.Collections.unmodifiableList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;
import javax.annotation.Nonnull;
import com.github.phantomthief.failover.Failover;
/**
* @author w.vela
* Created on 16/6/2.
*/
public class DummyFailover implements Failover {
private final Supplier> supplier;
private DummyFailover(@Nonnull Supplier> all) {
this.supplier = checkNotNull(all);
}
public static DummyFailover ofCollection(@Nonnull Collection all) {
checkNotNull(all);
return new DummyFailover<>(() -> all);
}
public static DummyFailover ofSingle(T single) {
return new DummyFailover<>(() -> singletonList(single));
}
public static DummyFailover ofCollectionSupplier(@Nonnull Supplier> supplier) {
return new DummyFailover<>(supplier);
}
public static DummyFailover ofSingleSupplier(@Nonnull Supplier single) {
checkNotNull(single);
return new DummyFailover<>(() -> singletonList(single.get()));
}
@Override
public List getAll() {
Collection all = supplier.get();
if (all instanceof List) {
return unmodifiableList((List extends T>) all);
} else {
return new ArrayList<>(all);
}
}
@Override
public void fail(T object) {
// do nothing
}
@Override
public void down(T object) {
// do nothing
}
@Override
public List getAvailable() {
return getAll();
}
@Override
public Set getFailed() {
return emptySet();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy