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

org.codingmatters.poom.ci.dependency.api.repositorydeleteresponse.optional.OptionalStatus500 Maven / Gradle / Ivy

package org.codingmatters.poom.ci.dependency.api.repositorydeleteresponse.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.repositorydeleteresponse.Status500;
import org.codingmatters.poom.ci.dependency.api.types.optional.OptionalError;

public class OptionalStatus500 {
  private final Optional optional;

  private OptionalError payload = this.payload;

  private OptionalStatus500(Status500 value) {
    this.optional = Optional.ofNullable(value);
  }

  public static OptionalStatus500 of(Status500 value) {
    return new OptionalStatus500(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 Status500 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 Status500 orElse(Status500 value) {
    return this.optional.orElse(value);
  }

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

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