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

org.codingmatters.poom.ci.dependency.api.repositoryjustnextdownstreamrepositoriesgetresponse.optional.OptionalStatus400 Maven / Gradle / Ivy

package org.codingmatters.poom.ci.dependency.api.repositoryjustnextdownstreamrepositoriesgetresponse.optional;

import java.lang.Throwable;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import org.codingmatters.poom.ci.dependency.api.repositoryjustnextdownstreamrepositoriesgetresponse.Status400;
import org.codingmatters.poom.ci.dependency.api.types.optional.OptionalError;

public class OptionalStatus400 {
  private final Optional optional;

  private OptionalError payload = this.payload;

  private OptionalStatus400(Status400 value) {
    this.optional = Optional.ofNullable(value);
  }

  public static OptionalStatus400 of(Status400 value) {
    return new OptionalStatus400(value);
  }

  public synchronized OptionalError payload() {
    if(this.payload == null) {
      this.payload = OptionalError.of(this.optional.isPresent() ? this.optional.get().payload() : null);
    }
    return this.payload;
  }

  public Status400 get() {
    return this.optional.get();
  }

  public boolean isPresent() {
    return this.optional.isPresent();
  }

  public void ifPresent(Consumer consumer) {
    this.optional.ifPresent(consumer);
  }

  public Optional filter(Predicate predicate) {
    return this.optional.filter(predicate);
  }

  public  Optional map(Function function) {
    return this.optional.map(function);
  }

  public  Optional flatMap(Function> function) {
    return this.optional.flatMap(function);
  }

  public Status400 orElse(Status400 value) {
    return this.optional.orElse(value);
  }

  public Status400 orElseGet(Supplier supplier) {
    return this.optional.orElseGet(supplier);
  }

  public  Status400 orElseThrow(Supplier supplier) throws X {
    return this.optional.orElseThrow(supplier);
  }
}