35.4. ExchangeHelper クラス
概要
org.apache.camel.util.ExchangeHelper
クラスは、プロセッサーの実装に役立つメソッドを提供する Apache Camel のユーティリティークラスです。
エンドポイントの解決
static resolveEndpoint()
メソッドは、ExchangeHelper
クラスの最も有用なメソッドの 1 つです。プロセッサー内でこれを使用して、その場で新しい Endpoint
インスタンスを生成します。
例35.6 resolveEndpoint()
メソッド
public final class ExchangeHelper { ... @SuppressWarnings({"unchecked" }) public static Endpoint resolveEndpoint(Exchange exchange, Object value) throws NoSuchEndpointException { ... } ... }
resolveEndpoint
に対する最初の引数はエクスチェンジインスタンスで、2 番目の引数は通常エンドポイント URI 文字列です。例35.7「File エンドポイントの作成」 では、エクスチェンジインスタンス exchange
から新しい File エンドポイントを作成する方法を示しています。
例35.7 File エンドポイントの作成
Endpoint file_endp = ExchangeHelper.resolveEndpoint(exchange, "file://tmp/messages/in.xml");
エクスチェンジアクセサーのラップ
ExchangeHelper
クラスは、Exchange
クラスの対応する getBeanProperty()
メソッドをラップする getMandatoryBeanProperty()
形式の static メソッドを複数提供します。これらの違いは、オリジナルの getBeanProperty()
アクセサーは、対応するプロパティーが利用できない場合に null
を返し、ラッパーメソッド getMandatoryBeanProperty()
は、Java の例外を投げることです。以下のラッパーメソッドが ExchangeHelper
クラスに実装されています。
public final class ExchangeHelper { ... public static <T> T getMandatoryProperty(Exchange exchange, String propertyName, Class<T> type) throws NoSuchPropertyException { ... } public static <T> T getMandatoryHeader(Exchange exchange, String propertyName, Class<T> type) throws NoSuchHeaderException { ... } public static Object getMandatoryInBody(Exchange exchange) throws InvalidPayloadException { ... } public static <T> T getMandatoryInBody(Exchange exchange, Class<T> type) throws InvalidPayloadException { ... } public static Object getMandatoryOutBody(Exchange exchange) throws InvalidPayloadException { ... } public static <T> T getMandatoryOutBody(Exchange exchange, Class<T> type) throws InvalidPayloadException { ... } ... }
交換パターンのテスト
一部の交換パターンは、In メッセージの保持に対応しています。また、一部の交換パターンは、Out メッセージの保持にも対応しています。エクスチェンジオブジェクトが In メッセージまたは Out メッセージを保持することができるかどうかを簡単に確認するために、ExchangeHelper
クラスは以下のメソッドを提供しています。
public final class ExchangeHelper { ... public static boolean isInCapable(Exchange exchange) { ... } public static boolean isOutCapable(Exchange exchange) { ... } ... }
In メッセージの MIME コンテンツタイプを取得します。
エクスチェンジの In メッセージの MIME コンテンツタイプを確認する場合、ExchangeHelper.getContentType(exchange)
メソッドを呼び出すことでアクセスすることができます。これを実装するには、ExchangeHelper
オブジェクトは In メッセージのヘッダー Content-Type
の値を確認します。このメソッドはヘッダー値を設定するため、基礎となるコンポーネントに依存します。