2006. 02. 14, 오전 8:15, R J Scheuerle Jr 작성:


Consider the following code from the SOAPElementTest:

final String value = "foo";
soapElem.addTextNode(value);

I should be able to get the javax.xml.soap.Node using several different accessors (getChildElements(), getChildNodes(), getFirstChild()), etc.

------------------------------
Problem 1:
Object x = soapElem.getChildElements().next();
Object y = soapElem.getChildElements().next();

In this case, x and y are both javax.xml.soap.Node objects (good); however they are not the same object. The iterator is constructing new objects each time it is invoked. This is not efficient and incorrect.
soapElem.getChildElements() returns an Iterator, therefore its first next() and second next() should return different objects. Please make sure that Iterator.next() is not a plain accessor but designed to use traversing over collections.


-------------------------------
Problem 2
Object z1 = soapElem.getChildNodes().item(0);
Object z2 = soapElem.getFirstChild();

In both cases, the returned object is not an SAAJ javax.xml.soap.Node. This also seems to be a violation of the specification.
Could you tell us exactly what type is z1 and z2? I also guess those returned objects belong to OM package, not DOOM package.

Thanks,

Ias

===========================
The proposed solution is to clearly separate the SAAJ implementation from the "backing" axis2.om.impl.dom tree. The SAAJ layer is a semantic view of the underlying DOM model. Thus it should always return SAAJ objects when its methods are invoked.


Comments ?

Rich Scheuerle
Senior Developer
IBM WebSphere Web Services Engine & Tooling
512-838-5115 (IBM TL 678-5115)

Reply via email to