f



soap4r 1.4.8.1 with REXML 2.7.1 - no REXML::VERSION_MAJOR

I grabbed the latest soap4r and had a go with the wsdl driver, only to 
come to an abrupt stop with the following

site_ruby/1.6/wsdl/rexmlparser.rb:40:in `doParse': uninitialized 
constant VERSION_MAJOR at REXML (NameError)
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:85:in `parse'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/soap/wsdlDriver.rb:81:in `parse'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/soap/wsdlDriver.rb:39:in 
`initialize'
	from wsdltest.rb:5:in `new'
	from wsdltest.rb:5


I?m running 1.6.8 on W2K at the moment and I looked for a VERSION_MAJOR 
in REXML but the beast does not want to show itself.
Any ideas ?
V.-


____________________________________________________________________
http://www.freemail.gr - ������ �������� ������������ ������������.
http://www.freemail.gr - free email service for the Greek-speaking.

0
damphyr (190)
7/16/2003 8:29:40 AM
comp.lang.ruby 48886 articles. 0 followers. Post Follow

2 Replies
486 Views

Similar Articles

[PageSpeed] 5

--vtzGhvizbBRQ85DL
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Wed 16 Jul 2003 at 17:29:40 +0900, Damphyr wrote:

> I grabbed the latest soap4r and had a go with the wsdl driver, only to 
> come to an abrupt stop with the following
> 
> site_ruby/1.6/wsdl/rexmlparser.rb:40:in `doParse': uninitialized 
> constant VERSION_MAJOR at REXML (NameError)
> 	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:85:in 
> 	`parse'
> 	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/soap/wsdlDriver.rb:81:in 
> 	`parse'
> 	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/soap/wsdlDriver.rb:39:in 
> `initialize'
> 	from wsdltest.rb:5:in `new'
> 	from wsdltest.rb:5
> 
> 
> I?m running 1.6.8 on W2K at the moment and I looked for a VERSION_MAJOR 
> in REXML but the beast does not want to show itself.
> Any ideas ?

I had similar problems.

Try the attached diff.

Ian
-- 
Ian Macdonald               | Radial Telemetry Infiltration 
System Administrator        | 
ian@caliban.org             | 
http://www.caliban.org      | 
                            | 

--vtzGhvizbBRQ85DL
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ruby-SOAP4R-1.4.8.1-REXML.diff"

diff -uNr soap4r-1_4_8_1.orig/lib/soap/rexmlparser.rb soap4r-1_4_8_1/lib/soap/rexmlparser.rb
--- soap4r-1_4_8_1.orig/lib/soap/rexmlparser.rb	2003-01-16 05:01:00.000000000 -0800
+++ soap4r-1_4_8_1/lib/soap/rexmlparser.rb	2003-05-08 16:10:59.000000000 -0700
@@ -36,8 +36,10 @@
 
   def doParse( stringOrReadable )
     source = nil
-    if REXML::VERSION_MAJOR < 2 or
-	( REXML::VERSION_MAJOR == 2 and REXML::VERSION_MINOR <= 4 )
+    version_major, version_minor =
+      REXML::Version.match(/(\d+)\.(\d+)/)[1,2].map! {|x| x.to_i}
+    if version_major < 2 or
+	( version_major == 2 and version_minor <= 4 )
       source = if charset
 	  ::SOAP::Charset.codeConv( stringOrReadable, ::SOAP::Charset.getCharsetStr( charset ), 'UTF8' )
 	else
diff -uNr soap4r-1_4_8_1.orig/lib/wsdl/rexmlparser.rb soap4r-1_4_8_1/lib/wsdl/rexmlparser.rb
--- soap4r-1_4_8_1.orig/lib/wsdl/rexmlparser.rb	2003-01-16 05:04:54.000000000 -0800
+++ soap4r-1_4_8_1/lib/wsdl/rexmlparser.rb	2003-05-08 16:10:49.000000000 -0700
@@ -36,8 +36,10 @@
 
   def doParse( stringOrReadable )
     source = nil
-    if REXML::VERSION_MAJOR < 2 or
-	( REXML::VERSION_MAJOR == 2 and REXML::VERSION_MINOR <= 4 )
+    version_major, version_minor =
+      REXML::Version.match(/(\d+)\.(\d+)/)[1,2].map! {|x| x.to_i}
+    if version_major < 2 or
+	( version_major == 2 and version_minor <= 4 )
       source = if charset
 	  ::SOAP::Charset.codeConv( stringOrReadable, ::SOAP::Charset.getCharsetStr( charset ), 'UTF8' )
 	else

--vtzGhvizbBRQ85DL--

0
ian2319 (81)
7/16/2003 9:03:47 AM
This is a multi-part message in MIME format.
--------------000102010909000209030503
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

OK, the patch for the version needs to be changed a bit:

-    version_major, version_minor =
-      REXML::Version.match(/(\d+)\.(\d+)/)[1,2].map! {|x| x.to_i}

+    version_major, version_minor =
+      /(\d+)\.(\d+)/.match(REXML::Version)[1,2].map! {|x| x.to_i}

After that comes the following:

"attr {}style"
f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/soap/operation.rb:46:in 
`parseAttr': Unknown attr {}style. (WSDL::WSDLParser::UnknownAttributeError)
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:188:in 
`decodeTag'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:170:in `each'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:170:in 
`decodeTag'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:111:in 
`startElement'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/rexmlparser.rb:62:in 
`tag_start'
	from 
f:/devlab/ruby/lib/ruby/site_ruby/1.6/rexml/parsers/streamparser.rb:17:in 
`parse'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/rexml/document.rb:166:in 
`parse_stream'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/rexmlparser.rb:55:in 
`doParse'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/wsdl/parser.rb:85:in `parse'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/soap/wsdlDriver.rb:81:in `parse'
	from f:/devlab/ruby/lib/ruby/site_ruby/1.6/soap/wsdlDriver.rb:39:in 
`initialize'
	from wsdltest.rb:5:in `new'
	from wsdltest.rb:5

which probably means that not everything is supported by soap4r.
I've been playing around with the .NET Web Sedrvice stuff, and the wsdl 
file I`m trying to parse is attached.
I'll dig in further, but it's going to take me a while
:)
V.-


____________________________________________________________________
http://www.freemail.gr - ������ �������� ������������ ������������.
http://www.freemail.gr - free email service for the Greek-speaking.
--------------000102010909000209030503
Content-Type: text/xml;
 name="KickerService.wsdl"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="KickerService.wsdl"

<?xml version="1.0" encoding="UTF-8"?>

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://tempuri.org/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
      <s:element name="GetTeams">
        <s:complexType/>
      </s:element>
      <s:element name="GetTeamsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="GetTeamsResult" type="s0:ArrayOfTeam"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfTeam">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Team" nillable="true" type="s0:Team"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Team">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="OffensivePlayer" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="DefensivePlayer" type="s:string"/>
        </s:sequence>
      </s:complexType>
    </s:schema>
  </types>
  <message name="GetTeamsSoapIn">
    <part name="parameters" element="s0:GetTeams"/>
  </message>
  <message name="GetTeamsSoapOut">
    <part name="parameters" element="s0:GetTeamsResponse"/>
  </message>
  <portType name="Service1Soap">
    <operation name="GetTeams">
      <input message="s0:GetTeamsSoapIn"/>
      <output message="s0:GetTeamsSoapOut"/>
    </operation>
  </portType>
  <binding name="Service1Soap" type="s0:Service1Soap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="GetTeams">
      <soap:operation soapAction="http://tempuri.org/GetTeams" style="document"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="Service1">
    <port name="Service1Soap" binding="s0:Service1Soap">
      <soap:address location="http://dfnnb019/Camp/KickerServiceDemo/Service1.asmx"/>
    </port>
  </service>
</definitions>
--------------000102010909000209030503--


0
damphyr (190)
7/16/2003 9:49:14 AM
Reply: