OMNodeImpl serialize methods are causing excessive wrappering of 
MTOMXMLStreamWriter objects
--------------------------------------------------------------------------------------------

                 Key: WSCOMMONS-368
                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-368
             Project: WS-Commons
          Issue Type: Bug
          Components: AXIOM
            Reporter: Rich Scheuerle
            Assignee: Rich Scheuerle
            Priority: Minor


Problem:
There are several serialize methods in the llom and dom implementations that 
cause excessive wrappering of MTOMXMLStreamWriter objects.  This increases call 
path and temporary objects.  (Plus it can cause problems because the inner 
MTOMXMLStreamWriter may have special OMFormat settings that are masked by the 
outer MTOMXMLStreamWriter).

Example  Current, Bad Code:

/**
     * Serializes the node with caching.
     *
     * @param xmlWriter
     * @throws javax.xml.stream.XMLStreamException
     *
     */
    public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
        
       MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(xmlWriter);
        internalSerialize(writer);
        writer.flush();
    }

Corrected Code:

/**
     * Serializes the node with caching.
     *
     * @param xmlWriter
     * @throws javax.xml.stream.XMLStreamException
     *
     */
    public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
        
        // If the input xmlWriter is not an MTOMXMLStreamWriter, then wrapper it
        MTOMXMLStreamWriter writer = xmlWriter instanceof MTOMXMLStreamWriter ?
                (MTOMXMLStreamWriter) xmlWriter : 
                    new MTOMXMLStreamWriter(xmlWriter);
        internalSerialize(writer);
        writer.flush();
    }


Next Step:

I am making this change in 4 places in Axiom.  I will commit the change after I 
complete Axiom and Axis2 testing.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to