WSDL parse failure (ruby 1.8.1-preview2, soap4r-1_5_1)

B

Brian Marick

The Ruby wsdl library doesn't seem to be able to parse the
GoogleSearch.wsdl file (http://api.google.com/GoogleSearch.wsdl).


I am using ruby 1.8.1-preview2. This problem happens both with the
pre-installed wsdl code and the code from soap4r-1_5_1.

Here's the symptom when I run the googleSearch/wsdlDriver example
from Soap4r:

Unknown attr {http://schemas.xmlsoap.org/wsdl/}arrayType.
Unknown attr {http://schemas.xmlsoap.org/wsdl/}arrayType.
/usr/local/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:396:in
`decode_tag_by_wsdl': undefined method `namespace' for nil:NilClass
(NoMethodError)
from /usr/local/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:179:in
`decode_tag'
from /usr/local/lib/ruby/1.8/soap/parser.rb:184:in `decode_tag'
from /usr/local/lib/ruby/1.8/soap/parser.rb:132:in `start_element'
from /usr/local/lib/ruby/1.8/xsd/xmlparser/parser.rb:78:in
`start_element'
from /usr/local/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:45:in
`tag_start'
from /usr/local/lib/ruby/1.8/rexml/parsers/streamparser.rb:17:in
`parse'
from /usr/local/lib/ruby/1.8/rexml/document.rb:166:in `parse_stream'
from /usr/local/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:38:in
`do_parse'
from /usr/local/lib/ruby/1.8/soap/parser.rb:100:in `parse'
from /usr/local/lib/ruby/1.8/soap/processor.rb:47:in `unmarshal'
from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:366:in `invoke'
from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:301:in `rpc_send'
from (eval):2:in `doGoogleSearch'
from trial.rb:19

Those "Unknown attr" messages come from .../lib/ruby/wsdl/parser.rb in
decode_tag. A few puts's make me think that this part of the WSDL
provokes them:

<xsd:complexType name="ResultElementArray">
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:attribute ref="soapenc:arrayType"
wsdl:arrayType="typens:ResultElement[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="DirectoryCategoryArray">
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:attribute ref="soapenc:arrayType"
wsdl:arrayType="typens:DirectoryCategory[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>

(I deduced this by printing out the name and attrs in
start_element. One element that seems to cause the error prints as:
xsd:attribute
wsdl:arrayTypetypens:DirectoryCategory[]refsoapenc:arrayType

Plus, the above two elements are the only ones that contain
"arrayType".)

Unfortunately, I am scandalously ignorant when it comes to SOAP and
WSDL and all that, so I'm not sure where to take this next. Can
someone offer a clue?

-----
Brian Marick
Consulting, training, contracting, and research
Focused on the intersection of testing, programming, and design
(e-mail address removed), (e-mail address removed)
www.testing.com, www.visibleworkings.com
 
N

NAKAMURA, Hiroshi

Hi,
From: "Brian Marick" <[email protected]>
Sent: Friday, November 07, 2003 10:19 AM
The Ruby wsdl library doesn't seem to be able to parse the
GoogleSearch.wsdl file (http://api.google.com/GoogleSearch.wsdl).

Thank you for the report. My fault. I redefined "arrayType" in
wrong namespace in soap4r/1.5.1 (and I skipped Google WSDL test...)
For short-term workaround, try this patch to lib/wsdl/xmlSchema/data.rb
This definition should be moved to lib/wsdl/data.rb in the next release.

Regards,
// NaHi

Index: data.rb
===================================================================
RCS file: /src/ruby/lib/wsdl/xmlSchema/data.rb,v
retrieving revision 1.2
diff -u -2 -p -r1.2 data.rb
--- data.rb 29 Sep 2003 07:27:57 -0000 1.2
+++ data.rb 7 Nov 2003 01:37:01 -0000
@@ -37,5 +37,5 @@ module XMLSchema
AllName = XSD::QName.new(XSD::Namespace, 'all')
AnyName = XSD::QName.new(XSD::Namespace, 'any')
-ArrayTypeAttrName = XSD::QName.new(XSD::Namespace, 'arrayType')
+ArrayTypeAttrName = XSD::QName.new(Namespace, 'arrayType')
AttributeName = XSD::QName.new(XSD::Namespace, 'attribute')
ChoiceName = XSD::QName.new(XSD::Namespace, 'choice')
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top