public abstract class TransformService extends Object implements Transform
TransformService
每个实例TransformService
支持特定的转换或规范化算法和XML机制类型。 要创建一个TransformService
,请调用静态getInstance
方法之一,传递算法URI和XML机制类型,例如:
TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");
TransformService
机制注册和加载TransformService实现。 每个TransformService
服务提供商实现应包括一个MechanismType
服务属性,用于标识其支持的XML机制类型。 如果未指定属性,则假定为“DOM”。 例如,支持XPath Filter 2 Transform和DOM机制的服务提供商将在Provider
子类中Provider
为:
put("TransformService." + Transform.XPATH2,
"org.example.XPath2TransformService");
put("TransformService." + Transform.XPATH2 + " MechanismType", "DOM");
TransformService
支持DOM机制类型的实现必须遵守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
实例不需要同步。
Modifier | Constructor and Description |
---|---|
protected |
TransformService()
默认构造函数,用于由子类调用。
|
Modifier and Type | Method and Description |
---|---|
String |
getAlgorithm()
返回此
TransformService 支持的算法的URI。
|
static TransformService |
getInstance(String algorithm, String mechanismType)
返回一个
TransformService 支持指定算法URI(例如:
Transform.XPATH2 )和机制类型(比如:DOM)。
|
static TransformService |
getInstance(String algorithm, String mechanismType, Provider provider)
返回支持由指定提供
TransformService 提供的指定算法URI(例如:
Transform.XPATH2 )和机制类型(例如:DOM)的TransformService。
|
static TransformService |
getInstance(String algorithm, String mechanismType, String provider)
返回支持由指定提供
TransformService 提供的指定算法URI(例如:
Transform.XPATH2 )和机制类型(例如:DOM)的TransformService。
|
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)
协调算法特定的参数。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getParameterSpec, transform, transform
isFeatureSupported
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()
方法检索 。
algorithm
-
algorithm
的URI
mechanismType
- XML处理机制和表示的类型
TransformService
NullPointerException
- 如果
algorithm
或
mechanismType
是
null
NoSuchAlgorithmException
-如果没有
Provider
支持
TransformService
实现指定算法和机制类型
Provider
public static TransformService getInstance(String algorithm, String mechanismType, Provider provider) throws NoSuchAlgorithmException
TransformService
提供的指定算法URI(例如: Transform.XPATH2
)和机制类型(例如:DOM)的TransformService。
请注意,指定的Provider
对象不必在提供者列表中注册。
algorithm
-
algorithm
的URI
mechanismType
- XML处理机制和表示的类型
provider
-
Provider
对象
TransformService
NullPointerException
-如果
provider
,
algorithm
,或
mechanismType
是
null
NoSuchAlgorithmException
-如果
TransformService
执行指定算法和机制类型不是从指定
Provider
对象
Provider
public static TransformService getInstance(String algorithm, String mechanismType, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
TransformService
提供的指定算法URI(例如: Transform.XPATH2
)和机制类型(例如:DOM)的TransformService。
指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
-
algorithm
的URI
mechanismType
- XML处理机制和表示的类型
provider
- 提供者的字符串名称
TransformService
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册
NullPointerException
-如果
provider
,
mechanismType
,或
algorithm
是
null
NoSuchAlgorithmException
-如果
TransformService
实现指定算法和机制类型是不能从指定的供应商
Provider
public final String getMechanismType()
TransformService
。
public final String getAlgorithm()
TransformService
支持的算法的URI。
getAlgorithm
在界面
AlgorithmMethod
public final Provider getProvider()
TransformService
的提供者。
public abstract void init(TransformParameterSpec params) throws InvalidAlgorithmParameterException
TransformService
使用指定的参数。
如果以XML形式存在参数,则应使用init(XMLStructure, XMLCryptoContext)
方法初始化TransformService
。
params
- 算法参数(如果不需要或可选,可以是
null
)
InvalidAlgorithmParameterException
- 如果指定的参数对于该算法无效
public abstract void marshalParams(XMLStructure parent, XMLCryptoContext context) throws MarshalException
parent
- 一个机制特定的结构,包含编组参数应附加到的父节点
context
-所述
XMLCryptoContext
含有附加上下文(可以是
null
如果不适用)
ClassCastException
- 如果
parent
或
context
的类型与此
TransformService
不
TransformService
NullPointerException
- 如果
parent
是
null
MarshalException
- 如果参数无法编组
public abstract void init(XMLStructure parent, XMLCryptoContext context) throws InvalidAlgorithmParameterException
TransformService
。
parent
- 包含父结构的机制特定结构
context
-所述
XMLCryptoContext
含有附加上下文(可以是
null
如果不适用)
ClassCastException
- 如果
parent
或
context
的类型与此
TransformService
不
TransformService
NullPointerException
- 如果
parent
是
null
InvalidAlgorithmParameterException
- 如果指定的参数对于该算法无效