Estou tentando validar uma string json recebida em um esquema json, mas em vez de lançar uma exceção se a validação falhar, gostaria de encaminhar os erros de validação junto com a carga json validada:
from("direct:myValidator")
.log("Validating json...")
.to("json-validator:myschema.json")
.onException(org.apache.camel.component.jsonvalidator.JsonValidationException.class)
.continued(true)
.transform().???;
Então, idealmente, eu teria um objeto JSON como
"validatedJson":*original json*, "validationResult":*excepted integer but got string*"
depois disso. Entendo que com simples e ${exception.message} posso acessar os erros. Mas não consegui transformar isso em json válido e combiná-lo com a mensagem original.
Você precisa processar a mensagem com um
Processor
para transformá-la adequadamente. Você pode fazer algo assim no seuonException
bloco:Primeiro você lerá o corpo como o json original. Você também pode obter a exceção como já sabe. E então você criará um novo corpo, contendo o json original e a mensagem de erro. Estamos criando o json manualmente, mas claro, com uma estrutura mais complexa, você deve usar uma biblioteca.