[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

SOAP, enumeration + token, and error in base2soap

Marcin Gryszkalis

2/5/2008 5:11:00 AM

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
--
Marcin Gryszkalis, PGP 0x9F183FA3
jabber jid:mg@fork.pl, gg:2532994
http://t...

2 Answers

Mark Thomas

2/5/2008 3:26:00 PM

0

On Feb 5, 12:10 am, Marcin Gryszkalis <m...@fork.pl> wrote:
> 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.

Marcin Gryszkalis

2/5/2008 4:51:00 PM

0

Mark Thomas wrote:
> 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
--
Marcin Gryszkalis, PGP 0x9F183FA3
jabber jid:mg@fork.pl, gg:2532994
http://t...