Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerResult
オブジェクトは、コンポーネントの実行結果を表します。このオブジェクトは、コンポーネントがメッセージペイロードに値を設定して戻す必要があるケースだけではなく、メッセージ属性や MIME タイプを指定するケースでも使用されます。
クラスには、ペイロードに格納される値の型と、返されるメッセージ属性の型の 2 つの汎用型があります。
ファイルコネクタの read
操作を大幅に簡素化した例を示します。この操作は、ペイロードをファイルの内容を含む InputStream
に設定します。また、属性をファイル名、サイズ、タイムスタンプ、権限などの情報が入った FileAttributes
オブジェクトに設定します。
public Result<InputStream, FileAttributes> read(String path) { (1)
InputStream content = getContent(path);
FileAttributes attributes = getAttributes(path);
return Result.<InputStream, FileAttributes>builder() (2)
.output(content) (3)
.attributes(attributes) (4)
.build(); (5)
}
1 | 操作は Result<InputStream, FileAttributes> を返します。これは、操作が InputStream をペイロードとして、FileAttributes を属性として返すことを Runtime に通知します。 |
2 | 結果値を取得すると、Result.builder() を使用して新しいインスタンスを作成します。この値は厳密に型指定されているため、ビルダーを作成する際には汎用型を指定する必要があります。 |
3 | ビルダーの output(Object) メソッドは、ペイロードの設定に使用します。 |
4 | attributes(Object) は、属性の設定に使用します。 |
5 | 例では、build() メソッドをコールして、作成された Result を返しています。 |
Result
オブジェクトを使用して出力の MIME タイプを設定できます。前述の例を少し変えて、操作でファイルの最適な MIME タイプをファイル拡張子から推定します。
public Result<InputStream, FileAttributes> read(String path) {
InputStream content = getContent(path);
FileAttributes attributes = getAttributes(path);
MediaType guessedMediaType = MediaType.ANY;
if (path.endsWith(".json")) {
guessedMediaType = MediaType.APPLICATION_JSON;
} else if (path.endsWith("*.xml")) {
guessedMediaType = MediaType.APPLICATION_XML;
} else if (path.endsWith("*.bin")) {
guessedMediaType = MediaType.BINARY;
}
return Result.<InputStream, FileAttributes>builder()
.output(content)
.attributes(attributes)
.mediaType(guessedMediaType)
.build();
}
上記の例では、MediaType クラスは @MediaType アノテーション付きではなく、Mule API の org.mule.runtime.api.metadata.MediaType となっています。
|