![](/img/trans.png)
[英]Apache Camel - exchange.getIn().getBody(ZipFile.class) returns NULL but exchange.getOut().setBody(zipfile) works fine
[英]Apache camel getbody as custom class
這個問題很簡單,也許是因為我對此過程有些困惑。 代碼示例顯示了我要執行的操作:
cc.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file://files?noop=true")
.split()
.tokenize("\n")
.split()
.method(SplitToken.class, "hashTokens")
和:
class SplitToken {
@SuppressWarnings("unchecked")
public static List<HashMap<String, Integer>> hashTokens(final Exchange exchange) {
List<String> oldstr = exchange.getIn().getBody(List<String>);
//Create a key value hashmap from accumulated string list
}
}
但返回錯誤:
expression required.
一般而言,關於如何實現所需類的getbody的任何想法? (由於第一個拆分方法返回了一個字符串列表,但是我無法在第二個拆分中檢索它,還是可以嗎?)
據我記得,您無法使用getBody
獲得泛型列表。 這可能起作用:
List<String> oldstr = (List<String>)exchange.getIn().getBody(List.class);
甚至更好的是,您可以使用@Body
注釋為您制作駱駝提取物主體:
public static List<HashMap<String, Integer>> hashTokens(final Exchange exchange, @Body List<String> oldStr) {
//Create a key value hashmap from accumulated string list
return new ArrayList<>();
}
關於您的最后一個問題,請參見http://camel.apache.org/aggregator2.html中的 “使用POJO作為AggregationStrategy” /“不同主體類型”小節。
您可以嘗試:
.pollEnrich("seda:foo", 1000, AggregationStrategies.beanAllowNull(MyUserAppender.class, "addUsers"))
public static final class MyUserAppender {
public List addUsers(List<String> names, User user) {
if (names == null) {
names = new ArrayList();
}
names.add(user.getName());
return names;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.