Mudanças entre as edições de "RFWBundle"

De Wiki do Leitão
Ir para: navegação, pesquisa
Linha 1: Linha 1:
= RFWBundle =
== Introdução ==
=== Visão Geral ===
=== Contexto de Uso ===
== Estrutura e Componentes ==
=== Atributos Principais ===
==== Atributo bundle ====
=== Métodos Principais ===
==== loadBundle ====
==== get(String key, String... params) ====
==== get(Throwable t) ====
==== replaceParameters ====
==== get(Enum<?> value) ====
==== get(MeasureUnit measureUnit) ====
== Carregamento e Configuração do Bundle ==
=== Processo de Carregamento ===
==== Bundles Padrão ===
=== Erro ao Carregar Bundles ===
== Recuperação de Mensagens ==
=== Chaves e Substituição de Parâmetros ===
=== Mensagens Baseadas em Exceções ===
=== Tratamento de Enums ===
=== Unidades de Medida ===
== Boas Práticas e Considerações ==
=== Organização de Arquivos de Bundle ===
=== Substituição de Parâmetros ===
=== Manutenção e Atualização ===
== Exemplos Práticos ==
=== Exemplo 1: Recuperação Simples de Mensagem ===
=== Exemplo 2: Tratamento de Exceções com Mensagens ===
=== Exemplo 3: Uso de Enums no Bundle ===
=== Exemplo 4: Trabalhando com Unidades de Medida ===
== Considerações Finais ==
=== Resumo dos Benefícios ===
=== Possíveis Melhorias e Expansões ===
== Referências ==
=== Links para Classes Relacionadas ===
=== Documentação Externa ===
= Conteúdo Anterior =
O '''RFWBundle''' é um serviço de Bundle oferecido pelo RFW. A classe estática '''RFWBundle''' ao ser inicializada já carrega os bundles do próprio RFW, trazendo as mensagens para as exceptions e Enumarations do próprio framework.
O '''RFWBundle''' é um serviço de Bundle oferecido pelo RFW. A classe estática '''RFWBundle''' ao ser inicializada já carrega os bundles do próprio RFW, trazendo as mensagens para as exceptions e Enumarations do próprio framework.



Edição das 02h03min de 4 de setembro de 2024

RFWBundle

Introdução

Visão Geral

Contexto de Uso

Estrutura e Componentes

Atributos Principais

Atributo bundle

Métodos Principais

loadBundle

get(String key, String... params)

get(Throwable t)

replaceParameters

get(Enum<?> value)

get(MeasureUnit measureUnit)

Carregamento e Configuração do Bundle

Processo de Carregamento

= Bundles Padrão

Erro ao Carregar Bundles

Recuperação de Mensagens

Chaves e Substituição de Parâmetros

Mensagens Baseadas em Exceções

Tratamento de Enums

Unidades de Medida

Boas Práticas e Considerações

Organização de Arquivos de Bundle

Substituição de Parâmetros

Manutenção e Atualização

Exemplos Práticos

Exemplo 1: Recuperação Simples de Mensagem

Exemplo 2: Tratamento de Exceções com Mensagens

Exemplo 3: Uso de Enums no Bundle

Exemplo 4: Trabalhando com Unidades de Medida

Considerações Finais

Resumo dos Benefícios

Possíveis Melhorias e Expansões

Referências

Links para Classes Relacionadas

Documentação Externa

Conteúdo Anterior

O RFWBundle é um serviço de Bundle oferecido pelo RFW. A classe estática RFWBundle ao ser inicializada já carrega os bundles do próprio RFW, trazendo as mensagens para as exceptions e Enumarations do próprio framework.

Carregando Arquivos de Bundles

Para incluir um arquivo de properties dentro do RFWBundle, deve ser chamado o método loadBundle(...) e passar o novo arquivo de bundle. Também é possível realizar a operação ao inicializar o framework, pelo método initializeBundle(...) da classe RFW.

Java 256.png Carregando Arquivo de Bundle
RFWBundle.loadBundle("bundlefile.properties");


Obtendo o Bundle

Para obter o Bundle o RFWBundle oferece os métodos get(...). Dependendo do objeto passado o módulo é capaz de extrair a chave e procurar nos arquivos de bundle automaticamente. Veja os detalhes de cada método a seguir:

get(Enum<?>)

Este método recebe como um argumento um objeto de Enumeração. O objeto de enumeração é procurado no arquivo de bundle pelo CanonicalName da sua Classe + Name da Enmeration. Por exemplo, imagine a Enumeration CASE_INSENSITIVE_ORDER da classe java.lang.String, será convertida na chave java.lang.String.CASE_INSENSITIVE_ORDER, para procurar entre os arquivos de bundle.

Neste caso, o arquivo de bundle deve ter uma entrada similar a esta:

java.lang.String.CASE_INSENSITIVE_ORDER=Ordem sem sensibilidade de caixa alta.


Note 64.png
RUString.getEnumKey()
A classe [RUString] contém um método getEnumKey(Enum<?>) que retorna exatamente a chave do Enumeration passado, mesmo método utilizado pelo RFWVBundle.


get(String, String...)

Recupera os bundles dos arquivos e substitui propriedades dentro deles. Este método procura por bundles que tenham o texto ${i}, onde i é o índice do array recebido para substituir seu conteúdo.

Por exemplo, o bundle seja:

warnmsg=Mensagem de erro (${0}): ${1}


E código executado seja:

Java 256.png Obtendo o conteúdo do Bundle
String v = RFWBundle.get("warnmsg", "500", "Erro Crítico");

O conteúdo da variável v será "Mensagem de Erro (500): Erro Crítico".

get(MeasureUnit)

Similar o método de Enumeration, ele recebe um objeto da interface MeasureUnit e se resolve para tentar descobrir o enumeration correto. Para mais informações sobre esta classe veja mais sobre o MeasureRuler.

get(Throwable)

É um método criado para tentar obter o bundle diretamente dos erros (Throwables). Esta método considera que está em uso o padrão de Exceções & Tratamento do RFW.

O método funciona na seguinte cascata para obter o bundle:

  • O Throwable é instância de RFWException?
    • Sim: Tem um 'ExceptionCode' definido no padrão "[A-Z0-9_]+"?
      • Sim: Busca a mensagem de Bundle pelo 'ExceptionCode' e tenta substituir os parâmetros na mensagem.
    • Não: Retornará CanonicalName + Message (se Existir) + " at " + StackTrace()[0]


Note 64.png
Parâmetros das Exceptions
Note que os parâmetros que são substituídos no bundle são os mesmos passados na RFWException, seguindo a mesma lógica do método get(String, String...).


No caso de ser a exception de validação RFWValidationException, o RFW ainda tem algumas variáveis adicionais que podem ser utilizadas no bundle:

  • ${fieldname} - substitui pelo nome do campo em que ocorreu o problema de validação (veja atributos ClassName e FieldName da classe RFWValidationException)
  • ${classname} - substitui pele nome da classe em que a falha de validação ocorreu
  • ${cause} - substitui pelo CannonicalName da exception que causou a validação. Note que não é da própria RFWValidationException, mas sim da Throwable passada dentro dela como causa.