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
  • String
  • byte[] および java.nio.ByteBuffer
  • java.io.InputStream and java.io.OutputStream
  • java.io.Reader および java.io.Writer
  • java.io.BufferedReader および java.io.BufferedWriter
  • java.io.StringReader

ただし、これらすべてのタイプが変換可能ではありません。ビルトインコンバーターは、主に File および String タイプからの変換の提供に焦点を当てています。File 型は、ReaderWriter、および StringReader. を除く、前述の型のいずれかに変換することができます。String 型は、Filebyte[]ByteBufferInputStream、または StringReader に変換できます。String から File への変換は、文字列をファイル名として解釈することで機能します。Stringbyte[]、および ByteBuffer の 3 つは完全に相互変換可能です。

注記

現在のエクスチェンジで Exchange.CHARSET_NAME エクスチェンジプロパティーを設定することで、byte[] から StringString から 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[]Stringjava.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
  • Source
  • StreamSource
  • DOMSource

enum 型コンバーター

Camel では、Stringenum 型に変換する型コンバーターを提供します。ここで、文字列の値は指定のエミュレーションクラスから一致する enum 定数に変換されます (一致する値は 大文字と小文字を区別しません)。この型コンバーターはメッセージ本文の変換にはほとんど必要ありませんが、Apache Camel によって特定のオプションを選択するために頻繁に使用されます。

たとえば、logging level オプションを設定する場合、以下の値 INFOenum 定数に変換されます。

<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章型コンバーター を参照してください。