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

io.github.emm035.openapi.immutables.v3.AbstractOpenApi Maven / Gradle / Ivy

package io.github.emm035.openapi.immutables.v3;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.ImmutableList;
import io.github.emm035.openapi.immutables.v3.metadata.ExternalDocumentation;
import io.github.emm035.openapi.immutables.v3.metadata.Info;
import io.github.emm035.openapi.immutables.v3.security.SecurityRequirement;
import io.github.emm035.openapi.immutables.v3.servers.Server;
import io.github.emm035.openapi.immutables.v3.shared.Extensible;
import io.github.emm035.openapi.immutables.v3.shared.OpenApiStyle;
import org.immutables.value.Value.Check;
import org.immutables.value.Value.Default;
import org.immutables.value.Value.Immutable;

import java.util.List;
import java.util.Optional;

@Immutable
@OpenApiStyle
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public abstract class AbstractOpenApi implements Extensible {
  @JsonProperty("openapi")
  public abstract String getOpenApi();
  public abstract Info getInfo();

  @Default
  public List getServers() {
    return ImmutableList.of(Server.of("/"));
  }

  public abstract Optional getComponents();
  public abstract List getSecurity();
  public abstract List getTags();
  public abstract Optional getExternalDocs();
  @Default
  public Paths getPaths() {
    return Paths.empty();
  }

  @Check
  AbstractOpenApi normalizeExtensions() {
    if (Checks.allValid(this)) {
      return this;
    }
    return OpenApi.builder()
      .from(this)
      .setExtensions(Checks.validExtensions(this))
      .build();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy