从.choice()

时间:2016-01-20 23:40:50

标签: apache apache-camel restlet

我试图从Camel路由中的org.restlet.http.headers标头集合中提取值。

我的传入POST有一个名为IncomingRequestType:ABCD的http标头属性。 Camel在exchange头集合中移动它,但是它被隐藏在org.restlet.http.headers里面,它本身就是一个头文件集合。

我可以使用以下代码提取流程中的值:

.process(new Processor() {
    public void process(Exchange exchange) throws Exception {
      org.restlet.util.Series<Header> httpHeaders = null;
      httpHeaders = (Series<Header>) exchange.getIn().getHeader("org.restlet.http.headers");
      String reqType = httpHeaders.getValues("IncomingRequestType").toString();
}})

在进程之外,我需要访问.choice()中的IncomingRequestType。when()

e.g。我希望能够做到:

.choice()
    .when(header("org.restlet.http.headers")["IncomingRequestType"]).isEqualTo("ABCD"))

有关如何做到这一点的任何建议。我尝试过创建谓词但无法获得合适的解决方案。

1 个答案:

答案 0 :(得分:0)

这可以在simple language

中完成
.choice()
    .when(simple("${in.header.org.restlet.http.headers[IncomingRequestType]} == 'ABCD'"))