【问题标题】:Inject bean result into POJO object将 bean 结果注入 POJO 对象
【发布时间】:2017-10-06 18:50:17
【问题描述】:

假设我们有一个这样的 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 属性。但是&lt;simple/&gt; 不起作用,因为它试图将calculateMap(${body.myInteger})}) 方法参数转换为字符串。只要参数是简单类型,这可能有效,但在我的生产代码myInteger 中是byte[]。另一个问题是,即使我设法让 bean 运行,返回值 Map&lt;String, Object&gt; (骆驼内部)被解析为 String,但我的设置器期望 Map

当前版本:

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

我可以做什么,将 POJO 属性设置为另一个 bean 方法调用的结果?

谢谢, 一月

【问题讨论】:

  • 你用的是什么版本的骆驼?
  • @ClausIbsen 当前骆驼版本是&lt;camel.version&gt;2.17.1&lt;/camel.version&gt;

标签: java apache-camel pojo


【解决方案1】:

我很确定我们在更新的版本中修复了这个问题,所以升级你的 Camel。

【讨论】:

  • 用更新的版本来测试它2.19.3
  • 我更新了骆驼,目前得到这个异常:RuntimeBeanExpressionException: Failed to invoke method: setMyMap(${bean:service2?method=calculateMap(${body.myInteger})}) on null due to: org.apache.camel.RuntimeCamelException: java.io.IOException: Stream closed at org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:228) ... at org.apache.camel.http.common.HttpMessage.createBody(HttpMessage.java:74) ... 看起来有点像https://issues.apache.org/jira/browse/CAMEL-10425
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多