All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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) 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