2017-05-25 8 views
0

私はちょうどカスタムコンバータを学びたいと思って問題に遭遇しました。どんな助けでも大歓迎です。キャメルバージョン2.17とJBossヒューズ6.3私の春のDSLでSpring DSLを使用したCamelカスタム@Converterに関する問題

@Converter 
public class MyConvertor{ 

    public MyConvertor(){} 

    @Converter 
    public static String convertTo(Exchange exchange) {} 

} 

<convertBodyTo charset="UTF-8" id="_convertBodyTo1" type="com.x.convertor.MyConvertor"/> 

com.x.convertor.MyConvertor 

META-INF /サービス/組織/ apacheの/キャメル/のTypeConverterでエラーメッセージ:

org.apache.camel.InvalidPayloadException: No body available of type: com.x.convertor.MyConvertor but has value: GenericFile[output.txt] of type: org.apache.camel.component.file.GenericFile on: output.txt. Caused by: No type converter available to convert from type: 
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:121) 
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) 
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: org.apache.camel.component.file.GenericFile to the required type: com.x.convertor.MyConvertor 

答えて

0

rors。 type属性がターゲットタイプ(変換後に必要なタイプ)である必要があります。

<convertBodyTo charset="UTF-8" id="_convertBodyTo1" type="java.lang.String"/> 

キャメルはこの変換を自動的に行うことができます。独自のコンバータを作成する場合は、Exchangeメソッドではなく、Camel 2.16以降のオプションの2番目のパラメータとして、コンバータメソッドがパラメータとして予期される入力タイプを持つようにしてください。
クラスのようなものでなければなりません:

@Converter 
public class MyConvertor{ 

    public MyConvertor(){} 

    @Converter 
    public static String convertTo(GenericFile body, Exchange exchange) { 
     // The exchange parameter is optional 
    } 

} 

あなたがBindyコンポーネントを使用し、POJOにそれを変換するために、CSVファイルの内容を読みたい場合はhttps://camel.apache.org/type-converter.html
を参照してください。

+0

幸運。以下のように変更が更新されました。あなたは コンバータ パブリッククラスMyConvertor { \tコンバータ \t公共JSONObjectにconvertTo(GenericFile ファイル)JSONException、IOExceptionが{ \t \tリターンjsonObjectスロー助けてくださいでした。 \t} }

関連する問題