我有以下Camel路线:
RequestToOrderTransform requestToOrderTransform =
new RequestToOrderTransform();
from("ghttp:///processOrder")
.transform(requestToOrderTransform)
.bean(OrderProcessor.class)
.to("direct:endOfRoute");
它使用Camel-GAE从GAE servlet(HttpServletRequest
)接收processOrder
,然后将请求转换为Order
POJO,最后处理该顺序({{1 }})。
我想写自己的OrderProcessor
(org.apache.camel.Expression
),到目前为止我有骨架/框架:
requestToOrderTransform
在这里,不知何故,我必须将public class RequestToOrderTransform implements Expression {
@Override
public <T> T evaluate(Exchange arg0, Class<T> arg1) {
// ???
return null;
}
}
(我相信是我从GAE servlet使用者那里获得的)转换为我自己的HttpServletRequest
POJO。但我不知道如何首先获得Order
。一旦我收到请求,我就可以提取出必要的参数,然后实例化我的新订单实例。但后来我不确定如何处理HttpServletRequest
,以便Camel知道路由它而不是原始Order
。
所以我问:
HttpServletRequest
的实例(或者我从GAE servlet端点获得的任何对象)?HttpServletRequest
实例,以便Camel将其用作路由(到Order
bean)的单位?提前致谢!
答案 0 :(得分:2)
编写表达式似乎是一种糟糕的方式,当你真正实现的只是一个消息翻译器。但无论如何,只要把身体当作绳子就可以随身携带。
arg0.getIn().getBody(String.class)
我不确定在这种情况下你从GAE获得了什么数据,但是如果它是结构化的(json,xml,平面文件,csv),你可能想要查看与java串联的various data formats对象转换为你。