Camel:找不到ForFormattingOptions类型的合适格式化程序:java.util.List

时间:2017-07-13 10:59:04

标签: apache-camel

我正在尝试将pojo转换为骆驼中的csv。这是模型

 @CsvRecord(separator = ";")
 public class Model {
     @DataField(pos = 1)
     private String t;
     @DataField(pos = 2)
     private List<Integer> list;
 } 

应生成的CSV是A; 1; 2; 3

我在Camel中为同一个(列表)定义了一个自定义格式工厂。这是片段

public class ListFormatFactory extends AbstractFormatFactory {

private final ListFormat listFormat = new ListFormat();

{
    supportedClasses.add(List.class);
    supportedClasses.add(ArrayList.class);
}

@Override
public Format<?> build(FormattingOptions formattingOptions) {
    return listFormat;
}

private static class ListFormat implements Format<List> {

    @Override
    public String format(List object) throws Exception {
        return Arrays.toString(object.toArray());
    }

    public List parse(String string) throws Exception {
        return Arrays.asList(string.split(";"));
    }

}
}

我已使用此

注册了此格式工厂
DefaultFactoryRegistry defaultFactoryRegistry = new DefaultFactoryRegistry();
    defaultFactoryRegistry.register(new ListFormatFactory());

但我仍然得到同样的错误。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

我认为您需要在Jndi

中绑定defaultFactoryRegistry

答案 1 :(得分:0)

在我们的例子中是:

java.lang.IllegalArgumentException: Can not findForFormattingOptions a suitable formatter for the type: java.lang.String

这是由 Camel 未正确启动造成的。重新启动应用程序解决了问题。这是 Quarkus 应用程序。