- java.lang.Object
-
- javax.xml.crypto.dsig.TransformService
-
- All Implemented Interfaces:
-
AlgorithmMethod
,Transform
,XMLStructure
public abstract class TransformService extends Object implements Transform
用于变换和规范化算法的服务提供程序接口。TransformService
每个实例TransformService
支持特定的变换或规范化算法和XML机制类型。 要创建一个TransformService
,请调用静态的getInstance
方法之一,传递算法URI和XML机制类型,例如:TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");
TransformService
实现是使用Provider
机制进行注册和加载的。 每个TransformService
服务提供商实现应包括一个MechanismType
服务属性,用于标识其支持的XML机制类型。 如果未指定属性,则假定为“DOM”。 例如,支持XPath Filter 2 Transform和DOM机制的服务提供商将在Provider
子类中指定为:put("TransformService." + Transform.XPATH2, "org.example.XPath2TransformService"); put("TransformService." + Transform.XPATH2 + " MechanismType", "DOM");
支持DOM机制类型的TransformService
实现必须遵守API概述的DOM Mechanism Requirements部分中定义的DOM互操作性要求。 有关标准机制类型的列表,请参阅API概述的Service Providers部分。一旦创建了一个
TransformService
,它可以用于处理Transform
或CanonicalizationMethod
对象。 如果Transform
或CanonicalizationMethod
以XML格式存在(例如,当验证现有的XMLSignature
)时,必须首先调用init(XMLStructure, XMLCryptoContext)
方法来初始化转换并提供文档上下文(即使没有参数)。 或者,如果从零开始创建Transform
或CanonicalizationMethod
,则调用init(TransformParameterSpec)
方法以使用参数初始化变换,并调用marshalParams
方法将参数编组为XML并提供带文档上下文的转换。 最后,调用transform
方法进行转换。并发访问
该类的静态方法保证线程安全。 多个线程可以同时调用此类中定义的静态方法,而不会产生不良影响。
但是,对于此类定义的非静态方法,这不是真的。 除非特定提供者另有说明,否则需要同时访问单个
TransformService
实例的线程应在TransformService
同步并提供必要的锁定。 多个线程每个操作不同的TransformService
实例不需要同步。- 从以下版本开始:
- 1.6
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
TransformService()
默认构造函数,用于由子类调用。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 String
getAlgorithm()
返回此TransformService
支持的算法的URI。static TransformService
getInstance(String algorithm, String mechanismType)
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型(比如:DOM)。static TransformService
getInstance(String algorithm, String mechanismType, String provider)
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型:由指定的提供者提供(例如,DOM)。static TransformService
getInstance(String algorithm, String mechanismType, Provider provider)
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型:由指定的提供者提供(例如,DOM)。String
getMechanismType()
返回此TransformService
支持的机制类型。Provider
getProvider()
返回此TransformService
的提供者。abstract void
init(TransformParameterSpec params)
使用指定的参数初始化此TransformService
。abstract void
init(XMLStructure parent, XMLCryptoContext context)
使用指定的参数和文档上下文初始化此TransformService
。abstract void
marshalParams(XMLStructure parent, XMLCryptoContext context)
协调算法特定的参数。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface javax.xml.crypto.dsig.Transform
getParameterSpec, transform, transform
-
Methods inherited from interface javax.xml.crypto.XMLStructure
isFeatureSupported
-
-
-
-
方法详细信息
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType) throws NoSuchAlgorithmException
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型(比如:DOM)。此方法使用标准的JCA提供查找机制来查找并实例化
TransformService
实现期望的算法和MechanismType
服务属性。 它通过注册安全性列表Provider
s,从最优选的Provider
。 从第一个Provider
TransformService
对象返回支持指定的算法和机制类型。请注意,注册提供商的列表可以通过
Security.getProviders()
方法检索。- Implementation Note:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()
返回的提供商的顺序不同。 - 参数
-
algorithm
- 算法的URI -
mechanismType
- XML处理机制和表示的类型 - 结果
-
一个新的
TransformService
- 异常
-
NullPointerException
- 如果algorithm
或mechanismType
为null
-
NoSuchAlgorithmException
- 如果否Provider
支持指定算法和机制类型的TransformService
实现 - 另请参见:
-
Provider
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, Provider provider) throws NoSuchAlgorithmException
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型:由指定的提供者提供(例如,DOM)。 请注意,指定的Provider
对象不必在提供者列表中注册。- 参数
-
algorithm
- 算法的URI -
mechanismType
- XML处理机制和表示的类型 -
provider
-Provider
对象 - 结果
-
一个新的
TransformService
- 异常
-
NullPointerException
-如果provider
,algorithm
,或mechanismType
为null
-
NoSuchAlgorithmException
- 如果指定的算法和机制类型的TransformService
实现不能从指定的Provider
对象获得 - 另请参见:
-
Provider
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回一个TransformService
,它支持由指定的提供者提供的指定的算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)。 指定的提供者必须在安全提供程序列表中注册。请注意,注册提供商的列表可以通过
Security.getProviders()
方法检索。- 参数
-
algorithm
- 算法的URI -
mechanismType
- XML处理机制和表示的类型 -
provider
- 提供程序的字符串名称 - 结果
-
一个新的
TransformService
- 异常
-
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册 -
NullPointerException
-如果provider
,mechanismType
,或algorithm
为null
-
NoSuchAlgorithmException
- 如果指定的算法和机制类型的一个TransformService
实现不能从指定的提供者 - 另请参见:
-
Provider
-
getMechanismType
public final String getMechanismType()
返回此TransformService
支持的机制类型。- 结果
- 机制类型
-
getAlgorithm
public final String getAlgorithm()
返回此TransformService
支持的算法的URI。- Specified by:
-
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
- 如果parent
是null
-
MarshalException
- 如果参数无法编组
-
init
public abstract void init(XMLStructure parent, XMLCryptoContext context) throws InvalidAlgorithmParameterException
使用指定的参数和文档上下文初始化此TransformService
。- 参数
-
parent
- 包含父结构的机制特定结构 -
context
- 包含附加上下文的XMLCryptoContext
(如果不适用,可能为null
) - 异常
-
ClassCastException
- 如果parent
或context
的类型与此TransformService
不兼容 -
NullPointerException
- 如果parent
是null
-
InvalidAlgorithmParameterException
- if the specified parameters are invalid for this algorithm
-
-