Using XOP-enabled marshalling/unmarshalling
XOP marshalling/unmarshalling is under development and not yet complete
Current requirements for XSD types
XSD types can be complex or simple types
XSD types can optionally declare attributes only from the 'http://www.w3.org/2005/05/xmlmime' namespace
if an XSD type declares xmlmime:contentType attribute, the attribute should be optional since marshalling does not yet support this attribute
the type of the text content must be or be derived from xs:base64Binary
The following types can be used to apply XOP to:
xmime:base64Binary <xs:complexType name="MyBinaryType"> <xs:simpleContent> <xs:extension base="xs:base64Binary" > <xs:attribute ref="xmime:contentType" use="optional"></xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType>
Default MIME contentType
This is the current default mapping.
Java type | contentType |
java.awt.Image | image/jpeg |
javax.xml.transform.Source | application/xml |
java.lang.String | text/xml |
javax.activation.DataHandler | application/octet-stream |
other types | application/octet-stream |
How to apply XOP processing for a specific XSD component?
Assuming the requirements specified above for the XSD types are satisfied, to enable XOP processing, one should:
implement org.jboss.xb.binding.sunday.xop.XOPMarshaller and org.jboss.xb.binding.sunday.xop.XOPUnmarshaller interfaces. These interfaces are actually copies of javax.xml.bind.AttachmentMarshaller and javax.xml.bind.AttachmentUnmarshaller respectively that were introduced due to build system issues.
instances of the XOP marshaller and unmarshaller implementations can then be set on an instance of org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding to set the default XOP marshaller/unmarshaller for every XOP-optimizable XSD type in the schema
alternatively, instances of the XOP marshaller and unmarshaller can be set on specific org.jboss.xb.binding.sunday.TypeBinding. Setting XOP marshaller/unmarshaller on a TypeBinding overrides SchemaBinding-default XOP marshaller/unmarshaller if the default is set.
For examples, see org.jboss.test.xml.XOPUnitTestCase in the JBoss testsuite.
Comments