Class OpenApiUiSchemaAutoConfiguration

java.lang.Object
org.praxisplatform.uischema.configuration.OpenApiUiSchemaAutoConfiguration

@AutoConfiguration public class OpenApiUiSchemaAutoConfiguration extends Object
Auto-configuracao principal do modulo de OpenAPI e UI Schema.

Esta classe registra os beans de infraestrutura usados pelo runtime metadata-driven: fetch de documentos OpenAPI, resolucao canonica de operacao/schema, enriquecimento de schema e suporte aos fluxos de filtro e stats.

O objetivo aqui nao e documentar o comportamento interno de cada bean em detalhes, mas deixar claro quais fronteiras o starter publica por convencao, quais beans aceitam override direto via @ConditionalOnMissingBean e quais exigem substituicao mais explicita da auto-configuracao. A narrativa arquitetural maior fica no documento tecnico da lane, nao nesta classe de bootstrap.

  • Constructor Details

    • OpenApiUiSchemaAutoConfiguration

      public OpenApiUiSchemaAutoConfiguration()
  • Method Details

    • restTemplate

      @Bean(name="openApiUiSchemaRestTemplate") @ConditionalOnMissingBean public org.springframework.web.client.RestTemplate restTemplate()
      Publica o RestTemplate usado para fetch interno de documentos OpenAPI.
    • objectMapper

      @Bean(name="openApiUiSchemaObjectMapper") @ConditionalOnMissingBean public com.fasterxml.jackson.databind.ObjectMapper objectMapper()
      Publica o ObjectMapper padrao do starter, com suporte a Java Time.
    • modelResolver

      @Bean public CustomOpenApiResolver modelResolver(com.fasterxml.jackson.databind.ObjectMapper mapper)
      Publica o CustomOpenApiResolver que enriquece schemas OpenAPI com metadados de UI.
    • uiAnalyticsAnnotationMapper

      @Bean @ConditionalOnMissingBean public UiAnalyticsAnnotationMapper uiAnalyticsAnnotationMapper()
    • uiAnalyticsOpenApiCustomizer

      @Bean @ConditionalOnBean(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.class) @ConditionalOnMissingBean(name="uiAnalyticsOpenApiCustomizer") public org.springdoc.core.customizers.GlobalOpenApiCustomizer uiAnalyticsOpenApiCustomizer(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping requestMappingHandlerMapping, CanonicalOperationResolver canonicalOperationResolver, UiAnalyticsAnnotationMapper uiAnalyticsAnnotationMapper)
    • rangePayloadNormalizer

      @Bean @ConditionalOnMissingBean(name="rangePayloadNormalizer") @Order(0) public FilterPayloadNormalizer rangePayloadNormalizer(@Value("${praxis.filter.range.allow-scalar-payload:false}") boolean allowScalarRangePayload, @Value("${praxis.filter.range.log-legacy-scalar-payload:true}") boolean logLegacyScalarRangePayload)
    • relativePeriodPayloadNormalizer

      @Bean @ConditionalOnMissingBean(name="relativePeriodPayloadNormalizer") @Order(100) public FilterPayloadNormalizer relativePeriodPayloadNormalizer(@Value("${praxis.filter.relative-period.zone-id:UTC}") String relativePeriodZoneId)
    • filterRequestBodyAdvice

      @Bean @ConditionalOnMissingBean public FilterRequestBodyAdvice filterRequestBodyAdvice(com.fasterxml.jackson.databind.ObjectMapper mapper, List<FilterPayloadNormalizer> payloadNormalizers)
    • genericSpecificationsBuilder

      @Bean(name="openApiUiSchemaSpecificationsBuilder") public <E> GenericSpecificationsBuilder<E> genericSpecificationsBuilder()
      Publica o builder generico de specifications usado pelos fluxos canonicos de filtro.
    • statsEligibility

      @Bean @ConditionalOnMissingBean public StatsEligibility statsEligibility()
    • statsQueryExecutor

      @Bean @ConditionalOnMissingBean public StatsQueryExecutor statsQueryExecutor()
    • statsProperties

      @Bean @ConditionalOnMissingBean public StatsProperties statsProperties(@Value("${praxis.stats.enabled:false}") boolean enabled, @Value("${praxis.stats.max-buckets:20}") int maxBuckets, @Value("${praxis.stats.max-series-points:100}") int maxSeriesPoints, @Value("${praxis.stats.default-mode:DISABLED}") StatsSupportMode defaultMode)
    • openApiGroupResolver

      @Bean public OpenApiGroupResolver openApiGroupResolver(org.springframework.beans.factory.ObjectProvider<org.springdoc.core.models.GroupedOpenApi> groupedOpenApis)
      Publica o resolver de grupos OpenAPI usado pelos servicos canonicamente expostos.

      O bean existe para manter a estrategia oficial de mapeamento entre path e grupo SpringDoc. Como este metodo nao usa @ConditionalOnMissingBean, trocar essa estrategia exige substituir explicitamente a auto-configuracao ou este bean.

    • openApiDocsSupport

      @Bean @ConditionalOnMissingBean public OpenApiDocsSupport openApiDocsSupport()
      Publica utilitarios compartilhados para leitura e navegacao de documentos OpenAPI.
    • openApiDocumentService

      @Bean @ConditionalOnMissingBean public OpenApiDocumentService openApiDocumentService(org.springframework.web.client.RestTemplate restTemplate, com.fasterxml.jackson.databind.ObjectMapper objectMapper, OpenApiDocsSupport openApiDocsSupport)
      Publica o servico canonico de fetch/cache de documentos OpenAPI e hash estrutural.
    • canonicalOperationResolver

      @Bean @ConditionalOnMissingBean public CanonicalOperationResolver canonicalOperationResolver(OpenApiDocumentService openApiDocumentService, @Autowired(required=false) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping requestMappingHandlerMapping)
      Publica o resolvedor canonico de operacoes OpenAPI a partir de path ou handler Spring MVC.
    • schemaReferenceResolver

      @Bean @ConditionalOnMissingBean public SchemaReferenceResolver schemaReferenceResolver()
      Publica o gerador canonico de schemaId/schemaUrl para /schemas/filtered.
    • canonicalCapabilityResolver

      @Bean @ConditionalOnMissingBean public CanonicalCapabilityResolver canonicalCapabilityResolver(OpenApiDocumentService openApiDocumentService)
    • contextualSurfaceAvailabilityRule

      @Bean @ConditionalOnMissingBean(name="contextualSurfaceAvailabilityRule") @Order(0) public SurfaceAvailabilityRule contextualSurfaceAvailabilityRule()
    • requiredAuthoritiesSurfaceAvailabilityRule

      @Bean @ConditionalOnMissingBean(name="requiredAuthoritiesSurfaceAvailabilityRule") @Order(100) public SurfaceAvailabilityRule requiredAuthoritiesSurfaceAvailabilityRule()
    • allowedStatesSurfaceAvailabilityRule

      @Bean @ConditionalOnMissingBean(name="allowedStatesSurfaceAvailabilityRule") @Order(200) public SurfaceAvailabilityRule allowedStatesSurfaceAvailabilityRule()
    • surfaceAvailabilityEvaluator

      @Bean @ConditionalOnMissingBean public SurfaceAvailabilityEvaluator surfaceAvailabilityEvaluator(List<SurfaceAvailabilityRule> surfaceAvailabilityRules)
    • resourceStateSnapshotProvider

      @Bean @ConditionalOnMissingBean public ResourceStateSnapshotProvider resourceStateSnapshotProvider()
    • surfaceAvailabilityContextResolver

      @Bean @ConditionalOnMissingBean public SurfaceAvailabilityContextResolver surfaceAvailabilityContextResolver(ResourceStateSnapshotProvider resourceStateSnapshotProvider)
    • surfaceDefinitionRegistry

      @Bean @ConditionalOnBean(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.class) @ConditionalOnMissingBean public SurfaceDefinitionRegistry surfaceDefinitionRegistry(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping requestMappingHandlerMapping, org.springframework.context.ApplicationContext applicationContext, CanonicalOperationResolver canonicalOperationResolver, SchemaReferenceResolver schemaReferenceResolver, @Value("${praxis.metadata.validation.surface-workflow-conflict:WARN}") AnnotationConflictMode conflictMode)
    • surfaceCatalogService

      @Bean @ConditionalOnBean(SurfaceDefinitionRegistry.class) @ConditionalOnMissingBean public SurfaceCatalogService surfaceCatalogService(SurfaceDefinitionRegistry surfaceDefinitionRegistry, SurfaceAvailabilityEvaluator surfaceAvailabilityEvaluator, SurfaceAvailabilityContextResolver surfaceAvailabilityContextResolver)
    • contextualActionAvailabilityRule

      @Bean @ConditionalOnMissingBean(name="contextualActionAvailabilityRule") @Order(0) public ActionAvailabilityRule contextualActionAvailabilityRule()
    • requiredAuthoritiesActionAvailabilityRule

      @Bean @ConditionalOnMissingBean(name="requiredAuthoritiesActionAvailabilityRule") @Order(100) public ActionAvailabilityRule requiredAuthoritiesActionAvailabilityRule()
    • allowedStatesActionAvailabilityRule

      @Bean @ConditionalOnMissingBean(name="allowedStatesActionAvailabilityRule") @Order(200) public ActionAvailabilityRule allowedStatesActionAvailabilityRule()
    • actionAvailabilityEvaluator

      @Bean @ConditionalOnMissingBean public ActionAvailabilityEvaluator actionAvailabilityEvaluator(List<ActionAvailabilityRule> actionAvailabilityRules)
    • actionAvailabilityContextResolver

      @Bean @ConditionalOnMissingBean public ActionAvailabilityContextResolver actionAvailabilityContextResolver(ResourceStateSnapshotProvider resourceStateSnapshotProvider)
    • actionDefinitionRegistry

      @Bean @ConditionalOnBean(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.class) @ConditionalOnMissingBean public ActionDefinitionRegistry actionDefinitionRegistry(org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping requestMappingHandlerMapping, org.springframework.context.ApplicationContext applicationContext, CanonicalOperationResolver canonicalOperationResolver, SchemaReferenceResolver schemaReferenceResolver, @Value("${praxis.metadata.validation.surface-workflow-conflict:WARN}") AnnotationConflictMode conflictMode, @Value("${praxis.metadata.validation.workflow-action-shape:WARN}") AnnotationConflictMode workflowActionShapeMode)
    • actionCatalogService

      @Bean @ConditionalOnBean(ActionDefinitionRegistry.class) @ConditionalOnMissingBean public ActionCatalogService actionCatalogService(ActionDefinitionRegistry actionDefinitionRegistry, ActionAvailabilityEvaluator actionAvailabilityEvaluator, ActionAvailabilityContextResolver actionAvailabilityContextResolver)
    • capabilityService

      @Bean @ConditionalOnBean({SurfaceCatalogService.class,ActionCatalogService.class}) @ConditionalOnMissingBean public CapabilityService capabilityService(CanonicalCapabilityResolver canonicalCapabilityResolver, SurfaceCatalogService surfaceCatalogService, ActionCatalogService actionCatalogService, OpenApiDocumentService openApiDocumentService)
    • apiDocsController

      @Bean public ApiDocsController apiDocsController()
      Publica o ApiDocsController com as dependencias canonicas ja resolvidas.

      O controller continua registrado por auto-configuracao, mas a semantica pesada de grupo, documento e schema agora vive em servicos dedicados. Como este bean nao usa @ConditionalOnMissingBean, substituir a superficie HTTP exige excluir ou substituir explicitamente esta auto-configuracao.

    • surfaceCatalogController

      @Bean @ConditionalOnBean(SurfaceCatalogService.class) @ConditionalOnMissingBean public SurfaceCatalogController surfaceCatalogController(SurfaceCatalogService surfaceCatalogService)
    • actionCatalogController

      @Bean @ConditionalOnBean(ActionCatalogService.class) @ConditionalOnMissingBean public ActionCatalogController actionCatalogController(ActionCatalogService actionCatalogService)