[
https://issues.apache.org/jira/browse/AXIOM-482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15132117#comment-15132117
]
Detelin Yordanov commented on AXIOM-482:
----------------------------------------
This can be simulated by doing {{assertion.setDOM(null)}} before marshalling,
which forces the mashaller to marshall the assertion from its object
representation. The test is then successful, i.e. the resulting Document can be
queried for the assertion element by its id.
I also tried the workaround mentioned when this issue was discussed in Xerces
dev list, namely to call {{Document.normalizeDocument()}} but this did not
update the id references when using Xerces, and with Axiom it throws an
unsupported operation exception.
> Attaching an OMElement to a DOM Document does not update its id attributes
> --------------------------------------------------------------------------
>
> Key: AXIOM-482
> URL: https://issues.apache.org/jira/browse/AXIOM-482
> Project: Axiom
> Issue Type: Bug
> Components: DOOM
> Affects Versions: 1.2.17
> Reporter: Detelin Yordanov
> Attachments: OpensamlAssertionMarshallTest.zip
>
>
> When using Opensaml to marshall a SAML assertion from a soap envelope built
> with Axiom DOOM, the resulting assertion element cannot be properly copied to
> a new fresh Document - the copy is successful, however searching the Document
> for the assertion by its id (Document.getElementById()) returns null.
> It seems that Axiom Document implementation caches the id attributes (under
> idAttrs field) and these are not updated when a new OMElement is appended to
> the document.
> Opensaml marshaller uses Document.adoptNode(assertion) API followed by
> Document.appendNode(assertion) but neither of these update the id attributes
> in Axiom DocumentImpl so afterwards Document.getElementById(assertionId)
> returns null.
> I'm not quite certain that this issue is in Axiom, it might as well be in
> Opensaml. I'm providing a unit test that demonstrates the issue. Similar code
> is used in Axis2's Rampart security module when storing a processed SAML
> assertion to its token store.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]