Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex. 5 da Aula 2 - Separando e filtrando mensagens

Boa tarde,

estou com uma dúvida em utilizar o método xpath. Quando chamo o filter(), ele retorna um ExpressionClause do pacote org.apache.camel.model.ProcessorDefinition. Fazendo com que ao utilizar o xpath em seguida, ele retorne um Object dando erro no compilação. Que filter() devo usar no RouteBuilder()?

Obrigado,

5 respostas

Oi Fabio,

só para entender:

from("...").
    filter().xpath("...").
to("...");

Isso dá erro de compilação?

Coloque a rota aqui para eu dar uma olhada.

Obrigado, Nico

A implementação da classe RotaPedidos:

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

public class RotaPedidos {

    public static void main(String[] args) throws Exception {

        CamelContext context = new DefaultCamelContext();
        context.addRoutes(new RouteBuilder() {

            public void configure() throws Exception {

                from("file:pedidos?delay=5s&noop=true").
                filter().xpath("/pedido/itens/item/formato[text()='EBOOK']").
                to("file:saida");

            }
        });

        context.start();
        Thread.sleep(20000);
        context.stop();

        }
}

O problema é que a chamada o xpath é:

Object org.apache.camel.builder.ExpressionClause.xpath(String text)

E o filter() é:

ExpressionClause org.apache.camel.model.ProcessorDefinition.filter()

Oi Fabio,

o código está correto e consegui testar aqui. o método xpath devolve uma FilterDefinition.

se quiser, mande o seu projeto para mim: nico.steppat@caelum.com.br

abs

solução!

Olá Nico,

descobri o problema do xpath. É a versão do Eclipse. Estava usando o Eclipse Kepler. Mudei para o Luna, fiz o Update Project e funcionou.

Obrigado,

Nossa. tive o mesmo problema. que bizarro isto ser "culpa" da versão do eclipse... vou trocar o eclipse aqui tb para poder continuar