0
Java Enumオブジェクトを使用してヘッダを設定しようとしていますが、Camelの青写真ではEnumオブジェクトとして使用される代わりに自動的に文字列に変換されます。私はこのルートを持っている青写真で :Camel blueprint:ヘッダのenums値
<route id="doOperationARoute">
<from uri="timer://MNG?delay=5s&repeatCount=1" />
<setHeader headerName="operationName">
<simple>${type:my.pkg.EnumOperations.OP_A}</simple>
</setHeader>
<log message="${headers}" />
<to uri="bean:myProcessor" />
</route>
のJavaの列挙型:
package my.pkg;
public enum EnumOperations{
OP_A
}
プロセッサ:
public class MyProcessor implements Processor{
@Override
public void process(Exchange exc) throws Exception {
//HERE I RECEIVE THE CAST ERROR (String cannot be casted to EnumOperation)
EnumOperations operation=(EnumOperations)exc.getIn().getHeader("operationName");
switch (operation) {
case OP_A:
break;
default:
break;
}
}
}
私はシンプルなドキュメントで検索したが、何も見つかりませんでした。何か案が?あなたは2つの方法でこれを行うことができます
、のgetHeader(...)は、文字列を返します。 EnumOperations.valueOf(exc.getIn()。getHeader( "operationName")) ' – alexbt
Enumをインスタンス化する方法はありません。青写真のヘッダーに?ありがとう – ainos984