Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Background:
An OM tree may have one or more OMSourcedElement nodes in the tree. An OMSourcedElement represents an OMElement but contains its content in an alternative form (String, bytes, JAXB object etc.)
The OMSourcedElement nodes allow OM to represent a message with a much flatter tree.
Problem:
If an OM tree containing OMSourcedElements is serialized with the StreamingOMSerializer, the OMSourcedElements are inadvertently expanded. This extra processing is slow and unnecessary.
Solution:
The StreamingOMSerializer uses an OMNavigator to walk the incoming XMLStreamReader events. When the OMNavigator encounters a OMSourcedElement, it expands the OMSourcedElement so that it can generated the XMLStreamReader events for the content.
The solution is to add a property to the OMNavigator to allow it to tree OMSourcedElements as leaf objects. In such cases, the StreamingOMSerializer can gain access to the OMDataSource and write it out directly. This increases performance because it eliminates the expansion of the tree.
I am working on a series of validation tests and a code solution.