Class OpenApiDocsSupport

java.lang.Object
org.praxisplatform.uischema.controller.docs.OpenApiDocsSupport

@Component public class OpenApiDocsSupport extends Object
Componente de suporte para resolucao e leitura de documentos OpenAPI do starter.

Esta classe concentra a logica compartilhada usada pelos controladores documentais para resolver grupos OpenAPI, buscar o documento correto e escolher o content-type mais adequado ao extrair schemas e exemplos. Ela evita duplicacao de heuristicas entre /schemas/filtered e /schemas/catalog.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    com.fasterxml.jackson.databind.JsonNode
    fetchOpenApiDocument(org.springframework.web.client.RestTemplate restTemplate, String openApiBasePath, String group, org.slf4j.Logger logger)
    Busca o documento OpenAPI de um grupo especifico, com fallback para o documento base.
    inferMediaType(com.fasterxml.jackson.databind.JsonNode contentRoot)
    Infere o media type preferencial a partir de um bloco OpenAPI content.
    Resolve o grupo OpenAPI mais adequado a partir do path do recurso.
    com.fasterxml.jackson.databind.JsonNode
    selectPreferredContentNode(com.fasterxml.jackson.databind.JsonNode contentRoot)
    Seleciona o content node preferencial dentro de um bloco OpenAPI content.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • OpenApiDocsSupport

      public OpenApiDocsSupport()
  • Method Details

    • resolveGroupFromPath

      public String resolveGroupFromPath(String path)
      Resolve o grupo OpenAPI mais adequado a partir do path do recurso.

      Primeiro tenta usar OpenApiGroupResolver quando presente. Se nao houver resolvedor configurado ou ele nao retornar valor util, aplica um fallback baseado nos primeiros segmentos relevantes do path.

      Parameters:
      path - path do recurso HTTP
      Returns:
      nome do grupo OpenAPI resolvido
    • fetchOpenApiDocument

      public com.fasterxml.jackson.databind.JsonNode fetchOpenApiDocument(org.springframework.web.client.RestTemplate restTemplate, String openApiBasePath, String group, org.slf4j.Logger logger)
      Busca o documento OpenAPI de um grupo especifico, com fallback para o documento base.

      O metodo tenta primeiro /v3/api-docs/{group}. Se o grupo nao existir, faz fallback para o documento base configurado. Esse comportamento e importante para manter resiliencia em ambientes onde nem todos os recursos estao organizados por grupos explicitamente publicados.

      Parameters:
      restTemplate - cliente HTTP usado para buscar o documento
      openApiBasePath - path base do endpoint OpenAPI
      group - grupo desejado
      logger - logger do chamador para observabilidade
      Returns:
      documento OpenAPI carregado como JsonNode
    • selectPreferredContentNode

      public com.fasterxml.jackson.databind.JsonNode selectPreferredContentNode(com.fasterxml.jackson.databind.JsonNode contentRoot)
      Seleciona o content node preferencial dentro de um bloco OpenAPI content.

      A precedencia e application/json, depois o media type curinga, e por fim o primeiro media type disponivel. Isso padroniza a leitura de request/response bodies em documentos heterogeneos.

      Parameters:
      contentRoot - no raiz do bloco content
      Returns:
      no preferencial para leitura de schema e exemplos
    • inferMediaType

      public String inferMediaType(com.fasterxml.jackson.databind.JsonNode contentRoot)
      Infere o media type preferencial a partir de um bloco OpenAPI content.
      Parameters:
      contentRoot - no raiz do bloco content
      Returns:
      media type preferencial ou null quando inexistente