簡體   English   中英

Apache駱駝getbody作為自定義類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM