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

io.github.emm035.openapi.immutables.v3.schemas.AbstractOneOfSchema Maven / Gradle / Ivy

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

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.github.emm035.openapi.immutables.v3.references.Referenceable;
import io.github.emm035.openapi.immutables.v3.shared.OpenApiStyle;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

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


@OpenApiStyle
@Immutable
// Necessary to override deserializer for io.github.emm035.open.api.core.v3.components.schemas.Schema
@JsonDeserialize
public abstract class AbstractOneOfSchema implements Schema {
  public abstract List> getOneOf();

  public abstract Optional getDiscriminator();

  public static OneOfSchema of(Referenceable... schemas) {
    return OneOfSchema.builder()
      .addOneOf(schemas)
      .build();
  }

  @Value.Check
  AbstractOneOfSchema normalizeExtensions() {
    if (Checks.allValid(this)) {
      return this;
    }
    return OneOfSchema.builder()
      .from(this)
      .setExtensions(Checks.validExtensions(this))
      .build();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy