Mudanças entre as edições de "RFWBundle"
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.
![]() |
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.
![]() |
|
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:
![]() |
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]
- Sim: Tem um 'ExceptionCode' definido no padrão "[A-Z0-9_]+"?
![]() |
|
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.