パッケージ jakarta.ws.rs.ext

インターフェース MessageBodyReader<T>

  • 型パラメーター:
    T - プロバイダーがサポートする Java 型

    public interface MessageBodyReader<T>
    ストリームの Java 型への変換をサポートするプロバイダーの契約。MessageBodyReader 実装には、適切と見なされるメディア型を制限するために、Consumes というアノテーションを付けることができます。MessageBodyReader パイプラインは、一致するリソースメソッドがエンティティパラメーターを宣言するか、少なくとも 1 つの FormParam を使用する場合に実行されます。

    MessageBodyReader 契約を実装するプロバイダーは、プログラムで JAX-RS ランタイムに登録するか、プロバイダーのスキャンフェーズ中に JAX-RS ランタイムによって自動的に検出されるように @Provider アノテーションを付ける必要があります。

    導入:
    1.0
    作成者:
    Paul Sandoz, Marc Hadley
    関連事項:
    Provider, Consumes
    • メソッドの詳細

      • isReadable

        boolean isReadable​(ClassSE<?> type,
                           TypeSE genericType,
                           AnnotationSE[] annotations,
                           MediaType mediaType)
        MessageBodyReader が特定の型のインスタンスを生成できるかどうかを確認します。type パラメーターは生成されるインスタンスのクラスを示し、genericType パラメーターは生成されるインスタンスの java.lang.reflect.TypeSE を示します。例: 生成されるインスタンスが List<String> の場合、type パラメーターは java.util.List になり、genericType パラメーターは java.lang.reflect.ParameterizedTypeSE になります。
        パラメーター:
        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
        InputStreamSE から型を読み取ります。

        エンティティ入力ストリームが空の場合、リーダーは、長さがゼロのエンティティの Java 表現を返すか、サポートされている Java 型に長さがゼロのエンティティ表現が定義されていない場合は NoContentException をスローすることが期待されます。NoContentException は、サーバーリクエストエンティティの読み取り中にメッセージ本文リーダーによってスローされた場合、JAX-RS サーバーランタイムによって、元の NoContentException をラップする BadRequestException に自動的に変換され、登録された exception mappers による標準処理のために再スローされます。

        パラメーター:
        type - エンティティストリームから読み取られる型。
        genericType - 生成されるインスタンスの型。例: メッセージ本文をメソッドパラメーターに変換する場合、これは Method.getGenericParameterTypes によって返されるメソッドパラメーターの正式な型になります。
        annotations - 生成されたインスタンスで初期化されるアーティファクトの宣言に関するアノテーションの配列。例: メッセージ本文をメソッドパラメーターに変換する場合、これは Method.getParameterAnnotations によって返されるそのパラメーターのアノテーションになります。
        mediaType - HTTP エンティティのメディア型。
        httpHeaders - HTTP エンティティに関連付けられた読み取り専用の HTTP ヘッダー。
        entityStream - HTTP エンティティの InputStreamSE。呼び出し元は、エンティティが消費されたときに入力ストリームが確実に終了するようにする責任があります。実装は入力ストリームを閉じてはなりません。
        戻り値:
        ストリームから読み取られた型。エンティティ入力ストリームが空の場合、リーダーは長さがゼロのエンティティを表すインスタンスを返すか、サポートされている Java 型に対して長さがゼロのエンティティ表現が定義されていない場合は NoContentException をスローすることが期待されます。
        例外:
        IOExceptionSE - IO エラーが発生した場合。エンティティ入力ストリームが空であり、リーダーが長さゼロのエンティティの Java 表現を生成できない場合、NoContentException がスローされることが予想されます。
        WebApplicationException - 特定の HTTP エラーレスポンスを生成する必要がある場合。レスポンスがコミットされる前にスローされた場合にのみ有効です。