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);
基本型コンバーター
Apache Camel は、以下の基本タイプとの変換を実行する組み込み型コンバーターを提供します。
-
java.io.File
-
文字列
-
byte[]
およびjava.nio.ByteBuffer
-
java.io.InputStream
andjava.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
に変換します。
-
文字列
-
InputStream
-
Source
-
StreamSource
-
DOMSource
enum 型コンバーター
Camel では、String
を enum
型に変換する型コンバーターを提供します。ここで、文字列の値は指定のエミュレーションクラスから一致する enum
定数に変換されます (一致する値は 大文字と小文字を区別しません)。この型コンバーターはメッセージ本文の変換にはほとんど必要ありませんが、Apache Camel によって特定のオプションを選択するために頻繁に使用されます。
たとえば、logging level オプションを設定する場合、以下の値 INFO
は enum
定数に変換されます。
<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"/>
カスタム型コンバーター
Apache Camel を使用すると、独自のカスタム型コンバーターを実装することもできます。カスタム型コンバーターの実装方法は、36章型コンバーター を参照してください。