[ http://issues.apache.org/jira/browse/AXIS-1817?page=comments#action_59392 ] Jongjin Choi commented on AXIS-1817: ------------------------------------
Hi, all. The getValue()'s murk comes from rev.1.188 of MessageElement. I think that rev.1.188 was right direction for performance because it reduces unnecessary SAAJ -> DOM conversion and DOM serialization should be avoided as much as possible because SAAJ 1.2 is also a DOM. As you pointed, I think the TextSerializationContext should not be used, too. Besides this issue, also according to SAAJ, the value returned from Node.getValue() should be following in these cases: (from test.message.TestMessageElement#testGetNodeValue()) 1. <anElement xmlns:ns1=\"aNamespace\"><bElement>FooBar</bElement>Mixed</anElement> --> Mixed (currently the test case checks if it is 'null', this is invalid test) 2. <anElement xmlns:ns1=\"aNamespace\">Foo<bElement>FooBar</bElement>Mixed</anElement> --> Foo For #1, we should find the first text node among the childrens. (not just the first node). For #2, We should append text child when a child element starts. Fixing getValueDOM() could solve #1, but I don't think DOM approach is desirable. Thanks. > MessageElement.getValue doesn't do XML decoding > ----------------------------------------------- > > Key: AXIS-1817 > URL: http://issues.apache.org/jira/browse/AXIS-1817 > Project: Axis > Type: Bug > Components: Serialization/Deserialization > Versions: 1.2RC2 > Environment: XP / JDK 1.4.x / > Reporter: Simon Fell > Assignee: Venkat Reddy > Attachments: diff.txt > > This actually with the 1.2 RC3 > If the WSDL contains a <any> element, this is mapped to a MessageElement [], > in Axis 1.1 calling getValue on one of these MessageElement's would return > the contents of the element post XML processing, in Axis 1.2 RC3 it seems to > be returning the raw data, e.g. if the response element is > <elem>A>B</elem> > In Axis 1.1, getValue() returns "A>B" but Axis 1.2 returns "A>B" > There's a test service at http://soap.4s4c.com/dotnet/any.wsdl > here's some client code to call it. > AnyServiceLocator loc = new AnyServiceLocator(); > Soap svc = loc.getSoap(); > > QueryResult qr = svc.query("blah"); > > for (int i =0; i < qr.getRecords().length; i++ ) { > SObject s = qr.getRecords(i); > MessageElement [] e= s.get_any(); > System.out.println("MessageElement array size is " + > e.length); > for (int j = 0; j < e.length; j++ ){ > System.out.print(" " + e[j].getValue()); > } > System.out.println(""); > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira
