Class VersaoInfo

java.lang.Object
br.com.xadm.comum.web.VersaoInfo
All Implemented Interfaces:
io.micronaut.core.order.Ordered, io.micronaut.management.endpoint.info.InfoSource

@Singleton public class VersaoInfo extends Object implements io.micronaut.management.endpoint.info.InfoSource
Expõe a versão do app (de version.properties, gerado no build de cada app a partir de project.version) no endpoint /info, e oferece versaoAtual() estático para o /health e o log de startup.

A lib não fixa a versão: cada app gera seu version.properties no classpath (task Gradle gerarVersionProperties). A versão do @OpenAPIDefinition de cada app é o contrato HTTP da API, desacoplada desta — não confundir.

  • Field Summary

    Fields inherited from interface io.micronaut.core.order.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors
    Constructor
    Description
    Construtor padrão.
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    Commit da imagem em execução, lido de XADM_COMMIT (com SOURCE_COMMIT como fallback) a cada chamada.
    static String
    Diz em que forma o processo está rodando: binário native-image ou JVM.
    org.reactivestreams.Publisher<io.micronaut.context.env.PropertySource>
     
    static String
    Lê a versão do recurso version.properties no classpath.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.micronaut.core.order.Ordered

    getOrder
  • Constructor Details

    • VersaoInfo

      public VersaoInfo()
      Construtor padrão.
  • Method Details

    • versaoAtual

      public static String versaoAtual()
      Lê a versão do recurso version.properties no classpath.
      Returns:
      a versão (ex.: 1.4.2) ou "desconhecida" se ausente
    • flavorAtual

      public static String flavorAtual()
      Diz em que forma o processo está rodando: binário native-image ou JVM. Receita da constituição (versionamento §Receita): o binário native seta org.graalvm.nativeimage.imagecode; a JVM não. Serve pra distinguir dois deploys da MESMA versão (o JVM de fallback × o native) no /health.

      Avaliado a cada chamada, de propósito — nunca cacheado em static final. Sob native-image o inicializador estático pode rodar no build da imagem (onde a property vale "buildtime"), e o valor congelado passaria a depender da política de initialize-at-build-time em vez do runtime real. Uma leitura de property por request é irrelevante num liveness.

      Returns:
      "native" sob native-image, "jvm" na JVM
    • commitAtual

      public static String commitAtual()
      Commit da imagem em execução, lido de XADM_COMMIT (com SOURCE_COMMIT como fallback) a cada chamada.

      É o discriminador de deploy: sem ele dois deploys da MESMA versão (um workflow_dispatch sem bump, por exemplo) são indistinguíveis, e o smoke de produção não tem alvo de rollback. Ausente/em branco → string vazia, e o /health omite o campo (o consumidor distingue "lib antiga" de "commit desconhecido"; string vazia apagaria a diferença).

      Nunca cacheado em static final — mesma armadilha do flavorAtual(): sob native-image o inicializador estático pode rodar no build da imagem, e o valor congelado passaria a depender da política de initialize-at-build-time em vez do runtime real — o /health mentiria. Uma leitura de env por request é irrelevante num liveness.

      Returns:
      o SHA do commit, ou string vazia quando a env está ausente ou em branco
    • getSource

      public org.reactivestreams.Publisher<io.micronaut.context.env.PropertySource> getSource()
      Specified by:
      getSource in interface io.micronaut.management.endpoint.info.InfoSource