Manipulando Dados

Durante o roteamento e a mediação dos dados em trânsito, uma necessidade bastante comum é a de manipular, transformar e enriquece-los. O Camel fornece diversos mecanismos para esse fim, desde extensões disponíveis na própria Java DSL até processadores com capacidade de manipular diretamente os dados em trânsito.

Adicionar cabeçalhos (headers) através do método setHeader é um exemplo bem comum desse tipo de manipulação:

from("direct:start")
	.setHeader(Exchange.CONTENT_TYPE, constant("application/x-www-form-urlencoded"))
	.setHeader(Exchange.HTTP_METHOD, constant("POST"))
	// código
 	.to("http://meu.endpoint.rest")

O Camel oferece diferentes maneiras de manipular os dados em trânsito de maneira simples. Além do setHeader mencionado acima, é possível citar:

Na Java DSL, quando uma definição de rota é criada a partir do método from, é criado uma instância de uma especialização da ProcessorDefinition. É possível verificar esses mecanismos de transformação e muitos verificando a API fornecida por essa classe abstrata.

Expressões

Em alguns casos, como o setBody e o setHeader, é necessário passar uma implementação de uma Expression. Isso representa uma expressão que será resolvida durante o trânsito do dado pela rota.

Essas expressões podem definir tanto valores constantes quanto expressões nos mais variados tipos de linguages de expressões suportadas pelo Camel. Ao definir uma transformação de rota que receba uma expressão, é possível utilizar os seguintes métodos para instanciar a instância da expressão desejada:

Outros tipos de expressões estão disponíveis e, pra casos mais complexos é possível implementar a sua própria expressão.