在apache camel解组后添加处理器

时间:2015-10-10 20:18:36

标签: java apache-camel gson marshalling

我有一个骆驼路线设置如下所示 在stage文件夹中,我可以看到消息正式编组到json中 但是在这一行上取消编组body.setA("modified A");
我得到一个空指针异常,基本上body是null .. 为什么

from("direct:stage").marshal().json(JsonLibrary.Gson)
.to("file://stage");

from("file://stage").unmarshal().json(JsonLibrary.Gson)
.process(new Processor() {                  
    @Override
    public void process(Exchange exchange) throws Exception {
        MyTest body = exchange.getIn().getBody(MyTest.class);           
        body.setA("modified A");
    }
}).to("direct:b");

1 个答案:

答案 0 :(得分:0)

你的身体很可能是null的原因是由于unmarshal调用的配置。为了解组json对象,您需要提供字符串需要取消编组的类。我不确定100%如何在DSL中做到这一点,但我之前做过这样的事情如下:

//In my spring context

<dataFormats>
    <json id="jack" library="Jackson" unmarshalTypeName="com.fun.model.TestModel"/>
</dataFormats>

//in my routeBuilder
from("")
    .unmarshal("jack")
    .to("other stuff");