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

org.codingmatters.poom.ci.dependency.api.repositoryputresponse.optional.OptionalStatus200 Maven / Gradle / Ivy

package org.codingmatters.poom.ci.dependency.api.repositoryputresponse.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.repositoryputresponse.Status200;
import org.codingmatters.poom.ci.dependency.api.types.optional.OptionalRepository;

public class OptionalStatus200 {
  private final Optional optional;

  private OptionalRepository payload = this.payload;

  private OptionalStatus200(Status200 value) {
    this.optional = Optional.ofNullable(value);
  }

  public static OptionalStatus200 of(Status200 value) {
    return new OptionalStatus200(value);
  }

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

  public Status200 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 Status200 orElse(Status200 value) {
    return this.optional.orElse(value);
  }

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

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