モジュール java.xml.ws
パッケージ javax.xml.soap

クラスAttachmentPart



  • public abstract class AttachmentPart
    extends Object
    SOAPMessageオブジェクトへの個々の添付です。 SOAPMessageオブジェクトには1つ以上のAttachmentPartオブジェクトを追加できます(追加しないことも可能)。 AttachmentPartオブジェクトは、アプリケーション固有のコンテンツとそれに関連するMIMEヘッダーの2つで構成されています。 MIMEヘッダーは、コンテンツの識別と説明に使用する名前と値のペアで構成されています。

    AttachmentPartオブジェクトは次の規格と条件を満たしている必要があります。

    1. MIME [RFC2045]規格
    2. コンテンツを保有していること
    3. ヘッダー部分に次のヘッダー内容を含むこと
      • Content-Type
        AttachmentPartオブジェクトのコンテンツのデータの型を指定。[RFC2045]に準拠する必要があります。
        Content-Typeヘッダーの例を次に示します。
               Content-Type:  application/xml
               
        次のコード(apAttachmentPartオブジェクト)で上記の例のヘッダーを設定します。
               ap.setMimeHeader("Content-Type", "application/xml");
               

    AttachmentPartオブジェクトのコンテンツに関しては制限がありません。 単純なテキスト・オブジェクトから複雑なXMLドキュメントやイメージ・ファイルまでコンテンツにできます。

    AttachmentPartオブジェクトはSOAPMessage.createAttachmentPartメソッドで作成されます。 MIMEヘッダーの設定後、SOAPMessage.addAttachmentPartメソッドで作成されたAttachmentPartオブジェクトがメッセージに追加されます。

    次のコードの抜粋(mSOAPMessageオブジェクト、contentStringlString)は、AttachmentPartのインスタンスの作成、コンテンツとヘッダー情報によるAttachmentPartオブジェクトの設定、SOAPMessageオブジェクトへのAttachmentPartオブジェクトの追加を実行する方法を示しています。

         AttachmentPart ap1 = m.createAttachmentPart();
         ap1.setContent(contentString1, "text/plain");
         m.addAttachmentPart(ap1);
     

    次のコードの抜粋は、2番目のAttachmentPartインスタンスを作成して同じメッセージに追加する方法を示しています。jpegDataは、JPEGファイルを意味するバイナリのbyteバッファです。

         AttachmentPart ap2 = m.createAttachmentPart();
         byte[] jpegData =  ...;
         ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
         m.addAttachmentPart(ap2);
     

    getContentメソッドは、AttachmentPartオブジェクトからコンテンツとヘッダーを取得します。 DataContentHandlerオブジェクトが存在しているか存在していないかにより、返されるObjectがMIMEタイプに対応したJavaオブジェクトか、バイトのコンテンツを含むInputStreamオブジェクトかに分かれます。

         String content1 = ap1.getContent();
         java.io.InputStream content2 = ap2.getContent();
     
    clearContentメソッドを使用するとAttachmentPartオブジェクトのすべてのコンテンツが削除されます。ヘッダー情報に影響はありません。
         ap1.clearContent();
     
    導入されたバージョン:
    1.6
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      AttachmentPart​()  
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      abstract void addMimeHeader​(String name, String value)
      指定の名前と値を持つMIMEヘッダーをこのAttachmentPartオブジェクトに追加します。
      abstract void clearContent​()
      このAttachmentPartオブジェクトのコンテンツをクリアします。
      abstract Iterator<MimeHeader> getAllMimeHeaders​()
      このAttachmentPartオブジェクトのすべてのヘッダーをMimeHeaderオブジェクトのイテレータとして取得します。
      abstract InputStream getBase64Content​()
      AttachmentPartのコンテンツをBase64でエンコードされた文字データとして取得するために使用できるInputStreamを返します。このメソッドを使用すると、添付のrawバイトがBase64でエンコードされて返されます。
      abstract Object getContent​()
      このAttachmentPartオブジェクトのコンテンツをJavaオブジェクトとして取得します。
      String getContentId​()
      名前が"Content-ID"のMIMEヘッダーの値を取得します。
      String getContentLocation​()
      名前が"Content-Location"のMIMEヘッダーの値を取得します。
      String getContentType​()
      名前が"Content-Type"のMIMEヘッダーの値を取得します。
      abstract DataHandler getDataHandler​()
      このAttachmentPartオブジェクトのDataHandlerオブジェクトを取得します。
      abstract Iterator<MimeHeader> getMatchingMimeHeaders​(String[] names)
      指定した配列内の名前に一致するすべてのMimeHeaderオブジェクトを取得します。
      abstract String[] getMimeHeader​(String name)
      指定のStringで識別されたヘッダーの値をすべて取得します。
      abstract Iterator<MimeHeader> getNonMatchingMimeHeaders​(String[] names)
      名前が指定した配列内の名前と一致しないすべてのMimeHeaderオブジェクトを取得します。
      abstract InputStream getRawContent​()
      getContentへの呼出しが実行されたうえでDataContentHandlerがこのAttachmentPartcontent-typeに登録されなかったものと見なし、このAttachmentPartオブジェクトのコンテンツをInputStreamとして取得します。
      abstract byte[] getRawContentBytes​()
      getContentへの呼出しが実行されたうえでDataContentHandlerがこのAttachmentPartcontent-typeに登録されなかったものと見なし、このAttachmentPartオブジェクトのコンテンツをbyte[]配列として取得します。
      abstract int getSize​()
      このAttachmentPartオブジェクトのバイト数を返します。
      abstract void removeAllMimeHeaders​()
      MIMEヘッダーのエントリをすべて削除します。
      abstract void removeMimeHeader​(String header)
      指定した名前に一致するMIMEヘッダーをすべて削除します。
      abstract void setBase64Content​(InputStream content, String contentType)
      Base64のソースInputStreamからこの添付部分のコンテンツを設定し、Content-Typeヘッダーの値をcontentTypeに含まれる値に設定します。このメソッドにより、Base64の入力内容は最初にデコードされ、最終的にrawバイトが添付部分に書き込まれます。
      abstract void setContent​(Object object, String contentType)
      この添付部分のコンテンツを指定のObjectのコンテンツに設定し、Content-Typeヘッダーの値を指定の型にします。
      void setContentId​(String contentId)
      名前が"Content-ID"のMIMEヘッダーを指定の値で設定します。
      void setContentLocation​(String contentLocation)
      名前が"Content-Location"のMIMEヘッダーを指定の値で設定します。
      void setContentType​(String contentType)
      名前が"Content-Type"のMIMEヘッダーを指定の値で設定します。
      abstract void setDataHandler​(DataHandler dataHandler)
      指定のDataHandlerオブジェクトをAttachmentPartオブジェクトのデータ・ハンドラとして設定します。
      abstract void setMimeHeader​(String name, String value)
      指定の名前に一致する、最初のヘッダー・エントリを指定の値に変更します。既存のヘッダーで一致するものがない場合、新たにヘッダーを追加します。
      abstract void setRawContent​(InputStream content, String contentType)
      この添付部分のコンテンツをInputStream contentに含まれるものとして設定し、Content-Typeヘッダーの値をcontentTypeに含まれる値に設定します。
      abstract void setRawContentBytes​(byte[] content, int offset, int len, String contentType)
      この添付部分のコンテンツをbyte[] content配列に含まれるものとして設定し、Content-Typeヘッダーの値をcontentTypeに含まれる値に設定します。
    • コンストラクタの詳細

      • AttachmentPart

        public AttachmentPart​()
    • メソッドの詳細

      • getSize

        public abstract int getSize​()
                             throws SOAPException
        このAttachmentPartオブジェクトのバイト数を返します。
        戻り値:
        このAttachmentPartオブジェクトのサイズ(バイト数)、または -1 (サイズを決定できない場合)
        例外:
        SOAPException - この添付のコンテンツが破損している場合、またはサイズを判定中に例外が発生した場合。
      • clearContent

        public abstract void clearContent​()
        このAttachmentPartオブジェクトのコンテンツをクリアします。 MIMEヘッダー部分はそのまま残ります。
      • getContent

        public abstract Object getContent​()
                                   throws SOAPException
        このAttachmentPartオブジェクトのコンテンツをJavaオブジェクトとして取得します。 返されるJavaオブジェクトの型は、バイトの解釈に使用する(1) DataContentHandlerオブジェクトと、ヘッダーで指定されている(2) Content-Typeによって異なります。

        MIMEコンテンツ・タイプが"text/plain"、"text/html"、"text/xml"の場合、DataContentHandlerオブジェクトはMIMEタイプに対応するJava型との変換を実行します。 ほかのMIMEタイプの場合、DataContentHandlerオブジェクトは、rawバイトのコンテンツ・データを含むInputStreamオブジェクトを返すことがあります。

        SAAJに準拠した実装では少なくとも、text/plainContent-Type値を持つコンテンツ・ストリームに対応したjava.lang.Stringオブジェクト、text/xmlContent-Type値を持つコンテンツ・ストリームに対応したjavax.xml.transform.stream.StreamSourceオブジェクト、image/gifまたはimage/jpegContent-Type値を持つコンテンツ・ストリームに対応したjava.awt.Imageオブジェクトを返す必要があります。 インストールしたDataContentHandlerオブジェクトが解釈できないコンテンツ・タイプの場合、DataContentHandlerオブジェクトはrawバイトでjava.io.InputStreamオブジェクトを返す必要があります。

        戻り値:
        このAttachmentPartオブジェクトのコンテンツを持つJavaオブジェクト
        例外:
        SOAPException - このAttachmentPartオブジェクトにコンテンツが設定されていない場合、またはデータ変換エラーが発生した場合
      • getRawContent

        public abstract InputStream getRawContent​()
                                           throws SOAPException
        getContentへの呼出しが実行されたうえでDataContentHandlerがこのAttachmentPartcontent-typeに登録されなかったものと見なし、このAttachmentPartオブジェクトのコンテンツをInputStreamとして取得します。

        返されたInputStreamから読み込むと、ストリームのデータが消費されるので注意してください。 呼出し側は次のAPIを呼び出す前に、InputStreamを適切にリセットする必要があります。 rawの添付コンテンツのコピーが必要な場合、getRawContentBytes() APIを代わりに使用してください。

        戻り値:
        InputStreamAttachmentPartに含まれているrawデータにこのInputStreamからアクセスできる。
        例外:
        SOAPException - このAttachmentPartオブジェクトにコンテンツが設定されていない場合、またはデータ変換エラーが発生した場合。
        導入されたバージョン:
        1.6, SAAJ 1.3
        関連項目:
        getRawContentBytes()
      • getRawContentBytes

        public abstract byte[] getRawContentBytes​()
                                           throws SOAPException
        getContentへの呼出しが実行されたうえでDataContentHandlerがこのAttachmentPartcontent-typeに登録されなかったものと見なし、このAttachmentPartオブジェクトのコンテンツをbyte[]配列として取得します。
        戻り値:
        AttachmentPartのrawデータを含むbyte[]配列。
        例外:
        SOAPException - このAttachmentPartオブジェクトにコンテンツが設定されていない場合、またはデータ変換エラーが発生した場合。
        導入されたバージョン:
        1.6, SAAJ 1.3
      • getBase64Content

        public abstract InputStream getBase64Content​()
                                              throws SOAPException
        AttachmentPartのコンテンツをBase64でエンコードされた文字データとして取得するために使用できるInputStreamを返します。このメソッドを使用すると、添付のrawバイトがBase64でエンコードされて返されます。
        戻り値:
        InputStream。Base64でエンコードされたAttachmentPartをこのInputStreamから読み込むことができる。
        例外:
        SOAPException - このAttachmentPartオブジェクトにコンテンツが設定されていない場合、またはデータ変換エラーが発生した場合。
        導入されたバージョン:
        1.6, SAAJ 1.3
      • setContent

        public abstract void setContent​(Object object,
                                        String contentType)
        この添付部分のコンテンツを指定のObjectのコンテンツに設定し、Content-Typeヘッダーの値を指定の型にします。 Objectの型は、Content-Typeで指定した値に対応する必要があります。 これは、使用中のDataContentHandlerオブジェクトの特定のセットによって異なります。
        パラメータ:
        object - この添付部分のコンテンツを構成するJavaオブジェクト
        contentType - コンテンツ・タイプを指定するMIME文字列
        例外:
        IllegalArgumentException - contentTypeがコンテンツ・オブジェクトのタイプと一致しない場合、またはこのコンテンツ・オブジェクトにDataContentHandlerオブジェクトがなかった場合に、スローされることがある
        関連項目:
        getContent()
      • setRawContent

        public abstract void setRawContent​(InputStream content,
                                           String contentType)
                                    throws SOAPException
        この添付部分のコンテンツをInputStream contentに含まれるものとして設定し、Content-Typeヘッダーの値をcontentTypeに含まれる値に設定します。

        以降のgetSize()の呼出しは正確なコンテンツ・サイズでない場合があります。

        パラメータ:
        content - 添付部分に追加するrawデータ
        contentType - Content-Typeヘッダーに設定する値
        例外:
        SOAPException - コンテンツの設定でエラーが発生した場合
        NullPointerException - contentがnullである場合
        導入されたバージョン:
        1.6, SAAJ 1.3
      • setRawContentBytes

        public abstract void setRawContentBytes​(byte[] content,
                                                int offset,
                                                int len,
                                                String contentType)
                                         throws SOAPException
        この添付部分のコンテンツをbyte[] content配列に含まれるものとして設定し、Content-Typeヘッダーの値をcontentTypeに含まれる値に設定します。
        パラメータ:
        content - 添付部分に追加するrawデータ
        contentType - Content-Typeヘッダーに設定する値
        offset - コンテンツのバイト配列内のオフセット
        len - コンテンツを形成するバイト数
        例外:
        SOAPException - コンテンツの設定でエラーが発生した場合、またはcontentがnullの場合
        導入されたバージョン:
        1.6, SAAJ 1.3
      • setBase64Content

        public abstract void setBase64Content​(InputStream content,
                                              String contentType)
                                       throws SOAPException
        Base64のソースInputStreamからこの添付部分のコンテンツを設定し、Content-Typeヘッダーの値をcontentTypeに含まれる値に設定します。このメソッドにより、Base64の入力内容は最初にデコードされ、最終的にrawバイトが添付部分に書き込まれます。

        以降のgetSize()の呼出しは正確なコンテンツ・サイズでない場合があります。

        パラメータ:
        content - 添付部分に追加するBase64でエンコードされたデータ
        contentType - Content-Typeヘッダーに設定する値
        例外:
        SOAPException - コンテンツの設定でエラーが発生した場合
        NullPointerException - contentがnullである場合
        導入されたバージョン:
        1.6, SAAJ 1.3
      • getDataHandler

        public abstract DataHandler getDataHandler​()
                                            throws SOAPException
        このAttachmentPartオブジェクトのDataHandlerオブジェクトを取得します。
        戻り値:
        このAttachmentPartオブジェクトに関連付けられたDataHandlerオブジェクト
        例外:
        SOAPException - このAttachmentPartオブジェクトにデータがない場合
      • setDataHandler

        public abstract void setDataHandler​(DataHandler dataHandler)
        指定のDataHandlerオブジェクトをAttachmentPartオブジェクトのデータ・ハンドラとして設定します。 通常、着信メッセージには、データ・ハンドラが自動的に設定されます。 メッセージの作成中やコンテンツによるメッセージの生成中にsetDataHandlerメソッドを使用すると、さまざまなデータ・ソースのデータをメッセージに組み込むことができます。
        パラメータ:
        dataHandler - 設定されるDataHandlerオブジェクト
        例外:
        IllegalArgumentException - 指定したDataHandlerオブジェクトに問題があった場合
      • getContentId

        public String getContentId​()
        名前が"Content-ID"のMIMEヘッダーの値を取得します。
        戻り値:
        "Content-ID"ヘッダーの値を示すString。存在しない場合はnull
        関連項目:
        setContentId(java.lang.String)
      • getContentLocation

        public String getContentLocation​()
        名前が"Content-Location"のMIMEヘッダーの値を取得します。
        戻り値:
        "Content-Location"ヘッダーの値を示すString。存在しない場合はnull
      • getContentType

        public String getContentType​()
        名前が"Content-Type"のMIMEヘッダーの値を取得します。
        戻り値:
        "Content-Type"ヘッダーの値を示すString。存在しない場合はnull
      • setContentId

        public void setContentId​(String contentId)
        名前が"Content-ID"のMIMEヘッダーを指定の値で設定します。
        パラメータ:
        contentId - "Content-ID"ヘッダーの値を示すString
        例外:
        IllegalArgumentException - 指定したcontentId値に問題があった場合
        関連項目:
        getContentId()
      • setContentLocation

        public void setContentLocation​(String contentLocation)
        名前が"Content-Location"のMIMEヘッダーを指定の値で設定します。
        パラメータ:
        contentLocation - "Content-Location"ヘッダーの値を示すString
        例外:
        IllegalArgumentException - 指定したコンテンツの場所に問題があった場合
      • setContentType

        public void setContentType​(String contentType)
        名前が"Content-Type"のMIMEヘッダーを指定の値で設定します。
        パラメータ:
        contentType - "Content-Type"ヘッダーの値を示すString
        例外:
        IllegalArgumentException - 指定したコンテンツ・タイプに問題があった場合
      • removeMimeHeader

        public abstract void removeMimeHeader​(String header)
        指定した名前に一致するMIMEヘッダーをすべて削除します。
        パラメータ:
        header - 削除するMIMEヘッダーの文字列名
      • removeAllMimeHeaders

        public abstract void removeAllMimeHeaders​()
        MIMEヘッダーのエントリをすべて削除します。
      • getMimeHeader

        public abstract String[] getMimeHeader​(String name)
        指定のStringで識別されたヘッダーの値をすべて取得します。
        パラメータ:
        name - ヘッダーの名前。例: "Content-Type"
        戻り値:
        指定のヘッダーの値を示すString配列
        関連項目:
        setMimeHeader(java.lang.String, java.lang.String)
      • setMimeHeader

        public abstract void setMimeHeader​(String name,
                                           String value)
        指定の名前に一致する、最初のヘッダー・エントリを指定の値に変更します。既存のヘッダーで一致するものがない場合、新たにヘッダーを追加します。 また、このメソッドは、一致するヘッダーの最初のエントリ以外をすべて削除します。

        RFC822ヘッダーはUS-ASCII文字だけを含むことが可能である点に注意してください。

        パラメータ:
        name - 検索するヘッダー名を示すString
        value - 指定の名前と一致する名前を持つヘッダーに設定する値を示すString
        例外:
        IllegalArgumentException - 指定したMIMEヘッダー名または値に問題があった場合
      • addMimeHeader

        public abstract void addMimeHeader​(String name,
                                           String value)
        指定の名前と値を持つMIMEヘッダーをこのAttachmentPartオブジェクトに追加します。

        RFC822ヘッダーはUS-ASCII文字だけを含むことが可能である点に注意してください。

        パラメータ:
        name - 追加するヘッダーの名前を示すString
        value - 追加するヘッダーの値を示すString
        例外:
        IllegalArgumentException - 指定したMIMEヘッダー名または値に問題があった場合
      • getAllMimeHeaders

        public abstract Iterator<MimeHeader> getAllMimeHeaders​()
        このAttachmentPartオブジェクトのすべてのヘッダーをMimeHeaderオブジェクトのイテレータとして取得します。
        戻り値:
        このAttachmentPartオブジェクトのMIMEヘッダーすべてを含むIteratorオブジェクト
      • getMatchingMimeHeaders

        public abstract Iterator<MimeHeader> getMatchingMimeHeaders​(String[] names)
        指定した配列内の名前に一致するすべてのMimeHeaderオブジェクトを取得します。
        パラメータ:
        names - 返されるMIMEヘッダーの名前を含むString配列
        戻り値:
        Iteratorオブジェクトとして指定した配列内の名前の1つと一致するすべてのMIMEヘッダー
      • getNonMatchingMimeHeaders

        public abstract Iterator<MimeHeader> getNonMatchingMimeHeaders​(String[] names)
        名前が指定した配列内の名前と一致しないすべてのMimeHeaderオブジェクトを取得します。
        パラメータ:
        names - 返されないMIMEヘッダーの名前を含むString配列
        戻り値:
        指定した配列内の名前の1つに一致するものを除く、このAttachmentPartオブジェクト内のすべてのMIMEヘッダー。 一致しないMIMEヘッダーは、Iteratorオブジェクトとして返される。