モジュール java.xml.crypto
パッケージ javax.xml.crypto.dsig

クラスTransformService

  • すべての実装されたインタフェース:
    AlgorithmMethod, Transform, XMLStructure


    public abstract class TransformService
    extends Object
    implements Transform
    変換アルゴリズムおよび正規化アルゴリズム用のService Provider Interfaceです。

    TransformServiceの各インスタンスは、特定の変換アルゴリズムまたは正規化アルゴリズムおよびXMLメカニズム型をサポートします。 TransformServiceを作成するには、static getInstanceメソッドの1つを呼び出し、目的のアルゴリズムURIおよびXMLメカニズム型を渡します。次に例を示します。

    TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");

    TransformService実装は、Providerメカニズムを使用して登録およびロードされます。 TransformServiceのサービス・プロバイダ実装は、サポートするXMLメカニズム型を特定するMechanismTypeサービス属性を含む必要があります。 属性が指定されない場合、"DOM"であると想定されます。 たとえば、XPath Filter 2 TransformおよびDOMメカニズムをサポートするサービス・プロバイダはProviderサブクラスで次のように指定されます。

         put("TransformService." + Transform.XPATH2,
             "org.example.XPath2TransformService");
         put("TransformService." + Transform.XPATH2 + " MechanismType", "DOM");
     
    DOMメカニズム・タイプをサポートするTransformService実装は、API概要の「DOMのメカニズム要件」セクションで定義されているDOM相互運用性要件を満たしていなければなりません。 標準機構タイプのリストについては、APIの概要の「サービス・プロバイダ」セクションを参照してください。

    TransformServiceが作成されると、それを使用してTransformオブジェクトまたはCanonicalizationMethodオブジェクトを処理できます。 XML形式の中にTransformまたはCanonicalizationMethodが存在する場合(たとえば、既存のXMLSignatureを検証するとき)、init(XMLStructure, XMLCryptoContext)メソッドを最初に呼び出して変換を初期化し、文書コンテキストを提供する必要があります(パラメータがない場合でも)。 あるいは、TransformまたはCanonicalizationMethodがゼロから作成される場合、init(TransformParameterSpec)メソッドが呼び出されて変換がパラメータ付きで初期化され、marshalParamsメソッドが呼び出されてXMLへのパラメータが整列化され、文書コンテキストでの変換が提供されます。 最後に、transformメソッドが呼び出されて変換を実行します。

    並行アクセス

    このクラスのstaticメソッドは、スレッド・セーフであることが保証されています。 このクラスで定義されているstaticメソッドは、悪影響を与えることなく、複数スレッドが並行して呼び出すことができます。

    しかしこのことは、このクラスで定義されている非staticメソッドには当てはまりません。 特定のプロバイダで特に説明がないかぎり、単一のTransformServiceインスタンスに並行してアクセスする必要のある複数スレッドは、スレッド間で同期を取り、必要に応じてロックしなければいけません。 異なるTransformServiceインスタンスを操作する複数スレッドは、同期化される必要はありません。

    導入されたバージョン:
    1.6
    • コンストラクタの詳細

      • TransformService

        protected TransformService​()
        デフォルトのコンストラクタ、サブクラスによる呼出し用。
    • メソッドの詳細

      • getInstance

        public static TransformService getInstance​(String algorithm,
                                                   String mechanismType)
                                            throws NoSuchAlgorithmException
        指定されたアルゴリズムURI (例: Transform.XPATH2)およびメカニズム型(例: DOM)をサポートするTransformServiceを返します。

        このメソッドは標準JCAプロバイダ検索メカニズムを使用して、目的のアルゴリズムおよびMechanismTypeサービス属性のTransformService実装を検出およびインスタンス化します。 登録済みのセキュリティProviderのリストを、最優先のProviderからトラバースします。 指定したアルゴリズムおよびメカニズム型をサポートする最初のProviderからの新しいTransformServiceオブジェクトが返されます。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        実装上の注意:
        JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
        パラメータ:
        algorithm - アルゴリズムのURI
        mechanismType - XML処理メカニズムおよび表現の型
        戻り値:
        新しいTransformService
        例外:
        NullPointerException - algorithmまたはmechanismTypenullの場合
        NoSuchAlgorithmException - 指定したアルゴリズムやメカニズム型用のTransformService実装をサポートするProviderが存在しない場合
        関連項目:
        Provider
      • getInstance

        public static TransformService getInstance​(String algorithm,
                                                   String mechanismType,
                                                   Provider provider)
                                            throws NoSuchAlgorithmException
        指定したプロバイダが提供する、指定されたアルゴリズムURI (例: Transform.XPATH2)およびメカニズム型(例: DOM)をサポートするTransformServiceを返します。 指定したProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
        パラメータ:
        algorithm - アルゴリズムのURI
        mechanismType - XML処理メカニズムおよび表現の型
        provider - Providerオブジェクト
        戻り値:
        新しいTransformService
        例外:
        NullPointerException - provideralgorithm、またはmechanismTypenullの場合
        NoSuchAlgorithmException - 指定したアルゴリズムやメカニズム型用のTransformService実装が、指定したProviderオブジェクトで使用できない場合
        関連項目:
        Provider
      • getInstance

        public static TransformService getInstance​(String algorithm,
                                                   String mechanismType,
                                                   String provider)
                                            throws NoSuchAlgorithmException,
                                                   NoSuchProviderException
        指定したプロバイダが提供する、指定されたアルゴリズムURI (例: Transform.XPATH2)およびメカニズム型(例: DOM)をサポートするTransformServiceを返します。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        パラメータ:
        algorithm - アルゴリズムのURI
        mechanismType - XML処理メカニズムおよび表現の型
        provider - プロバイダ名の文字列名
        戻り値:
        新しいTransformService
        例外:
        NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
        NullPointerException - providermechanismType、またはalgorithmnullの場合
        NoSuchAlgorithmException - 指定したアルゴリズムやメカニズム型用のTransformService実装が指定したプロバイダで使用できない場合
        関連項目:
        Provider
      • getMechanismType

        public final String getMechanismType​()
        このTransformServiceがサポートするメカニズム型を返します。
        戻り値:
        メカニズム型
      • getAlgorithm

        public final String getAlgorithm​()
        このTransformServiceがサポートするアルゴリズムのURIを返します。
        定義:
        getAlgorithm、インタフェース: AlgorithmMethod
        戻り値:
        アルゴリズムURI
      • getProvider

        public final Provider getProvider​()
        このTransformServiceのプロバイダを返します。
        戻り値:
        プロバイダ
      • marshalParams

        public abstract void marshalParams​(XMLStructure parent,
                                           XMLCryptoContext context)
                                    throws MarshalException
        アルゴリズム固有のパラメータを整列化します。 整列化するパラメータがない場合、このメソッドは例外をスローせずに返します。
        パラメータ:
        parent - 整列化されたパラメータが追加される親ノードを格納する、メカニズム固有の構造
        context - 追加のコンテキストを格納するXMLCryptoContext。該当しない場合はnullも可
        例外:
        ClassCastException - parentまたはcontextの型がこのTransformServiceと互換性がない場合
        NullPointerException - parentnullである場合
        MarshalException - パラメータを整列化できない場合
      • init

        public abstract void init​(XMLStructure parent,
                                  XMLCryptoContext context)
                           throws InvalidAlgorithmParameterException
        指定されたパラメータおよび文書コンテキストでこのTransformServiceを初期化します。
        パラメータ:
        parent - 親構造を格納するメカニズム固有の構造
        context - 追加のコンテキストを格納するXMLCryptoContext。該当しない場合はnullも可
        例外:
        ClassCastException - parentまたはcontextの型がこのTransformServiceと互換性がない場合
        NullPointerException - parentnullである場合
        InvalidAlgorithmParameterException - 指定されたパラメータがこのアルゴリズムには無効な場合