You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by "Kyla Miller (Jira)" <ji...@apache.org> on 2021/11/12 02:04:00 UTC
[jira] [Created] (AXIOM-508) Calling OMElement.cloneOMElement after
OMElement.toString causes exception
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: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org