Hi all,

Axiom implementation doesn't provide a method to retrieve the owner element
of an OMAttributeImpl instance. I've already created a JIRA on this issue
(see https://issues.apache.org/jira/browse/WSCOMMONS-230). I've resolved the
issue by adding an OMElement reference in OMAttributeImpl to keep track of
its owner. Thus I've provided a getOwner() method in OMAttribute interface.

Now, I came across the issue of enforcing single owner restriction for
OMAttributes instances. Previously there was no constraint like that. The
patches I've send for the particular JIRA enforces this by means of not
adding the attribute to the element if its already used in another element.
This approach, however, tends to break Axis2 build because in Axis2 there
are incidents where attributes are being added to more than one element.
Thus I came up with two solutions to overcome this issue.

1. Throw a runtime exception (this is how it's done in DOM). Thus we are
sure that no two OMElements will contain the same OMAttribute instance (yes,
still we need to fix Axis2 code to not use attributes in more than one
element)

2.  Create a new attribute  with  the same namespace, localname, and value.
Thus whenever a user tries to add an OMAttribute instance, which is already
used in an OMElement instance, to another OMElement instance that attribute
instance is cloned and its parent is set to the new element.

I'm in favour of the second decision as it's more user friendly. The library
itself does the cloning process so that a user has to know only that it's
not the same attribute used but the cloned one.

Your idea on this matter is highly appreciated.

Thanks in advance,

--Saliya

Reply via email to