Kyla Miller created AXIOM-508:
---------------------------------

             Summary: Calling OMElement.cloneOMElement after OMElement.toString 
causes exception
                 Key: AXIOM-508
                 URL: https://issues.apache.org/jira/browse/AXIOM-508
             Project: Axiom
          Issue Type: Bug
          Components: LLOM
    Affects Versions: 1.3.0
            Reporter: Kyla Miller


If there is a descendant processing instruction within an element and the 
processing has any "psuedo" attributes then calling OMElement.cloneOMElement 
after OMElement.toString will cause an UnsupportedOperationException exeption.  
Example code:

 
        String inputFile = "test-resources\\XMLStaxUtils\\ComplexPITest.xml";   
     OMDocument inputDoc = XMLStaxUtils.readDocument(inputFile);
        OMElement rootElement = inputDoc.getOMDocumentElement();
        
        // This is the call that causes PIs to get trashed and will cause an 
UnsupportedOperationException to be thrown when cloning.
        rootElement.toString();
        
        try
        {
            rootElement.cloneOMElement();
            fail("UnsupportedOperationException should have been thrown.  If it 
was not then axiom has been fixed so update this test and 
XMLStaxUtils.cloneOMElement.");
        }
        catch (UnsupportedOperationException ex)
        {
        }
We got around it by creating a helper method that resets the text:
 
        List<OMNode> piNodes = getNodesWithDescendantPI(srcElement);
        for (OMNode piNode : piNodes)
        {
            OMProcessingInstruction pi = (OMProcessingInstruction) piNode;
            String piValue = pi.getValue();
            pi.setValue(piValue);
        }
        return srcElement.cloneOMElement();
 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to