- java.lang.Object
-
- javax.xml.bind.attachment.AttachmentMarshaller
-
public abstract class AttachmentMarshaller extends Object
启用JAXB编组以优化二进制数据的存储。
该API能够在JAXB编组过程和基于MIME的包处理器之间高效地协同创建优化的二进制数据格式。 JAXB实现将基于MIME的程序包的根本体进行编组,将可引用MIME部件的创建委托给实现此抽象的基于MIME的程序包处理器。
当
isXOPPackage()
为真时,XOP处理被使能。 详见addMtomAttachment(DataHandler, String, String)
。WS-I Attachment Profile 1.0由
addSwaRefAttachment(DataHandler)
支持,由marshaller为与{http://ws-i.org/profiles/basic/1.1/xsd}swaRef相关的每个JAXB属性调用。- 从以下版本开始:
- 1.6,JAXB 2.0
- 另请参见:
-
Marshaller.setAttachmentMarshaller(AttachmentMarshaller)
, XML-binary Optimized Packaging , WS-I Attachments Profile Version 1.0.
-
-
构造方法摘要
构造方法 Constructor 描述 AttachmentMarshaller()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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)
添加MIMEdata
作为附件,并返回附件的content-id,cid。boolean
isXOPPackage()
只读属性,如果JAXB编组器应该启用XOP创建,则返回true。
-
-
-
方法详细信息
-
addMtomAttachment
public abstract String addMtomAttachment(DataHandler data, String elementNamespace, String elementLocalName)
考虑MIME内容
data
作为附件的优化二进制存储。对于数据类型为“base64Binary”的每个元素,当
isXOPPackage()
为true
,由JAXB元数据流程调用此方法,如Creating XOP Packages中的步骤3 所述 。方法实现者确定
data
是否应单独附加或作为data
数据内联。 如果实现选择优化作为MIME部分的二进制数据的存储,则它负责将data
附加到基于MIME的包,然后分配唯一的content-id,cid来标识MIME消息中的MIME部分。 该方法返回cid,这使JAXB编组器能够组织引用该cid的XOP元素代替编组二进制数据。 当该方法返回null时,JAXB编组器将data
作为base64binary数据。需要调用此方法才能满足以下约束。 如果包含
data
的元素信息集项目具有属性xmime:contentType
或者如果表示data
的JAXB属性/字段用已知的MIME类型进行注释,data.getContentType()
应该设置为该MIME类型。elementNamespace
和elementLocalName
参数提供了包含二进制数据的上下文。 该信息可以由基于MIME的包处理器使用,以确定二进制数据是否应作为附件内联或优化。- 参数
-
data
- 表示要附加的数据。 必须非空。 -
elementNamespace
- 包含base64Binary数据的元素的命名空间URI。 可以是空的,但不能为空。 -
elementLocalName
- 元素的本地名称。 始终为非空的有效字符串。 - 结果
-
标识包含
data
的附件的有效content-id URI(见RFC 2387 )。 否则,如果没有添加附件,则应该为null,而应该在消息中内联。 - 另请参见:
- XML-binary Optimized Packaging , Describing Media Content of Binary Data in XML
-
addMtomAttachment
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
- 元素的本地名称。 始终为非空的有效字符串。 - 结果
-
content-id URI,cid,包含
data
的附件,如果数据应该是内联,data
null。 - 另请参见:
-
addMtomAttachment(DataHandler, String, String)
-
isXOPPackage
public boolean isXOPPackage()
只读属性,如果JAXB编组器应该启用XOP创建,则返回true。
在编组过程中,此值不能更改。 当此值为true时,当元数据进程遇到相应的二进制数据类型时,将调用
addMtomAttachment(...)
方法。如果此值为
true
并且要编组的XML内容违反了Creating XOP Pacakges http://www.w3.org/TR/2005/REC-xop10-20050125/#creating_xop_packages中的步骤1,则Marshaller.marshal()必须抛出IllegalStateException。 “确保原始XML信息集不包含[命名空间名称]为”http://www.w3.org/2004/08/xop/include“的元素信息项目和”包含“的[本地名称]当此方法返回true时,并且在组织过程中至少一次调用
addMtomAttachment(...)
返回content-id时,基于MIME的程序包处理器必须使用application / xop + xml介质类型标记根部件,如Creating XOP Pacakges的步骤5 所述 。- 结果
- 如果MIME上下文是XOP包,则为true。
-
addSwaRefAttachment
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
- 表示要附加的数据。 必须非空。 - 结果
- 必须是一个用作cid的有效URI。 必须满足一致性要求R2928从WS-I Attachments Profile Version 1.0.
-
-