34.3. 組み込み型コンバーター
概要 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、マスター型コンバーターがサポートする変換を説明します。これらの変換は Apache Camel コアに組み込まれています。
通常、型コンバーターは、Message.getBody(Class<T> type) または Message.getHeader(String name, Class<T> type) などの便利な関数を介して呼び出されます。マスター型コンバーターを直接呼び出すこともできます。たとえば、エクスチェンジオブジェクト exchange がある場合は、例34.4「値の文字列への変換」 で示すように、指定された値を String に変換できます。
例34.4 値の文字列への変換
org.apache.camel.TypeConverter tc = exchange.getContext().getTypeConverter(); String str_value = tc.convertTo(String.class, value);
org.apache.camel.TypeConverter tc = exchange.getContext().getTypeConverter();
String str_value = tc.convertTo(String.class, value);
基本型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、以下の基本タイプとの変換を実行する組み込み型コンバーターを提供します。
-
java.io.File -
String -
byte[]およびjava.nio.ByteBuffer -
java.io.InputStreamandjava.io.OutputStream -
java.io.Readerおよびjava.io.Writer -
java.io.BufferedReaderおよびjava.io.BufferedWriter -
java.io.StringReader
ただし、これらすべてのタイプが変換可能ではありません。ビルトインコンバーターは、主に File および String タイプからの変換の提供に焦点を当てています。File 型は、Reader、Writer、および StringReader. を除く、前述の型のいずれかに変換することができます。String 型は、File、byte[]、ByteBuffer、InputStream、または StringReader に変換できます。String から File への変換は、文字列をファイル名として解釈することで機能します。String、byte[]、および ByteBuffer の 3 つは完全に相互変換可能です。
現在のエクスチェンジで Exchange.CHARSET_NAME エクスチェンジプロパティーを設定することで、byte[] から String、String から byte[] への変換に使用する文字エンコーディングを明示的に指定できます。たとえば、UTF-8 文字エンコーディングを使用して変換を実行するには、exchange.setProperty("Exchange.CHARSET_NAME", "UTF-8") を呼び出します。サポートされる文字セットは java.nio.charset.Charset クラスで説明されています。
コレクション型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、以下のコレクションタイプの変換を実行する組み込み型コンバーターを提供します。
-
Object[] -
java.util.Set -
java.util.List
前述のコレクションタイプ間の変換の切り替えはすべてサポートされます。
マップ型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、以下のマップ型との変換を実行する組み込み型コンバーターを提供します。
-
java.util.Map -
java.util.HashMap -
java.util.Hashtable -
java.util.Properties
前述のマップタイプは、set 要素が MapEntry<K,V> である java.util.Set タイプのセットに変換することもできます。
DOM 型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
以下のドキュメントオブジェクトモデル (DOM) タイプへの型変換を実行できます。
-
org.w3c.dom.Document-byte[]、String、java.io.File、およびjava.io.InputStreamから変換可能。 -
org.w3c.dom.Node -
javax.xml.transform.dom.DOMSource-Stringから変換可能。 -
javax.xml.transform.Source-byte[]とStringから変換可能。
前述の DOM 型間の変換のすべての変更がサポートされています。
SAX 型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
SAX イベント駆動型の XML パーサーをサポートする javax.xml.transform.sax.SAXSource 型への変換も実行できます (詳細は SAX Web site を参照してください)。以下の型から SAXSource に変換します。
-
String -
InputStream -
ソース -
StreamSource -
DOMSource
enum 型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
Camel では、String を enum 型に変換する型コンバーターを提供します。ここで、文字列の値は指定のエミュレーションクラスから一致する enum 定数に変換されます (一致する値は 大文字と小文字を区別しません)。この型コンバーターはメッセージ本文の変換にはほとんど必要ありませんが、Apache Camel によって特定のオプションを選択するために頻繁に使用されます。
たとえば、logging level オプションを設定する場合、以下の値 INFO は enum 定数に変換されます。
<to uri="log:foo?level=INFO"/>
<to uri="log:foo?level=INFO"/>
enum 型コンバーターは大文字と小文字を区別しないため、以下のいずれの代替機能も利用できます。
<to uri="log:foo?level=info"/> <to uri="log:foo?level=INfo"/> <to uri="log:foo?level=InFo"/>
<to uri="log:foo?level=info"/>
<to uri="log:foo?level=INfo"/>
<to uri="log:foo?level=InFo"/>
カスタム型コンバーター リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel を使用すると、独自のカスタム型コンバーターを実装することもできます。カスタム型コンバーターの実装方法は、36章型コンバーター を参照してください。