2017-04-11 10 views
0

apache camelでいくつかのデータをルーティングして変換していて、ボディの最初のnバイトをカットしたいとします。だから私は最初のnバイトを除いてストリームを読むことによってボディを変換します。ラクダの青写真でこれを行うためのスマートな方法はありますか?ラクダの青写真で体から最初のnバイトをカットするには?

+0

ラクダの青写真とはどういう意味ですか? Javaクラスと5行のコードを書くことになりますが、これを行うにはxmlファイルに何かを書きたいだけですか? –

+0

ちょっと@ClausIbsen - 正確に。私は純粋なxmlで方法を見つけることを試みる – Yannick

答えて

0

同僚は私に良いヒントを与え、私はこれは私が探していた答えだと思う:

nは、私はByteArrayOutputStreamを開始してからカットしたいバイト数です
<convertBodyTo type="byte[]"/> 
<transform> 
    <spel>#{T(java.util.Arrays).copyOfRange(body, n, body.length)}</spel> 
</transform> 

。私はこれが解決策だと思いますか?

確かにいくつかのチェックとExceptionHandlingを構築する必要がありますが、それは私のために働いています。

1

これをそのまま使用することはできません。これは、どのJavaオブジェクト型がデータを保持しているか、つまりInputStreamかbyte []かStringかその他のものかによって異なります。

また、毎回固定バイト数をスキップする必要がありますか、それともそれは依存していますか?数よりもバイト数が少ない場合はどうなりますか?つまり、適切に処理するためにいくつかのJavaコードを書く方がより複雑なロジックで終わることになります。

本当にXMLを使用する必要がある場合は、groovyをインライン展開し、青写真XMLファイルから使用できるCamels groovy言語を使用してみることができます。

+0

ボディはByteArrayOutputStreamであり、毎回スキップしなければならない固定バイト数です。 nバイト以下である可能性がある場合を処理することは良いアイデアです! – Yannick

関連する問題