public abstract class AttachmentMarshaller extends Object
启用JAXB编组以优化二进制数据的存储。
该API能够在JAXB编组过程和基于MIME的包处理器之间高效地协同创建优化的二进制数据格式。 JAXB实现将基于MIME的程序包的根本体进行编组,将可引用MIME部件的创建委托给实现此抽象的基于MIME的程序包处理器。
当isXOPPackage()
为真时,XOP处理被启用。 详见addMtomAttachment(DataHandler, String, String)
。
WS-I附件配置文件1.0由addSwaRefAttachment(DataHandler)
支持 ,由调频器为与{http://ws-i.org/profiles/basic/1.1/xsd}swaRef相关的每个JAXB属性调用。
Constructor and Description |
---|
AttachmentMarshaller() |
Modifier and Type | Method and Description |
---|---|
abstract String |
addMtomAttachment(byte[] data, int offset, int length, String mimeType, String elementNamespace, String elementLocalName)
考虑二进制
data 作为附件的优化二进制存储。
|
abstract String |
addMtomAttachment(DataHandler data, String elementNamespace, String elementLocalName)
考虑MIME内容
data 作为附件的优化二进制存储。
|
abstract String |
addSwaRefAttachment(DataHandler data)
添加MIME
data 作为附件并返回附件的content-id,cid。
|
boolean |
isXOPPackage()
只读属性,如果JAXB编组器应该启用XOP创建,则返回true。
|
public abstract String addMtomAttachment(DataHandler data, String elementNamespace, String elementLocalName)
考虑MIME内容data
作为附件的优化二进制存储。
当isXOPPackage()
为true
时,由JAXB元数据流程调用该方法,对于数据类型为“base64Binary”的每个元素,如Creating XOP Packages中的步骤3 所述 。
该方法实现者确定是否data
应分别附接或内联为base64Binary,数据。 如果实现选择优化作为MIME部分的二进制数据的存储,则它负责将data data
到基于MIME的包,然后分配唯一的内容id,cid来标识MIME消息中的MIME部分。 该方法返回cid,这使JAXB编组器能够组织引用该cid的XOP元素代替编组二进制数据。 当该方法返回null时,JAXB编组器将data
作为base64binary数据。
需要调用此方法才能满足以下约束。 如果包含元素信息集项目data
具有属性xmime:contentType
或如果表示JAXB属性/字段data
与已知的MIME类型注释, data.getContentType()
应该被设置为MIME类型。
elementNamespace
和elementLocalName
参数提供包含二进制数据的上下文。 该信息可以由基于MIME的包处理器使用,以确定二进制数据是否应作为附件内联或优化。
data
- 表示要附加的数据。
必须非空。
elementNamespace
- 包含base64Binary数据的元素的命名空间URI。
可以是空的,但不能为空。
elementLocalName
- 元素的本地名称。
始终为非空的有效字符串。
data
。
否则,如果没有添加附件,则应该为null,而应该在消息中内联。
public abstract String addMtomAttachment(byte[] data, int offset, int length, String mimeType, String elementNamespace, String elementLocalName)
考虑二进制data
用于优化二进制存储作为附件。
由于内容类型未知,附件的MIME内容类型必须设置为“application / octet-stream”。
elementNamespace
和elementLocalName
参数提供了包含二进制数据的上下文。 该信息可以由基于MIME的包处理器使用,以确定二进制数据是否应作为附件内联或优化。
data
- 表示要附加的数据。
必须非空。
实际数据区域由(data,offset,length)元组指定 。
offset
- 要读取的第一个字节的数组内的偏移量;
必须是非负数,不大于array.length
length
- 要从给定数组读取的字节数;
必须是非负数,不大于array.length
mimeType
- 如果数据具有JAXB已知的关联MIME类型,则作为此参数传递。
如果没有人知道,“应用程序/八位字节流”。
此参数可能永远不为空。
elementNamespace
- 包含base64Binary数据的元素的命名空间URI。
可以是空的,但不能为空。
elementLocalName
- 元素的本地名称。
始终为非空的有效字符串。
data
,如果数据应该是内联,则为null。
addMtomAttachment(DataHandler, String, String)
public boolean isXOPPackage()
只读属性,如果JAXB编组器应该启用XOP创建,则返回true。
在编组过程中,此值不能更改。 当此值为true时,在addMtomAttachment(...)
过程遇到适当的二进制数据类型时,将调用addMtomAttachment(...)
方法。
如果此值为true
并且要编组的XML内容违反了Creating XOP Pacakges http://www.w3.org/TR/2005/REC-xop10-20050125/#creating_xop_packages中的步骤1,则Marshaller.marshal()必须抛出IllegalStateException。 “确保原始XML信息集不包含[namespace name]为”http://www.w3.org/2004/08/xop/include“的元素信息项目和Include的[本地名称]
当此方法返回true并且在组织过程期间,至少一次调用addMtomAttachment(...)
返回content-id时,基于MIME的程序包处理器必须使用application / xop + xml介质类型标记根部件,如Creating XOP Pacakges的步骤5 所述 。
public abstract String addSwaRefAttachment(DataHandler data)
添加MIME data
作为附件,并返回附件的content-id,cid。
每个元素/属性的JAXB元数据流程都会调用此方法,其类型为{http://ws-i.org/profiles/basic/1.1/xsd}swaRef。 实现此方法的基于MIME的包处理器负责将指定的数据附加到MIME附件,并生成唯一标识基于MIME的包中的附件的content-id,cid。
调用者将返回的content-id,cid插入正在编组的XML内容中。
data
- 表示要附加的数据。
必须非空。