パッケージ jakarta.ws.rs.ext
インターフェース MessageBodyReader<T>
- 型パラメーター:
T
- プロバイダーがサポートする Java 型
public interface MessageBodyReader<T>
ストリームの Java 型への変換をサポートするプロバイダーの契約。MessageBodyReader
実装には、適切と見なされるメディア型を制限するために、Consumes
というアノテーションを付けることができます。MessageBodyReader
パイプラインは、一致するリソースメソッドがエンティティパラメーターを宣言するか、少なくとも 1 つのFormParam
を使用する場合に実行されます。MessageBodyReader
契約を実装するプロバイダーは、プログラムで JAX-RS ランタイムに登録するか、プロバイダーのスキャンフェーズ中に JAX-RS ランタイムによって自動的に検出されるように@Provider
アノテーションを付ける必要があります。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 boolean
isReadable(ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType)
MessageBodyReader が特定の型のインスタンスを生成できるかどうかを確認します。T
readFrom(ClassSE<T> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType, MultivaluedMap<StringSE,StringSE> httpHeaders, InputStreamSE entityStream)
InputStream
SE から型を読み取ります。
メソッドの詳細
isReadable
boolean isReadable(ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType)
MessageBodyReader が特定の型のインスタンスを生成できるかどうかを確認します。type
パラメーターは生成されるインスタンスのクラスを示し、genericType
パラメーターは生成されるインスタンスのjava.lang.reflect.Type
SE を示します。例: 生成されるインスタンスがList<String>
の場合、type
パラメーターはjava.util.List
になり、genericType
パラメーターはjava.lang.reflect.ParameterizedType
SE になります。- パラメーター:
type
- 生成されるインスタンスのクラス。genericType
- 生成されるインスタンスの型。例: メッセージ本文をメソッドパラメーターに変換する場合、これはMethod.getGenericParameterTypes
によって返されるメソッドパラメーターの正式な型になります。annotations
- 生成されたインスタンスで初期化されるアーティファクトの宣言に関するアノテーションの配列。例: メッセージ本文をメソッドパラメーターに変換する場合、これはMethod.getParameterAnnotations
によって返されるそのパラメーターのアノテーションになります。mediaType
- HTTP エンティティのメディア型。リクエストで指定されていない場合は、application/octet-stream
が使用されます。- 戻り値:
- 型がサポートされている場合は
true
、それ以外の場合はfalse
。
readFrom
T readFrom(ClassSE<T> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType, MultivaluedMap<StringSE,StringSE> httpHeaders, InputStreamSE entityStream) throws IOExceptionSE, WebApplicationException
InputStream
SE から型を読み取ります。エンティティ入力ストリームが空の場合、リーダーは、長さがゼロのエンティティの Java 表現を返すか、サポートされている Java 型に長さがゼロのエンティティ表現が定義されていない場合は
NoContentException
をスローすることが期待されます。NoContentException
は、サーバーリクエストエンティティの読み取り中にメッセージ本文リーダーによってスローされた場合、JAX-RS サーバーランタイムによって、元のNoContentException
をラップするBadRequestException
に自動的に変換され、登録されたexception mappers
による標準処理のために再スローされます。- パラメーター:
type
- エンティティストリームから読み取られる型。genericType
- 生成されるインスタンスの型。例: メッセージ本文をメソッドパラメーターに変換する場合、これはMethod.getGenericParameterTypes
によって返されるメソッドパラメーターの正式な型になります。annotations
- 生成されたインスタンスで初期化されるアーティファクトの宣言に関するアノテーションの配列。例: メッセージ本文をメソッドパラメーターに変換する場合、これはMethod.getParameterAnnotations
によって返されるそのパラメーターのアノテーションになります。mediaType
- HTTP エンティティのメディア型。httpHeaders
- HTTP エンティティに関連付けられた読み取り専用の HTTP ヘッダー。entityStream
- HTTP エンティティのInputStream
SE。呼び出し元は、エンティティが消費されたときに入力ストリームが確実に終了するようにする責任があります。実装は入力ストリームを閉じてはなりません。- 戻り値:
- ストリームから読み取られた型。エンティティ入力ストリームが空の場合、リーダーは長さがゼロのエンティティを表すインスタンスを返すか、サポートされている Java 型に対して長さがゼロのエンティティ表現が定義されていない場合は
NoContentException
をスローすることが期待されます。 - 例外:
IOExceptionSE
- IO エラーが発生した場合。エンティティ入力ストリームが空であり、リーダーが長さゼロのエンティティの Java 表現を生成できない場合、NoContentException
がスローされることが予想されます。WebApplicationException
- 特定の HTTP エラーレスポンスを生成する必要がある場合。レスポンスがコミットされる前にスローされた場合にのみ有効です。