Mudanças entre as edições de "RFWBundle"
Linha 47: | Linha 47: | ||
=== get(Throwable) === | === 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. | É 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 método funciona na seguinte cascata para obter o bundle: |
Edição das 13h30min de 21 de julho de 2023
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.