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

com.jongsoft.utils.control.OptionalNone Maven / Gradle / Ivy

The newest version!
package com.jongsoft.utils.control;

import com.jongsoft.utils.core.None;
import com.jongsoft.utils.core.Runner;

import java.util.Objects;
import java.util.function.Function;
import java.util.function.Supplier;

class OptionalNone extends None implements Optional {

    protected static final OptionalNone NONE = new OptionalNone<>();

    private static final long serialVersionUID = 1L;

    @Override
    public T getOrSupply(Supplier supplier) {
        return supplier.get();
    }

    @Override
    public  T getOrThrow(Supplier exceptionSupplier) throws X {
        Objects.requireNonNull(exceptionSupplier, "Exception supplier cannot be null");
        throw exceptionSupplier.get();
    }

    @Override
    public  Optional map(Function mapper) {
        return Optional.empty();
    }

    @Override
    public  void elseThrow(Supplier exceptionSupplier) throws X {
        ifNotPresent(exceptionSupplier);
    }

    @Override
    public void elseRun(Runner runner) {
        runner.run();
    }

    @Override
    public String toString() {
        return "Optional: " + super.toString();
    }
}