SOAP, enumeration + token, and error in base2soap

  • Thread starter Marcin Gryszkalis
  • Start date
M

Marcin Gryszkalis

Hi
I have soap server that has WSDL with request containing

<xsd:element name="mode" type="ons:ModeT" />

where ModeT is defined as

<xsd:simpleType name="ModeT">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="abc"/>
<xsd:enumeration value="xyz"/>
</xsd:restriction>
</xsd:simpleType>

I created client using
SOAP::WSDLDriverFactory.new(*).create_rpc_driver
and it fails with

/usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:151:in `base2soap': undefined method `<=' for nil:NilClass (NoMethodError)
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:127:in `simpleobj2soap'
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:118:in `obj2typesoap'
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:44:in `obj2soap'
from /usr/lib/ruby/1.8/soap/mapping/mapping.rb:127:in `_obj2soap'
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:210:in `elements2soap'
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:206:in `each'
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:206:in `elements2soap'
from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:167:in `struct2soap'
... 18 levels...

changing xsd:token to xsd:string in client fixes problem (but It won't be
easy to force such change in oryginal WSDL).

Is it just a bug in soap4r, is there anything I could fix on my side?

greetings
 
M

Mark Thomas

Hi
I have soap server that has WSDL with request containing

<xsd:element name="mode" type="ons:ModeT" />

where ModeT is defined as

            <xsd:simpleType name="ModeT">
                <xsd:restriction base="xsd:token">
                    <xsd:enumeration value="abc"/>
                    <xsd:enumeration value="xyz"/>
                </xsd:restriction>
            </xsd:simpleType>

I created client using
SOAP::WSDLDriverFactory.new(*).create_rpc_driver
and it fails with

/usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:151:in `base2soap': undefined method `<=' for nil:NilClass (NoMethodError)
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:127:in `simpleobj2soap'
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:118:in `obj2typesoap'
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:44:in `obj2soap'
        from /usr/lib/ruby/1.8/soap/mapping/mapping.rb:127:in `_obj2soap'
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:210:in `elements2soap'
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:206:in `each'
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:206:in `elements2soap'
        from /usr/lib/ruby/1.8/soap/mapping/wsdlencodedregistry.rb:167:in `struct2soap'
         ... 18 levels...

changing xsd:token to xsd:string in client fixes problem (but It won't be
easy to force such change in oryginal WSDL).

Is it just a bug in soap4r, is there anything I could fix on my side?

What version of soap4r are you using? The one that comes with Ruby is
buggy. Try grabbing the latest (1.5.8) if you haven't done so already.
 
M

Marcin Gryszkalis

Mark said:
What version of soap4r are you using? The one that comes with Ruby is
buggy. Try grabbing the latest (1.5.8) if you haven't done so already.

ok, right, 1.5.8 works well, thanks
 

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

Members online

No members online now.

Forum statistics

Threads
473,968
Messages
2,570,150
Members
46,697
Latest member
AugustNabo

Latest Threads

Top