将bean结果注入POJO对象

时间:2017-10-06 18:50:17

标签: java apache-camel pojo

想象我们有一个像这样的POJO类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyPojo
{    
    private Map<String, Object> myMap;
    private List<AnOtherPojoClass> myOtherPojos;
    private int myInteger;
}

此类型用于REST DSL触发的驼峰路由:

<post uri="/runpojo" consumes="application/json" produces="application/json" bindingMode="json" type="com.test.MyPojo">
            <route>
                <!-- pojo's myInteger is already filled from REST caller -->
                <setBody>
                    <simple>${body.setMyMap(${bean:service2?method=calculateMap(${body.myInteger})})}</simple>
                </setBody>
                <setBody>
                    <simple>${body.setMyOtherPojos(${bean:service3?method=calculateOtherPojo})}</simple>
                </setBody>
                <marshal ref="json" />
            </route>
        </post>

但这是我的问题: 在调用我的POST后,我想在我的身体中设置一个POJO属性。但是<simple/>不起作用,因为它试图将calculateMap(${body.myInteger})})方法参数转换为String。只要参数是简单类型,这可能有效,但在我的生产代码中myIntegerbyte[]。另一个问题是,即使我设法让bean运行,返回值Map<String, Object>也是(骆驼内部)解析为String,但我的setter期望Map

当前版本:

<camel.version>2.17.1</camel.version>

如何将POJO属性设置为另一个bean方法调用的结果?

谢谢, 扬

1 个答案:

答案 0 :(得分:0)

我很确定我们已将其修复为较新版本,因此请升级您的Camel。