Я решил проблему, используя объектный преобразователь в моем процессоре.
мой построитель маршрутов:
from("seda:rout")
.routeId("distinaation")
.unmarshal()
.json(JsonLibrary.Jackson, Request.class)
.bean(Bean.class, "processRequest")
.to(destination)
.bean(Bean.class, "processResponse")
процессор:
public Response processResponse(Exchange exchange) throws IOException {
String responseStr = exchange.getIn().getBody().toString();
ObjectMapper mapper = new ObjectMapper();
List<Response> list = mapper.readValue(responseStr, new TypeReference<List<Response>>({});
Response response = list.get(0);
...}
Еще один короткий способ сделать это будет: в построителе маршрутов:
from("seda:rout")
.routeId("distinaation")
.unmarshal()
.json(JsonLibrary.Jackson, Request.class)
.bean(Bean.class, "processRequest")
.to(destination)
.unmarshal(new ListJacksonDataFormat(Response.class))
.bean(Bean.class, "processResponse")
процессор:
public Response processResponse(List<Response> list {
Response response = list.get(0);
...
}