Histórico da Página
...
- Criar uma classe com o nome no formato ‘Jolt____.java’. Na package infra.jolt.custom.functions.impl;
- Sua classe deve ser anotada com o Bean @JoltCustomFunctionEnable para que ele possa ser compreendido pelo projeto;
- Sua classe deve implementar a interface JoltCustomFunction;
- Você deve implementar todos os métodos da interface;
- O método execute(Object value) tem como objetivo implementar a lógica das funções Jolt que não recebem parâmetro;
- Caso você não deseje implementar uma operação para esse cenário, você deve retornar o próprio atributo ‘value’. Caso isso não seja feito, pode causar uma exceção.
- Caso você não deseje implementar uma operação para esse cenário, você deve retornar o próprio atributo ‘value’. Caso isso não seja feito, pode causar uma exceção.
- O método execute(Map<String, Object> jsonValue, List<Object> parâmetros) tem como objetivo implementar a lógica das funções Jolt que recebem parâmetro;
- Caso você não queira implementar um método para quando for informado um parâmetro deve retornar null;
- Nos casos em que você quer usar só uma quantidade limitada de parâmetros, você pode acessa-lo através da função this.getValueParameterByIndex(INDEX, parâmetros). Sendo Index o número do index do parâmetro que você quer acessar. Exemplo:
- O método getFunctionName() tem como objetivo nomear sua operação customizada;
- Retornar uma String com o nome do método que será utilizado no Jolt customizado.
Alterar em /src/test/resources/Jolt/layout/layout0base0640decode.jsonEsse json é onde utiliza as funções Jolt para fazer as transformações. Nela você irá usar sua função customizada para verificar se as transformações estão funcionando conforme o esperado.
Para testar, será necessário acessar a classe de teste em /src/test/java/winthorsmarthube.domain.transformador/TransformadorLayoutTest.javaExecutar essa classe no modo debug com um breakpoint na função ‘test()’ na linha do assert para verificar o atributo ‘dadosTransformados’. Caso a classe transformada esteja conforme o esperado, sua função está funcionando - O método execute(Object value) tem como objetivo implementar a lógica das funções Jolt que não recebem parâmetro;
- E para utilizar a função é só realizar a operação do tipo 'operation' sendo "br.com.totvs.integracao.winthosmarthube.infra.jolt.custom.JoltModifyCustomOperation'. e dentro de spec, utilizar as funções customizadas criadas.
Como criar e testar funções customizadas:
...
- Criamos a classe JoltHorarioAtual.java
- Anotamos a classe com o bean @JoltCustomFunctionEnable e implementamos a interface JoltCustomFunction
- Implementamos os métodos obrigatórios da interface
- Quando formos utilizar nossa função, quero que seja chamado o método “=horarioAgora”.
- Para as regras, vou implementar o método caso não seja informado nenhum parâmetro retornando o localDateTime atual. Exemplo de uso dessa função “=horarioAgora” e irá retornar o valor: “2022-08-19 18:51:48”
- E caso ela queira me passar um formato de data especifico, ela deve passar os parâmetros. Conforme podemos ver, só o primeiro parâmetro será utilizado nessa função
- Para testar, vamos editar o arquivo dados-base64.json na package “src/test/resource/jolt/dados”
- E vamos editar nosso layout de teste na package “src/test/resource/jolt/layout”. Inicialmente, vamos fazer a operação sem passar parâmetros e sobre escrevendo o ‘horarioAntes’.
- Verificando no debug do nosso teste, vemos que o Jolt transformado contem nossa variável ‘horarioAntes’ com o valor atual.
- Agora para testar a versão em que é passado o parâmetro de formato de data esperado, vamos alterar nosso layout de transformação Jolt de teste para um formato diferente.
- E ao executar com o debug, vemos que o formato retornado foi conforme informado no layout.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas