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 の値を確認します。このメソッドはヘッダー値を設定するため、基礎となるコンポーネントに依存します。