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

クラスTransformService

java.lang.Object
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");
 
TransformService DOMメカニズム・タイプをサポートする実装は、「DOMのメカニズム要件」に定義されているDOM相互運用性要件を遵守する必要があります。 標準のアルゴリズムUriとメカニズム・タイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceのセクションを参照してください。

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 標準変換アルゴリズムのリストについては、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceの項を参照してください。
      mechanismType - XML処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceのセクションを参照してください。
      戻り値:
      新しい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 標準変換アルゴリズムのリストについては、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceの項を参照してください。
      mechanismType - XML処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceのセクションを参照してください。
      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 標準変換アルゴリズムのリストについては、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceの項を参照してください。
      mechanismType - XML処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」TransformServiceのセクションを参照してください。
      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のプロバイダを返します。
      戻り値:
      プロバイダ
    • init

      public abstract void init(TransformParameterSpec params) throws InvalidAlgorithmParameterException
      指定されたパラメータでこのTransformServiceを初期化します。

      XML形式の中にパラメータが存在する場合、init(XMLStructure, XMLCryptoContext)メソッドを使用してTransformServiceを初期化する必要があります。

      パラメータ:
      params - アルゴリズム・パラメータ。必須でない場合またはオプションの場合はnullも可
      例外:
      InvalidAlgorithmParameterException - 指定されたパラメータがこのアルゴリズムには無効な場合
    • 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 - 指定されたパラメータがこのアルゴリズムには無効な場合