2016-02-16 7 views
0

В настоящее время я работаю над Java-приложением REST, используя новый Camel REST DSL в качестве основы. Я пытаюсь отфильтровать результат списка объектов, прежде чем вернуть ответ json для клиента.Apache Camel Filter bean response через REST DSL

Это пример код, что я пытаюсь сделать:

.get("/api/list").description("Search all data") 
    .to("bean:apiService?method=searchAll") 
.route().description("Lets suppose i need to aply a filter in return") 
    .to("bean:apiService?method=filter").endRest(); 

Но ИНТ на второе выполнение боба я не могу получить доступ к возвращаемому объекту первого исполнения компонента.

class ApiService { 

public MyResponseJSON searchAll(MyJsonObjectRequest request) { 

    MyResponseJSON jsonReturn = new MyResponseJSON(); 

    return jsonReturn; 
} 


public MyResponseJSON filter(Exchange exchange) { 
    //i can't do anything here. The message in exchange is empty 
} 
} 

И возврат отдыха пуст клиенту.

Я пытаюсь не помещать фильтр внутри метода searchAll, потому что я использую принцип единой ответственности.

Если я удаляю .route() .... endRest() ответ в порядке, но не отфильтрован.

Это возможно сделать с помощью REST DSL Apache Camel, и если это возможно, что я делаю неправильно?

Спасибо.

+1

Но в методе searchAll, не должны получать биржу и вернуть Бирже впоследствии так что Exchange отправлен в метод фильтрации? –

+0

Извините за это. Метод получает репрезентативный объект запроса json. –

ответ

2

только имеют либо to или route в остальном-DSL, не как, например, сделать:

.get("/api/list").description("Search all data") 
    .route() 
    .to("bean:apiService?method=searchAll") 
    .to("bean:apiService?method=filter"); 
+0

Спасибо за разъяснение @Claus. Но таким образом, две конечные точки вызываются одновременно или последовательно? Я попробую это позже. –

+0

Прекрасно работает! И возврат первого отправляется на вторую подпись метода. Большое спасибо. –

Смежные вопросы