| 1 |
<?xml version="1.0"?> |
|---|
| 2 |
<!DOCTYPE html |
|---|
| 3 |
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
|---|
| 4 |
"DTD/xhtml1-strict.dtd"> |
|---|
| 5 |
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> |
|---|
| 6 |
<head> |
|---|
| 7 |
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> |
|---|
| 8 |
<meta http-equiv="Content-Style-Type" content="text/css" /> |
|---|
| 9 |
<link rev="MADE" href="mailto:nakahiro@sarion.co.jp" /> |
|---|
| 10 |
<link rel="StyleSheet" href="rubyStyle.css" type="text/css" media="screen" /> |
|---|
| 11 |
<title>Release Notes - SOAP4R</title> |
|---|
| 12 |
</head> |
|---|
| 13 |
<body> |
|---|
| 14 |
|
|---|
| 15 |
<div class="header"> |
|---|
| 16 |
<h1> |
|---|
| 17 |
Release Notes - SOAP4R |
|---|
| 18 |
</h1> |
|---|
| 19 |
|
|---|
| 20 |
<p class="status"> |
|---|
| 21 |
Last modified: January 17, 2003<br /> |
|---|
| 22 |
Created: July 17, 2000 |
|---|
| 23 |
</p> |
|---|
| 24 |
</div> |
|---|
| 25 |
|
|---|
| 26 |
<hr /> |
|---|
| 27 |
|
|---|
| 28 |
<div class="main"> |
|---|
| 29 |
<h2>0. In this document...</h2> |
|---|
| 30 |
|
|---|
| 31 |
<p> |
|---|
| 32 |
This is Release Notes of SOAP4R. |
|---|
| 33 |
</p> |
|---|
| 34 |
|
|---|
| 35 |
<p> |
|---|
| 36 |
Target SOAP4R version: SOAP4R/1.4.8 |
|---|
| 37 |
</p> |
|---|
| 38 |
|
|---|
| 39 |
<ol> |
|---|
| 40 |
<li><a href="#changes">Changes</a></li> |
|---|
| 41 |
<li><a href="#install">Install</a></li> |
|---|
| 42 |
<li><a href="#uninstall">Uninstall</a></li> |
|---|
| 43 |
<li><a href="#whats">What is SOAP4R?</a></li> |
|---|
| 44 |
<li><a href="#dependencies">Dependencies</a></li> |
|---|
| 45 |
<li><a href="#samples">Samples</a></li> |
|---|
| 46 |
<li><a href="#restrictions">Restrictions</a></li> |
|---|
| 47 |
<li><a href="#resources">Resources</a></li> |
|---|
| 48 |
<li><a href="#history">History</a></li> |
|---|
| 49 |
<li><a href="#author">Author</a></li> |
|---|
| 50 |
<li><a href="#copyright">Copyright</a></li> |
|---|
| 51 |
</ol> |
|---|
| 52 |
|
|---|
| 53 |
<h2 id="changes" name="changes">1. Changes</h2> |
|---|
| 54 |
|
|---|
| 55 |
<p> |
|---|
| 56 |
This version has these enhancements and bug fixes; |
|---|
| 57 |
</p> |
|---|
| 58 |
<ul> |
|---|
| 59 |
<li>Avoid warnings; |
|---|
| 60 |
<ul> |
|---|
| 61 |
<li>Use Object#class instead of Object#type.</li> |
|---|
| 62 |
<li>Avoid implicit use a String as a regexp source.</li> |
|---|
| 63 |
</ul></li> |
|---|
| 64 |
<li>Add wsdlDriver which reads WSDL file and allow client to call procedures. Here is an example to search Google. |
|---|
| 65 |
<pre> |
|---|
| 66 |
require 'soap/wsdlDriver' |
|---|
| 67 |
searchWord = ARGV.shift |
|---|
| 68 |
# You must get key from http://www.google.com/apis/ to use Google Web APIs. |
|---|
| 69 |
key = File.open(File.expand_path("~/.google_key")).read.chomp |
|---|
| 70 |
GOOGLE_WSDL = 'http://api.google.com/GoogleSearch.wsdl' |
|---|
| 71 |
# Load WSDL and create driver. |
|---|
| 72 |
google = SOAP::WSDLDriverFactory.new(GOOGLE_WSDL).createDriver |
|---|
| 73 |
# Just invoke! |
|---|
| 74 |
result = google.doGoogleSearch(key, searchWord, 0, 10, false, "", false, "", 'utf-8', 'utf-8') |
|---|
| 75 |
result.resultElements.each do |ele| |
|---|
| 76 |
puts "== #{ele.title}: #{ele.URL}" |
|---|
| 77 |
puts ele.snippet |
|---|
| 78 |
puts |
|---|
| 79 |
end |
|---|
| 80 |
</pre></li> |
|---|
| 81 |
<li>WSDLDriver client examples of AmazonWebServices, RAA and RNN (Japanese Ruby blog site) are also included in sample/ dir.</li> |
|---|
| 82 |
<li>Support xmlscan XML processor.</li> |
|---|
| 83 |
<li>Changed XML processor detection scheme. Search xmlscan, REXML, XMLParser and NQXML in this order.</li> |
|---|
| 84 |
<li>Rewrite charset handling of XML processor. |
|---|
| 85 |
<ul> |
|---|
| 86 |
<li>If you only use us-ascii and utf-8, all XML processors should work without uconv module.</li> |
|---|
| 87 |
<li>With xmlscan/0.2 or later, you can handle euc-jp or shift_jis encoded XML instance WITHOUT uconv module.</li> |
|---|
| 88 |
<li>With other XML processors includes xmlscan/0.1, you need to install uconv module to handle euc-jp or shift_jis encoded XML instance.</li> |
|---|
| 89 |
</ul></li> |
|---|
| 90 |
<li>cgistub.rb: Overridable response mediatype. There exists a http client which does not accept the mediatype text/xml which is specified in SOAP spec. For example, an i-Mode (smart phone) client does not accept it... You can set response mediatype to 'text/plain' for such client though it violates SOAP spec...</li> |
|---|
| 91 |
<li>wsdl2ruby: Add --force option to override existing file.</li> |
|---|
| 92 |
<li>Fixed many bugs.</li> |
|---|
| 93 |
</ul> |
|---|
| 94 |
|
|---|
| 95 |
<h2 id="install" name="install">2. Install</h2> |
|---|
| 96 |
|
|---|
| 97 |
<p> |
|---|
| 98 |
At first, see <a href="#dependencies">Dependencies</a> section. |
|---|
| 99 |
You may need to install some extra packages. |
|---|
| 100 |
Next, get the archived file of SOAP4R and extract it, then simply try; |
|---|
| 101 |
</p> |
|---|
| 102 |
<pre class="path"> |
|---|
| 103 |
$ ruby install.rb |
|---|
| 104 |
</pre> |
|---|
| 105 |
|
|---|
| 106 |
<p> |
|---|
| 107 |
Necessary files will be installed to suitable directory. |
|---|
| 108 |
</p> |
|---|
| 109 |
|
|---|
| 110 |
<p> |
|---|
| 111 |
Files in lib/soap directory are SOAP4R library program itself. |
|---|
| 112 |
Followings are redistributed files in redist/. |
|---|
| 113 |
</p> |
|---|
| 114 |
|
|---|
| 115 |
<dl> |
|---|
| 116 |
<dt class="path">GServer</dt> |
|---|
| 117 |
<dd>by John W. Small: <a href="http://fairfax2.laser.net/~jsmall/rubycorner.html">http://fairfax2.laser.net/~jsmall/rubycorner.html</a></dd> |
|---|
| 118 |
|
|---|
| 119 |
<dt class="path">httpserver.rb</dt> |
|---|
| 120 |
<dd>by Michael Neumann: httpserver.rb in <a href="http://www.ruby-lang.org/raa/list.rhtml?name=xml-rpc">[RAA:XML-RPC]</a></dd> |
|---|
| 121 |
</dl> |
|---|
| 122 |
|
|---|
| 123 |
<p> |
|---|
| 124 |
Files in archive: |
|---|
| 125 |
</p> |
|---|
| 126 |
|
|---|
| 127 |
<dl> |
|---|
| 128 |
<dt class="path">lib/soap/</dt> |
|---|
| 129 |
<dd>SOAP4R library.</dd> |
|---|
| 130 |
|
|---|
| 131 |
<dt class="path">lib/wsdl/</dt> |
|---|
| 132 |
<dd>WSDL4R library.</dd> |
|---|
| 133 |
|
|---|
| 134 |
<dt class="path">sample/</dt> |
|---|
| 135 |
<dd>SOAP4R samples. |
|---|
| 136 |
See <a href="#samples">Samples</a> section.</dd> |
|---|
| 137 |
|
|---|
| 138 |
<dt class="path">test/</dt> |
|---|
| 139 |
<dd>Clients/Server for |
|---|
| 140 |
<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| 141 |
Followings are advanced examples to use complex type transmit, |
|---|
| 142 |
sending base64 encoded string, multi-dimensional array, and so on. |
|---|
| 143 |
<ul> |
|---|
| 144 |
<li>test/interopR2/server.cgi is a RPC Server side implementation.</li> |
|---|
| 145 |
<li>test/interopR2/client*.rb is a RPC Client side implementation.</li> |
|---|
| 146 |
<li>test/interopR2/base.rb includes common definitions for client/server.</li> |
|---|
| 147 |
</ul> |
|---|
| 148 |
</dd> |
|---|
| 149 |
|
|---|
| 150 |
<dt class="path">redist/</dt> |
|---|
| 151 |
<dd>Redistributed modules which SOAP4R uses. |
|---|
| 152 |
I would appriciate to authors of these programs. |
|---|
| 153 |
</dd> |
|---|
| 154 |
|
|---|
| 155 |
</dl> |
|---|
| 156 |
|
|---|
| 157 |
<h2 id="uninstall" name="uninstall">3. Uninstall</h2> |
|---|
| 158 |
|
|---|
| 159 |
<p> |
|---|
| 160 |
To uninstall; |
|---|
| 161 |
</p> |
|---|
| 162 |
|
|---|
| 163 |
<pre class="path"> |
|---|
| 164 |
$ ruby uninstall.rb |
|---|
| 165 |
</pre> |
|---|
| 166 |
|
|---|
| 167 |
<p> |
|---|
| 168 |
Of cource, modules listed at <a href="#dependencies">Dependencies</a> |
|---|
| 169 |
which you may install are not uninstalled. |
|---|
| 170 |
</p> |
|---|
| 171 |
|
|---|
| 172 |
<h2 id="whats" name="whats">4. What is SOAP4R?</h2> |
|---|
| 173 |
|
|---|
| 174 |
<p> |
|---|
| 175 |
'SOAP4R' is an implementation of |
|---|
| 176 |
<a href="http://www.w3.org/TR/SOAP/">Simple Object Access Protocol (SOAP) 1.1 (W3C Note)</a>. |
|---|
| 177 |
</p> |
|---|
| 178 |
|
|---|
| 179 |
<p> |
|---|
| 180 |
Comments, information such as interoperability between SOAP4R and another implementation are welcomed. |
|---|
| 181 |
Feel free sending mail to |
|---|
| 182 |
<a href="mailto:nakahiro@sarion.co.jp" class="path">nakahiro@sarion.co.jp</a>. |
|---|
| 183 |
</p> |
|---|
| 184 |
|
|---|
| 185 |
<h2 id="dependencies" name="dependencies">5. Dependencies</h2> |
|---|
| 186 |
|
|---|
| 187 |
<p> |
|---|
| 188 |
SOAP4R is written in <a href="http://www.ruby-lang.org">Ruby</a> and |
|---|
| 189 |
aims to use with Ruby application. |
|---|
| 190 |
You have to install Ruby itself. |
|---|
| 191 |
Ruby/1.6 series are required. |
|---|
| 192 |
It does not works on 1.4 series because it does not have class variable. |
|---|
| 193 |
</p> |
|---|
| 194 |
|
|---|
| 195 |
<p> |
|---|
| 196 |
SOAP4R depends on following Ruby modules in |
|---|
| 197 |
<a href="http://www.ruby-lang.org/raa/">RAA</a>. |
|---|
| 198 |
You also have to install these modules to use SOAP4R. |
|---|
| 199 |
</p> |
|---|
| 200 |
|
|---|
| 201 |
<dl> |
|---|
| 202 |
<dt class="path">XML processor</dt> |
|---|
| 203 |
<dd>SOAP4R requires a XML processor package installed. |
|---|
| 204 |
For now, one of following XML processor must be installed |
|---|
| 205 |
(SOAP4R automatically detects it in runtime). |
|---|
| 206 |
FYI: xmlscan and REXML are scheduled to be included in ruby/1.8's standard |
|---|
| 207 |
distribution. Version following each project is the version tested with soap4r. |
|---|
| 208 |
<ul> |
|---|
| 209 |
<li><a href="http://www.ruby-lang.org/raa/list.rhtml?name=xmlscan">[RAA:xmlscan]</a> (0.1.3 or 0.2.0-20030116)</li> |
|---|
| 210 |
<li><a href="http://www.ruby-lang.org/raa/list.rhtml?name=rexml">[RAA:REXML]</a> (2.5.3)</li> |
|---|
| 211 |
<li><a href="http://www.ruby-lang.org/raa/list.rhtml?name=rexml-stable">[RAA:REXML-stable]</a> (2.4.5)</li> |
|---|
| 212 |
<li><a href="http://www.ruby-lang.org/raa/list.rhtml?name=xmlparser">[RAA:XMLParser]</a> (0.6.5)</li> |
|---|
| 213 |
<li><a href="http://www.ruby-lang.org/raa/list.rhtml?name=nqxml">[RAA:NQXML]</a> (1.1.3p1)</li> |
|---|
| 214 |
</ul></dd> |
|---|
| 215 |
|
|---|
| 216 |
<dt class="path"><a href="http://www.ruby-lang.org/raa/list.rhtml?name=date2">[RAA:date2]</a> (3.2)</dt> |
|---|
| 217 |
<dd>Date and DateTime implementation by Todayoshi Funaba. |
|---|
| 218 |
Note: From ruby/1.8, this module is included in standard distribution. |
|---|
| 219 |
You don't have to install it if you are using ruby/1.8 or later.</dd> |
|---|
| 220 |
|
|---|
| 221 |
<dt class="path"><a href="http://www.ruby-lang.org/raa/list.rhtml?name=devel-logger">[RAA:devel-logger]</a> (1.0.1)</dt> |
|---|
| 222 |
<dd>Logging utility by NaHi.</dd> |
|---|
| 223 |
|
|---|
| 224 |
<dt class="path"><a href="http://www.ruby-lang.org/raa/list.rhtml?name=http-access2">[RAA:http-access2]</a> (version j)</dt> |
|---|
| 225 |
<dd>Yet another HTTP client implementation by NaHi.</dd> |
|---|
| 226 |
|
|---|
| 227 |
<dt class="path"><a href="http://www.ruby-lang.org/raa/list.rhtml?name=Uconv">[RAA:Uconv]</a> (optional) (0.4.10)</dt> |
|---|
| 228 |
<dd>by Yoshida Masato. |
|---|
| 229 |
It is requred when you want automatic CES conversion between |
|---|
| 230 |
SJIS <-> UTF8 and EUC <-> UTF8. |
|---|
| 231 |
Note: SJIS <-> EUC uses NKF module which is in standard distribution. |
|---|
| 232 |
I will support Iconv for more conversion set. |
|---|
| 233 |
</dd> |
|---|
| 234 |
|
|---|
| 235 |
</dl> |
|---|
| 236 |
|
|---|
| 237 |
<h2 id="samples" name="samples">6. Samples</h2> |
|---|
| 238 |
|
|---|
| 239 |
<p> |
|---|
| 240 |
Samples are in sample/ directory of distribution. |
|---|
| 241 |
Some samples try to connect to public servers. |
|---|
| 242 |
Set environment variable HTTP_PROXY if you are in a firewall and you have |
|---|
| 243 |
http proxy to the internet like; |
|---|
| 244 |
</p> |
|---|
| 245 |
<pre class="path"> |
|---|
| 246 |
$ export HTTP_PROXY=http://myproxyserver:8080 |
|---|
| 247 |
or |
|---|
| 248 |
$ setenv HTTP_PROXY http://myproxyserver:8080 |
|---|
| 249 |
</pre> |
|---|
| 250 |
|
|---|
| 251 |
<dl> |
|---|
| 252 |
<dt class="path">babelfish.rb</dt> |
|---|
| 253 |
<dd>A client for |
|---|
| 254 |
<a href="http://www.xmethods.com/ve2/ViewListing.po?serviceid=14">BabelFish</a> |
|---|
| 255 |
which namespace URI is 'urn:xmethodsBabelFish'. |
|---|
| 256 |
<pre class="path"> |
|---|
| 257 |
$ ./babelfish.rb "Text to translate" [ translation pattern like 'en_fr' ] |
|---|
| 258 |
</pre> |
|---|
| 259 |
</dd> |
|---|
| 260 |
|
|---|
| 261 |
<dt class="path">whois.rb</dt> |
|---|
| 262 |
<dd>A client for |
|---|
| 263 |
<a href="http://www.xmethods.com/ve2/ViewListing.po?serviceid=34">SQLData's WHOIS</a> |
|---|
| 264 |
which namespace URI is 'http://www.SoapClient.com/xml/SQLDataSoap.xsd'. |
|---|
| 265 |
<pre class="path"> |
|---|
| 266 |
$ ./whois.rb ruby-lang.org |
|---|
| 267 |
</pre> |
|---|
| 268 |
CAUTION: This WhoIs server does not handle non-ascii characters correctly. |
|---|
| 269 |
Querying domain which entry contains Japanese or so will hang. Gee. |
|---|
| 270 |
</dd> |
|---|
| 271 |
|
|---|
| 272 |
<dt class="path">digraph.rb</dt> |
|---|
| 273 |
<dd>A sample of SOAP marshalling/unmarshalling. |
|---|
| 274 |
It creates a digraph that contains multi-ref-ed nodes at first |
|---|
| 275 |
and marshals this object to get serialized XML instance. |
|---|
| 276 |
Then reads and unmarshals this XML instance to recover a object |
|---|
| 277 |
which has the same links among nodes in the digraph. |
|---|
| 278 |
</dd> |
|---|
| 279 |
|
|---|
| 280 |
<dt class="path">apacheClient.rb</dt> |
|---|
| 281 |
<dd>SOAP-RPC client sample which connects with demonstration server; |
|---|
| 282 |
stockquote and addressbook in Apache-SOAP. |
|---|
| 283 |
You have to install Apache-SOAP and deploy demostration programs.<br /> |
|---|
| 284 |
To execute; |
|---|
| 285 |
<pre class="path"> |
|---|
| 286 |
$ ./apacheClient.rb http://localhsot:2020/xml-soap/rpcrouter/rpcrouter.jsp |
|---|
| 287 |
</pre> |
|---|
| 288 |
</dd> |
|---|
| 289 |
|
|---|
| 290 |
<dt class="path">GoogleSearch/</dt> |
|---|
| 291 |
<dd>A sample client to search with <a href="http://www.google.com/apis/">Google Web API</a> using WSDL. |
|---|
| 292 |
You need to get a developer's key to use it. |
|---|
| 293 |
See wsdlDriver.rb. |
|---|
| 294 |
</dd> |
|---|
| 295 |
|
|---|
| 296 |
<dt class="path">Amazon/</dt> |
|---|
| 297 |
<dd>A sample client to connect with <a href="http://associates.amazon.com/exec/panama/associates/ntg/browse/-/1067662/086-5207681-4585409">AmazonWebServices</a> using WSDL. |
|---|
| 298 |
You need to get a developer's token to use it. |
|---|
| 299 |
See wsdlDriver.rb. |
|---|
| 300 |
</dd> |
|---|
| 301 |
|
|---|
| 302 |
<dt class="path">Calc/</dt> |
|---|
| 303 |
<dd>Calc service contains 2 servers and 2 clients. |
|---|
| 304 |
calc.rb is hosted by server.rb, calc2.rb is hosted by server2.rb. |
|---|
| 305 |
client.rb is for server.rb, client2.rb is for server2.rb. |
|---|
| 306 |
<dl> |
|---|
| 307 |
<dt>calc.rb</dt> |
|---|
| 308 |
<dd>Calc server definition using module and module methods. |
|---|
| 309 |
This module responds 'add', 'sub', 'multi' and 'div'.</dd> |
|---|
| 310 |
<dt>server.rb</dt> |
|---|
| 311 |
<dd>Standalone server. |
|---|
| 312 |
It requires calc.rb and serve module methods of this module. |
|---|
| 313 |
To run this server; |
|---|
| 314 |
<pre class="path"> |
|---|
| 315 |
$ ./server.rb |
|---|
| 316 |
</pre> |
|---|
| 317 |
</dd> |
|---|
| 318 |
<dt>server.cgi</dt> |
|---|
| 319 |
<dd>CGI version. |
|---|
| 320 |
To run this server, copy server.cgi and calc.rb to suitable directory |
|---|
| 321 |
of your WWW server. |
|---|
| 322 |
</dd> |
|---|
| 323 |
<dt>client.rb</dt> |
|---|
| 324 |
<dd>It connects to server.rb or server.cgi, |
|---|
| 325 |
and hit methods served by calc.rb. |
|---|
| 326 |
To run the client; |
|---|
| 327 |
<pre class="path"> |
|---|
| 328 |
$ ./client.rb |
|---|
| 329 |
</pre> |
|---|
| 330 |
Is it stacked? Did you run the server.rb?<br/> |
|---|
| 331 |
Turn logger and wireDumpDev in its source on to see logs and wire dumps of |
|---|
| 332 |
SOAP transport.</dd> |
|---|
| 333 |
|
|---|
| 334 |
<dt>calc2.rb</dt> |
|---|
| 335 |
<dd>Calc server definition using class and instance methods. |
|---|
| 336 |
An instance of this class holds its value. Methods 'set' and 'get' is to |
|---|
| 337 |
set/get the value. |
|---|
| 338 |
It also responds to '+', '-', '*', and '/'. |
|---|
| 339 |
</dd> |
|---|
| 340 |
<dt>server2.rb</dt> |
|---|
| 341 |
<dd>It requires calc2.rb and creates an instance of CalcService2 |
|---|
| 342 |
that responds all SOAP requests. |
|---|
| 343 |
Since '+', '-' and so on of calc2.rb are not valid name as an element |
|---|
| 344 |
in XML instance, |
|---|
| 345 |
this sample register the method '+' as 'add', '-' as 'sub', and so on. |
|---|
| 346 |
</dd> |
|---|
| 347 |
<dt>server2.cgi</dt> |
|---|
| 348 |
<dd>CGI version. |
|---|
| 349 |
To run this server, copy server2.cgi and calc2.rb to suitable directory |
|---|
| 350 |
of your WWW server. |
|---|
| 351 |
</dd> |
|---|
| 352 |
<dt>client2.rb</dt> |
|---|
| 353 |
<dd>It connects to server2.rb or server2.cgi. |
|---|
| 354 |
Set a value at first and call methods like 'puts objAtServer + 2'.</dd> |
|---|
| 355 |
</dl> |
|---|
| 356 |
</dd> |
|---|
| 357 |
|
|---|
| 358 |
<dt class="path">Exchange/</dt> |
|---|
| 359 |
<dd>A sample to retrieve the currency rate from public SOAP service.</dd> |
|---|
| 360 |
<dl> |
|---|
| 361 |
<dt>iExchange.rb</dt> |
|---|
| 362 |
<dd>It includes common definitions for client and server of |
|---|
| 363 |
Exchange service. |
|---|
| 364 |
Including only a definition of namespace URI of this service.</dd> |
|---|
| 365 |
<dt>exchange.rb</dt> |
|---|
| 366 |
<dd>Definition of servant class ExchangeService which returns the currency rate |
|---|
| 367 |
after connecting to another site by SOAP to get the real rate. |
|---|
| 368 |
So that this class is the SOAP server for local client and |
|---|
| 369 |
is also a SOAP client for public server. |
|---|
| 370 |
An instance of this class is hosted by server.rb. |
|---|
| 371 |
The instance responds to only 'getRate' which receives two country code |
|---|
| 372 |
such as 'USA' and 'Japan'.</dd> |
|---|
| 373 |
<dt>server.rb</dt> |
|---|
| 374 |
<dd>It requires exchange.rb and creates an instance of ExchangeService |
|---|
| 375 |
that responds all SOAP requests. |
|---|
| 376 |
To run this server; |
|---|
| 377 |
<pre class="path"> |
|---|
| 378 |
$ ./server.rb |
|---|
| 379 |
</pre> |
|---|
| 380 |
</dd> |
|---|
| 381 |
<dt>server.cgi</dt> |
|---|
| 382 |
<dd>CGI version. |
|---|
| 383 |
To run this server, copy server.cgi and exchange.rb to suitable directory |
|---|
| 384 |
of your WWW server. |
|---|
| 385 |
</dd> |
|---|
| 386 |
<dt>client.rb</dt> |
|---|
| 387 |
<dd>It connects to server.rb. |
|---|
| 388 |
Turn logger and wireDumpDev in its source on to see logs and wire dumps of |
|---|
| 389 |
SOAP transport. |
|---|
| 390 |
To run the client; |
|---|
| 391 |
<pre class="path"> |
|---|
| 392 |
$ ./client.rb |
|---|
| 393 |
</pre> |
|---|
| 394 |
</dd> |
|---|
| 395 |
</dl> |
|---|
| 396 |
</dd> |
|---|
| 397 |
|
|---|
| 398 |
<dt class="path">SampleStruct/</dt> |
|---|
| 399 |
<dd>A sample to transmit complex structured object which has recursive |
|---|
| 400 |
object reference. |
|---|
| 401 |
<dl> |
|---|
| 402 |
<dt>iSampleStruct.rb</dt> |
|---|
| 403 |
<dd>It includes common definitions for client and server of |
|---|
| 404 |
SampleStruct service. |
|---|
| 405 |
Definition of SampleStruct class and namespace URI of this service.</dd> |
|---|
| 406 |
<dt>sampleStruct.rb</dt> |
|---|
| 407 |
<dd>Definition of servant class SampleStructService. |
|---|
| 408 |
An instance of this class is hosted by server.rb. |
|---|
| 409 |
The instance responds to only 'hi' which receives a SampleStruct and wraps |
|---|
| 410 |
it in the new instance of SampleStruct to return .</dd> |
|---|
| 411 |
<dt>server.rb</dt> |
|---|
| 412 |
<dd>It requires sampleStruct.rb and creates an instance of SampleStructService |
|---|
| 413 |
that responds all SOAP requests. |
|---|
| 414 |
To run this server; |
|---|
| 415 |
<pre class="path"> |
|---|
| 416 |
$ ./server.rb |
|---|
| 417 |
</pre> |
|---|
| 418 |
</dd> |
|---|
| 419 |
<dt>server.cgi</dt> |
|---|
| 420 |
<dd>CGI version. |
|---|
| 421 |
To run this server, copy server.cgi and sampleStruct.rb to suitable directory |
|---|
| 422 |
of your WWW server. |
|---|
| 423 |
</dd> |
|---|
| 424 |
<dt>client.rb</dt> |
|---|
| 425 |
<dd>It connects to server.rb. |
|---|
| 426 |
Turn logger and wireDumpDev in its source on to see logs and wire dumps of |
|---|
| 427 |
SOAP transport. |
|---|
| 428 |
To run the client; |
|---|
| 429 |
<pre class="path"> |
|---|
| 430 |
$ ./client.rb |
|---|
| 431 |
</pre> |
|---|
| 432 |
</dd> |
|---|
| 433 |
</dl> |
|---|
| 434 |
</dd> |
|---|
| 435 |
|
|---|
| 436 |
<dt class="path">RAA/</dt> |
|---|
| 437 |
<dd>SOAP-RPC client samples. |
|---|
| 438 |
These programs connect to RAA SOAP Interface on www.ruby-lang.org. |
|---|
| 439 |
<ul> |
|---|
| 440 |
<li>soap4r.rb: Ruby program using SOAP4R</li> |
|---|
| 441 |
<li>xmlrpc4r.rb: Ruby program using xmlrpc4r</li> |
|---|
| 442 |
<li>pocketSOAP.js: JScript program using pocketSOAP</li> |
|---|
| 443 |
<li>SOAP::Lite.pl: Perl program using SOAP::Lite for Perl</li> |
|---|
| 444 |
</ul> |
|---|
| 445 |
Since the server is (still) under testing phase so stable operation is not expected.</dd> |
|---|
| 446 |
|
|---|
| 447 |
<dt class="path">webrick/</dt> |
|---|
| 448 |
<dd>SOAP-RPC server samples which runs with WEBrick. |
|---|
| 449 |
<ul> |
|---|
| 450 |
<li>httpd.rb: HTTP server which soaplet.rb mounts to. |
|---|
| 451 |
It is powered by WEBrick so you must install |
|---|
| 452 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=webrick">[RAA:WEBrick]</a> |
|---|
| 453 |
to run it.</li> |
|---|
| 454 |
<li>soaplet.rb: A bricklet to add a SOAP function to WEBrick. |
|---|
| 455 |
It hosts exchange.rb, sampleStruct.rb below, and it is mounted to httpd.rb |
|---|
| 456 |
to serve ExchangeService and SampleStructService.</li> |
|---|
| 457 |
<li>ExchangeService |
|---|
| 458 |
<dl> |
|---|
| 459 |
<dt>exchange.rb</dt> |
|---|
| 460 |
<dd>A server class definition which returns the currency rate |
|---|
| 461 |
after connecting to another site by SOAP to get the real rate. |
|---|
| 462 |
An instance of this class is instanciated in httpd.rb and this instance |
|---|
| 463 |
respond to each HTTP request.</dd> |
|---|
| 464 |
<dt>exchangeClient.rb</dt> |
|---|
| 465 |
<dd>A client to connect soaplet.rb via SOAP/HTTP to call exchange.rb.</dd> |
|---|
| 466 |
<dt>iExchange.rb</dt> |
|---|
| 467 |
<dd>Common class(type) definitions for server and client.</dd> |
|---|
| 468 |
</dl> |
|---|
| 469 |
</li> |
|---|
| 470 |
|
|---|
| 471 |
<li>SampleStructService |
|---|
| 472 |
<dl> |
|---|
| 473 |
<dt>sampleStruct.rb</dt> |
|---|
| 474 |
<dd>A server class definition which wraps a given struct |
|---|
| 475 |
and returns it. |
|---|
| 476 |
An instance of this class is instanciated in httpd.rb and this instance |
|---|
| 477 |
respond to each HTTP request.</dd> |
|---|
| 478 |
<dt>sampleStructClient.rb</dt> |
|---|
| 479 |
<dd>A client to connect soaplet.rb via SOAP/HTTP to call sampleStruct.rb</dd> |
|---|
| 480 |
<dt>iSampleStruct.rb</dt> |
|---|
| 481 |
<dd>Common class(type) definitions for server and client.</dd> |
|---|
| 482 |
</dl></li> |
|---|
| 483 |
</ul> |
|---|
| 484 |
Run the server; |
|---|
| 485 |
<pre class="path"> |
|---|
| 486 |
$ ruby httpd.rb |
|---|
| 487 |
</pre> |
|---|
| 488 |
Then, run clients; |
|---|
| 489 |
<pre class="path"> |
|---|
| 490 |
$ ruby sampleStruct.rb |
|---|
| 491 |
$ ruby exchangeClient.rb |
|---|
| 492 |
</pre> |
|---|
| 493 |
Set 'logger' and 'wireDumpDev' in clients to see log and wiredumps of SOAP. |
|---|
| 494 |
</dd> |
|---|
| 495 |
|
|---|
| 496 |
<dt class="path">ICD</dt> |
|---|
| 497 |
<dd>A client for |
|---|
| 498 |
<a href="http://www.iwebmethod.net/">Insider's Computer Dictionary Web Service</a>. |
|---|
| 499 |
This service is implemented with ASP.NET so that it's also a sample of |
|---|
| 500 |
a client which connects to ASP.NET. |
|---|
| 501 |
CAUTION: this sample contains non-ascii chars in its source and dumped results. |
|---|
| 502 |
<dl> |
|---|
| 503 |
<dt>IICD.rb</dt> |
|---|
| 504 |
<dd>Class(type) definitions for this server.</dd> |
|---|
| 505 |
<dt>icd.rb</dt> |
|---|
| 506 |
<dd>Client implementation. To run the client; |
|---|
| 507 |
<pre class="path"> |
|---|
| 508 |
$ ./icd.rb |
|---|
| 509 |
</pre> |
|---|
| 510 |
</dd> |
|---|
| 511 |
</dl> |
|---|
| 512 |
</dd> |
|---|
| 513 |
|
|---|
| 514 |
<dt class="path">WSDemo</dt> |
|---|
| 515 |
<dd>A sample of messaging client. Server side sample does not exist now...</dd> |
|---|
| 516 |
|
|---|
| 517 |
<dt class="path">RWiki</dt> |
|---|
| 518 |
<dd>A sample CGI server which receives a request via SOAP and dispatches it |
|---|
| 519 |
to RWiki server via dRuby. Naive SOAP/dRuby bridge implementation.</dd> |
|---|
| 520 |
|
|---|
| 521 |
</dl> |
|---|
| 522 |
|
|---|
| 523 |
<h2 id="restrictions" name="restrictions">7. Restrictions</h2> |
|---|
| 524 |
|
|---|
| 525 |
<p> |
|---|
| 526 |
The following features of the |
|---|
| 527 |
<a href="http://www.w3.org/TR/SOAP/">SOAP 1.1 (W3C Note)</a> |
|---|
| 528 |
spec are <strong>NOT</strong> currently supported: |
|---|
| 529 |
</p> |
|---|
| 530 |
|
|---|
| 531 |
<ul> |
|---|
| 532 |
<li style="margin-top: 2ex;">SOAP Envelope |
|---|
| 533 |
<ul> |
|---|
| 534 |
<li>SOAP actor attribute</li> |
|---|
| 535 |
<li>SOAP mustUnderstand attribute</li> |
|---|
| 536 |
<li>SOAP Fault Codes</li> |
|---|
| 537 |
</ul></li> |
|---|
| 538 |
<li style="margin-top: 2ex;">SOAP Encoding |
|---|
| 539 |
<ul> |
|---|
| 540 |
<li>Decoding using XML Schema</li> |
|---|
| 541 |
</ul></li> |
|---|
| 542 |
<li style="margin-top: 2ex;">Othres |
|---|
| 543 |
<ul> |
|---|
| 544 |
<li>Transport binding except HTTP server and client</li> |
|---|
| 545 |
</ul></li> |
|---|
| 546 |
</ul> |
|---|
| 547 |
|
|---|
| 548 |
<h2 id="resources" name="resources">8. Resources</h2> |
|---|
| 549 |
|
|---|
| 550 |
<dl> |
|---|
| 551 |
<dt class="path"><a href="http://www.ruby-lang.org/raa/list.rhtml?name=soap4r">[RAA:soap4r]</a></dt> |
|---|
| 552 |
<dd>I will post a new release to RAA. |
|---|
| 553 |
Check RAA to get a new stable (I hope) version.</dd> |
|---|
| 554 |
|
|---|
| 555 |
<dt class="path"><a href="http://www.ruby-lang.org/~knu/cgi-bin/cvsweb.cgi/lib/soap4r/">CVS</a></dt> |
|---|
| 556 |
<dd>There is the SOAP4R CVS repository in cvs.ruby-lang.org. |
|---|
| 557 |
(Thanks to knu, the maintainer of cvs.ruby-lang.org.) |
|---|
| 558 |
Check here to get most recent (but could be unstable) version.</dd> |
|---|
| 559 |
|
|---|
| 560 |
<dt class="path"><a href="http://www.jin.gr.jp/~nahi/Ruby/SOAP4R/wiki.cgi">SOAP4R Wiki</a></dt> |
|---|
| 561 |
<dd>There is a wiki for SOAP4R, running under |
|---|
| 562 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=rwiki">[RAA:RWiki]</a>. |
|---|
| 563 |
Feel free to add your comment there. |
|---|
| 564 |
Any comments are welcomed. (as always)</dd> |
|---|
| 565 |
|
|---|
| 566 |
<dt class="path"><a href="http://www.jin.gr.jp/~nahi/Ruby/SOAP4R/wiki.cgi?cmd=view;name=InteropResults">InteropResults</a></dt> |
|---|
| 567 |
<dd>Test results of <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab "Round 2"</a>.</dd> |
|---|
| 568 |
|
|---|
| 569 |
</dl> |
|---|
| 570 |
|
|---|
| 571 |
<h2 id="history" name="history">9. History</h2> |
|---|
| 572 |
|
|---|
| 573 |
<dl> |
|---|
| 574 |
<dt>1.4.8 - January 17, 2002</dt> |
|---|
| 575 |
<dd> |
|---|
| 576 |
This version has these enhancements and bug fixes; |
|---|
| 577 |
<ul> |
|---|
| 578 |
<li>Avoid warnings; |
|---|
| 579 |
<ul> |
|---|
| 580 |
<li>Use Object#class instead of Object#type.</li> |
|---|
| 581 |
<li>Avoid implicit use a String as a regexp source.</li> |
|---|
| 582 |
</ul></li> |
|---|
| 583 |
<li>Add wsdlDriver which reads WSDL file and allow client to call procedures. Here is an example to search Google. |
|---|
| 584 |
<pre> |
|---|
| 585 |
require 'soap/wsdlDriver' |
|---|
| 586 |
searchWord = ARGV.shift |
|---|
| 587 |
# You must get key from http://www.google.com/apis/ to use Google Web APIs. |
|---|
| 588 |
key = File.open(File.expand_path("~/.google_key")).read.chomp |
|---|
| 589 |
GOOGLE_WSDL = 'http://api.google.com/GoogleSearch.wsdl' |
|---|
| 590 |
# Load WSDL and create driver. |
|---|
| 591 |
google = SOAP::WSDLDriverFactory.new(GOOGLE_WSDL).createDriver |
|---|
| 592 |
# Just invoke! |
|---|
| 593 |
result = google.doGoogleSearch(key, searchWord, 0, 10, false, "", false, "", 'utf-8', 'utf-8') |
|---|
| 594 |
result.resultElements.each do |ele| |
|---|
| 595 |
puts "== #{ele.title}: #{ele.URL}" |
|---|
| 596 |
puts ele.snippet |
|---|
| 597 |
puts |
|---|
| 598 |
end |
|---|
| 599 |
</pre></li> |
|---|
| 600 |
<li>WSDLDriver client examples of AmazonWebServices, RAA and RNN (Japanese Ruby blog site) are also included in sample/ dir.</li> |
|---|
| 601 |
<li>Support xmlscan XML processor.</li> |
|---|
| 602 |
<li>Changed XML processor detection scheme. Search xmlscan, REXML, XMLParser and NQXML in this order.</li> |
|---|
| 603 |
<li>Rewrite charset handling of XML processor. |
|---|
| 604 |
<ul> |
|---|
| 605 |
<li>If you only use us-ascii and utf-8, all XML processors should work without uconv module.</li> |
|---|
| 606 |
<li>With xmlscan/0.2 or later, you can handle euc-jp or shift_jis encoded XML instance WITHOUT uconv module.</li> |
|---|
| 607 |
<li>With other XML processors includes xmlscan/0.1, you need to install uconv module to handle euc-jp or shift_jis encoded XML instance.</li> |
|---|
| 608 |
</ul></li> |
|---|
| 609 |
<li>cgistub.rb: Overridable response mediatype. There exists a http client which does not accept the mediatype text/xml which is specified in SOAP spec. For example, an i-Mode (smart phone) client does not accept it... You can set response mediatype to 'text/plain' for such client though it violates SOAP spec...</li> |
|---|
| 610 |
<li>wsdl2ruby: Add --force option to override existing file.</li> |
|---|
| 611 |
<li>Fixed many bugs.</li> |
|---|
| 612 |
</ul></dd> |
|---|
| 613 |
|
|---|
| 614 |
<dt>1.4.7 - September 20, 2002</dt> |
|---|
| 615 |
<dd> |
|---|
| 616 |
This version has these enhancements and bug fixes; |
|---|
| 617 |
<ul> |
|---|
| 618 |
<li>Includes WSDL4R initial release. |
|---|
| 619 |
<ul> |
|---|
| 620 |
<li>Bare in mind this is an alpha level code. |
|---|
| 621 |
I wrote it halfway at half and a year ago, |
|---|
| 622 |
and wrote the rest part in half and a day. |
|---|
| 623 |
No comprehensive test, no strict syntax check, unfriendly error message, etc. |
|---|
| 624 |
Try it if you want, and find bugs in it.</li> |
|---|
| 625 |
<li>WSDL4R can run under XMLParser for now. |
|---|
| 626 |
You might be able to let it run under NQXML/REXML if you know SAX |
|---|
| 627 |
programming well. How XML processor is used under WSDL4R |
|---|
| 628 |
is as same as under SOAP4R.</li> |
|---|
| 629 |
</ul></li> |
|---|
| 630 |
<li>Added xsd:short support.</li> |
|---|
| 631 |
<li>::Float(double precision float in Ruby) is mapped to xsd:double now. |
|---|
| 632 |
It was mapped to xsd:float.</li> |
|---|
| 633 |
<li>Fixed a bug of year < 0 handling. B.C. 1 => -0001 in XMLSchema.</li> |
|---|
| 634 |
<li>Fixed a bug of exception serialization. Custam mappingRegistry was not used.</li> |
|---|
| 635 |
<li>Fixed a bug of regex for MediaType parsing.</li> |
|---|
| 636 |
</ul> |
|---|
| 637 |
</dd> |
|---|
| 638 |
|
|---|
| 639 |
<dt>1.4.5 - May 25, 2002</dt> |
|---|
| 640 |
<dd> |
|---|
| 641 |
This version has these enhancements; |
|---|
| 642 |
<ul> |
|---|
| 643 |
<li>Supports all primitive datatypes of XML Schema Part2 Datatypes except NOTATION. |
|---|
| 644 |
Added types are Duration, gYearMonth, anyURI, QName and so on.</li> |
|---|
| 645 |
<li>Runs much faster than earlier versions. |
|---|
| 646 |
Some performance check and tuning has been done.</li> |
|---|
| 647 |
<li>Supports all Ruby objects marshalling/unmarshalling |
|---|
| 648 |
except some special objects. See below for more detail.</li> |
|---|
| 649 |
</ul> |
|---|
| 650 |
|
|---|
| 651 |
CAUTION: This version requires |
|---|
| 652 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=date2">[RAA:date2]</a> version 3.2 or later and |
|---|
| 653 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=http-access2">[RAA:http-access2]</a> version F. |
|---|
| 654 |
Please make sure the versions you use. |
|---|
| 655 |
<br/><br/> |
|---|
| 656 |
|
|---|
| 657 |
Here is detail of change. |
|---|
| 658 |
<dl> |
|---|
| 659 |
<dt>Datatypes (XMLSchemaDatatypes.rb and baseData.rb)</dt> |
|---|
| 660 |
<dd> |
|---|
| 661 |
<ul> |
|---|
| 662 |
<li>Added duration, gYearMonth, gYear, gMonthDay, gDay, gMonth, anyURI and QName datetypes. |
|---|
| 663 |
All primitive datatypes in XML Schema Part 2 section 3.2 except NOTAION are supported now.</li> |
|---|
| 664 |
<li>Modified XSDDataTime, XSDDate and XSDTime implementation. These use a DataTime as a data holder.</li> |
|---|
| 665 |
<li>Follow date/3.2: date2.rb -> date.rb.</li> |
|---|
| 666 |
<li>Changed to_s representations of single float and double float. Thanks to gotoken.</li> |
|---|
| 667 |
<li>XSDFloat: Add '0' if given str ends with 'E'. Float( "-1.4E" ) might fail on some system.</li> |
|---|
| 668 |
<li>Added SOAPRawString class. Given string is embedded into XML instance directly. |
|---|
| 669 |
You can use this class to embed (numeric) character references manually.</li> |
|---|
| 670 |
<li>Fixed UTF8 regexp bug. XSDString uses this regexp to check a given string.</li> |
|---|
| 671 |
<li>Added UT for XMLSchemaDatatypes.rb. See test/xsd_ut.rb and test/baseData_ut.rb.</li> |
|---|
| 672 |
</ul></dd> |
|---|
| 673 |
|
|---|
| 674 |
<dt>SOAP <-> Ruby object mapping (mappingRegistry.rb and rpcUtils.rb)</dt> |
|---|
| 675 |
<dd> |
|---|
| 676 |
<ul> |
|---|
| 677 |
<li>Exception raised from server side could not be mapped to specific exception. Fixed.</li> |
|---|
| 678 |
<li>Refactoring to avoid *_eval. Reduced warnings.</li> |
|---|
| 679 |
<li>Added Range marshalling support.</li> |
|---|
| 680 |
<li>Regexp#options support under ruby/1.6.</li> |
|---|
| 681 |
<li>Supports cyclic Range such as; |
|---|
| 682 |
<pre> |
|---|
| 683 |
class Foo |
|---|
| 684 |
attr_accessor :foo |
|---|
| 685 |
def succ; end |
|---|
| 686 |
def <=>( rhs ); end |
|---|
| 687 |
end |
|---|
| 688 |
|
|---|
| 689 |
o1 = Foo.new |
|---|
| 690 |
o2 = Foo.new |
|---|
| 691 |
r = o1..o2 |
|---|
| 692 |
o1.foo = r |
|---|
| 693 |
|
|---|
| 694 |
p SOAPMarshal.load( SOAPMarshal.dump( r )) |
|---|
| 695 |
</pre></li> |
|---|
| 696 |
<li>Supports some instance variable of ruby standard class. |
|---|
| 697 |
But instance variable of Array, Hash, String, Float and Bignum are not supported because of restriction of SOAP encoding format...</li> |
|---|
| 698 |
<li>Alias ::SOAPMarshal to ::SOAP::Marshal.</li> |
|---|
| 699 |
<li>Added Marshal.load and Marshal.dump as aliases to Marshal.unmarshal and |
|---|
| 700 |
Marshal.unmarshal.</li> |
|---|
| 701 |
</ul></dd> |
|---|
| 702 |
|
|---|
| 703 |
<dt>misc</dt> |
|---|
| 704 |
<dd> |
|---|
| 705 |
<ul> |
|---|
| 706 |
<li>Dumps what parser is used when $DEBUG. Try 'ruby -d -rsoap/processor -e 0'</li> |
|---|
| 707 |
<li>Added CGI samples in sample/.</li> |
|---|
| 708 |
<li>Some performance check and tuning has been done on both client and server side. |
|---|
| 709 |
One bottle neck is Kernel.methods which SOAP4R use(d) while mapping SOAP Data Model <-> Ruby object. |
|---|
| 710 |
I replaced it with Object.respond_to? . |
|---|
| 711 |
Another bottle neck of client side is delegate.rb which is used by http-access2. |
|---|
| 712 |
Get <a href="http://www.ruby-lang.org/raa/list.rhtml?name=http-access2">[RAA:http-access2]</a> version F. |
|---|
| 713 |
</ul> |
|---|
| 714 |
</dd> |
|---|
| 715 |
</dl> |
|---|
| 716 |
</dd> |
|---|
| 717 |
|
|---|
| 718 |
<dt>1.4.4 - May 6, 2002</dt> |
|---|
| 719 |
<dd> |
|---|
| 720 |
This is a bug fix release. |
|---|
| 721 |
Following users should update. |
|---|
| 722 |
<ul> |
|---|
| 723 |
<li>Users who use DateTime datatype.</li> |
|---|
| 724 |
<li>Developers of SOAP client/server which works under multi-thread condition.</li> |
|---|
| 725 |
<li>REXML users.</li> |
|---|
| 726 |
</ul> |
|---|
| 727 |
Fixed bugs. |
|---|
| 728 |
<ul> |
|---|
| 729 |
<li>XSDDataTime: Changed variable name usec to sec_frac. It's not a micro sec so name usec is misleading.</li> |
|---|
| 730 |
<li>XSDTime: Fixed bugs in usec part.</li> |
|---|
| 731 |
<li>date.rb in standard library and date2 version 3 conflicts because date2.rb is a successor of date.rb and not designed for dual use. |
|---|
| 732 |
(ex. using a module which requires date.rb like DBI and another module which requires date2.rb). |
|---|
| 733 |
Added a workaround for this.</li> |
|---|
| 734 |
<li>SOAP::Processor was not MT-safe. Fixed. |
|---|
| 735 |
Projected feature regards to MT are follows. |
|---|
| 736 |
At least I hope so. Tell me if you find these wrong. |
|---|
| 737 |
<ul> |
|---|
| 738 |
<li>Driver: safe</li> |
|---|
| 739 |
<li>Proxy: safe</li> |
|---|
| 740 |
<li>Server: safe</li> |
|---|
| 741 |
<li>CGIStub: safe</li> |
|---|
| 742 |
<li>StandaloneServer: safe</li> |
|---|
| 743 |
<li>RPCRouter: safe</li> |
|---|
| 744 |
<li>StreamHandler: safe</li> |
|---|
| 745 |
<li>Processor: safe</li> |
|---|
| 746 |
<li>SOAPParser: unsafe</li> |
|---|
| 747 |
<li>SOAPGenerator: unsafe</li> |
|---|
| 748 |
<li>EncodingStyleHandler: unsafe</li> |
|---|
| 749 |
</ul> |
|---|
| 750 |
</li> |
|---|
| 751 |
<li>SOAP4R/1.4.3 supports REXML/2.1.3 but it did not detect REXML processor automatically.</li> |
|---|
| 752 |
</ul> |
|---|
| 753 |
</dd> |
|---|
| 754 |
|
|---|
| 755 |
<dt>1.4.3 - April 11, 2002</dt> |
|---|
| 756 |
|
|---|
| 757 |
<dd> |
|---|
| 758 |
<dl> |
|---|
| 759 |
<dt>Attention to 1.4.2 or earlier users;</dt> |
|---|
| 760 |
<dd> |
|---|
| 761 |
<ul> |
|---|
| 762 |
<li>Stopped redistributing packages in RAA from this release. |
|---|
| 763 |
Please get <a href="#dependencies">required</a> packages from |
|---|
| 764 |
<a href="http://www.ruby-lang.org/raa/">RAA</a> |
|---|
| 765 |
and install it.</li> |
|---|
| 766 |
<li>It still does NOT support WSDL!</li> |
|---|
| 767 |
</ul> |
|---|
| 768 |
</dd> |
|---|
| 769 |
|
|---|
| 770 |
<dt>New features</dt> |
|---|
| 771 |
<dd> |
|---|
| 772 |
<ul> |
|---|
| 773 |
<li>Added REXML parser support.</li> |
|---|
| 774 |
<li>Added uninstaller.</li> |
|---|
| 775 |
<li>Re: samples |
|---|
| 776 |
<ul> |
|---|
| 777 |
<li>Added 3 new samples, Calc, Exchange, and SampleStruct.</li> |
|---|
| 778 |
<li>Use environment variable HTTP_PROXY or http_proxy for http proxy.</li> |
|---|
| 779 |
<li>Removed unreachable services.</li> |
|---|
| 780 |
<li>RAA: Separate iRAA.rb into RAA.rb and iRAA.rb.</li> |
|---|
| 781 |
<li>Added description about <a href="#samples">samples</a> to RELEASE_en.html.</li> |
|---|
| 782 |
</ul> |
|---|
| 783 |
<li>Changed String encoding handling among |
|---|
| 784 |
Ruby object <-> SOAP Data Model <-> XML instance. |
|---|
| 785 |
<ul> |
|---|
| 786 |
<li>Ruby object: $KCODE.</li> |
|---|
| 787 |
<li>SOAP Data Model: utf-8 if uconv module is installed, $KCODE if not.</li> |
|---|
| 788 |
<li>XML instance: Client side use utf-8 if uconv module is installed, |
|---|
| 789 |
$KCODE if not. Server side try to adjust the request encoding.</li> |
|---|
| 790 |
<li>Use regexp instead of NKF.guess to check if the given String is EUC/SJIS or not.</li> |
|---|
| 791 |
</ul> |
|---|
| 792 |
</li> |
|---|
| 793 |
<li>Added 'addServant' interface to server side. See sample/Calc/server.rb.</li> |
|---|
| 794 |
<li>Added 'addMethodAs' interface to both server side and client side. |
|---|
| 795 |
See sample/Calc/server2.rb.</li> |
|---|
| 796 |
</ul> |
|---|
| 797 |
</dd> |
|---|
| 798 |
|
|---|
| 799 |
<dt>Changes</dt> |
|---|
| 800 |
<dd> |
|---|
| 801 |
<ul> |
|---|
| 802 |
<li>Removed Japanese document. |
|---|
| 803 |
I was tired of maintaining 2 separated documents. |
|---|
| 804 |
Though my English is poor as you see, numbers of readers of my English document |
|---|
| 805 |
should be more than one of my Japanese document. |
|---|
| 806 |
Would you please tell me bug of my English composition and of course in the code?</li> |
|---|
| 807 |
<li>Use |
|---|
| 808 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=devel-logger">[RAA:devel-logger]</a> |
|---|
| 809 |
instead of |
|---|
| 810 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=application">[RAA:application]</a>. |
|---|
| 811 |
</li> |
|---|
| 812 |
<li>Avoided using exception in soap2obj and reduced warnings in runtime.</li> |
|---|
| 813 |
<li>XSDDateTime: Use date2 version 3 instead of date3.rb. |
|---|
| 814 |
Date2 version 3 will be included in standard distribution of Ruby/1.8.</li> |
|---|
| 815 |
<li>XSDDateTime: Added XSDDateTimeToTime module to extract a Time object from XSDDateTime, XSDDate and XSDTime.</li> |
|---|
| 816 |
</ul> |
|---|
| 817 |
</dd> |
|---|
| 818 |
|
|---|
| 819 |
<dt>Bug fixes</dt> |
|---|
| 820 |
<dd> |
|---|
| 821 |
<ul> |
|---|
| 822 |
<li>Set 'charset=' to content-type when sending back a SOAPFault. |
|---|
| 823 |
It was not set.</li> |
|---|
| 824 |
<li>XSDDateTime: Parsedate was not used. Removed.</li> |
|---|
| 825 |
<li>Added constant Log as a canonical name of Devel::Logger for backward |
|---|
| 826 |
compatibility of devel-logger.</li> |
|---|
| 827 |
<li>Foo = Struct.new(:foo) and Foo = Struct.new("Foo", :foo) could not be |
|---|
| 828 |
unmarshalled collectly. All members were unmarshalled as nil. Fixed.</li> |
|---|
| 829 |
<li>Rescue ArgumentError(Unrecognized signal) in standaloneServer.rb for mswin32 ruby.</li> |
|---|
| 830 |
</ul> |
|---|
| 831 |
</dd> |
|---|
| 832 |
</dl> |
|---|
| 833 |
</dd> |
|---|
| 834 |
|
|---|
| 835 |
<dt>1.4.2 - December 28, 2001</dt> |
|---|
| 836 |
<dd> |
|---|
| 837 |
Many changes around Ruby language mapping for SOAP. |
|---|
| 838 |
I replaced DRb's marshalling format with SOAP marshalling and it passed |
|---|
| 839 |
about all unit test packed in DRb package. |
|---|
| 840 |
Only test failed was regards to packet size. |
|---|
| 841 |
You might be able to use SOAP::Marshal.(un|)marshal for serializing objects |
|---|
| 842 |
instead of Marshal.(load|dump). |
|---|
| 843 |
|
|---|
| 844 |
<ul> |
|---|
| 845 |
<li>Illegal decoding of a position-less element after position-ed element. Fixed.</li> |
|---|
| 846 |
<li>Add Rubytype encoding/decoding support: Regexp, Class, Module and Symbol.</li> |
|---|
| 847 |
<li>Added an option of MappingRegistry to raise an exception when unknown Struct. |
|---|
| 848 |
The option is set 'false' by default so that same behaviour as before.</li> |
|---|
| 849 |
</ul></dd> |
|---|
| 850 |
|
|---|
| 851 |
<dt>1.4.1 - December 7, 2001</dt> |
|---|
| 852 |
<dd>SOAP4R/1.4 contained many bugs (as usual...) |
|---|
| 853 |
1.4.1 is a maintenance release. Some bugs are fixed. |
|---|
| 854 |
Thanks to Michael Neumann. |
|---|
| 855 |
|
|---|
| 856 |
<ul> |
|---|
| 857 |
<li>instance_eval in SOAPStruct#add for adding accessor illegaly overrode important methods for SOAP4R such as name, name= and so on. Removed this instance_eval and rewrote other codes which did depend the code. Thanks to MNeumann for reporting it and giving a suggestion to fix it.</li> |
|---|
| 858 |
<li>Fixed charset handling. Illegal charset was set when automatic XML processor detecting.</li> |
|---|
| 859 |
<li>Removed unused code(self.decode) in element.rb.</li> |
|---|
| 860 |
<li>Illegal constant access when SOAP format error. Fixed.</li> |
|---|
| 861 |
<li>LiteralEncodingNamespace moved to SOAP module.</li> |
|---|
| 862 |
</ul></dd> |
|---|
| 863 |
|
|---|
| 864 |
|
|---|
| 865 |
<dt>1.4 - December 5, 2001</dt> |
|---|
| 866 |
<dd><ul> |
|---|
| 867 |
<li>Datatypes: |
|---|
| 868 |
<ul> |
|---|
| 869 |
<li>XSDFloat: Bug in rounding double float to single float. Fixed.</li> |
|---|
| 870 |
<li>SOAPElement: Added for literal encoding.</li> |
|---|
| 871 |
<li>Removed SOAP encoding functions from baseData. EncondingStyleHandler should decide how to encode SOAP data model. (ie. ASP.NET seems to have its own encoding style.)</li> |
|---|
| 872 |
<li>SOAPHeaderItem: Changed interface for easy use.</li> |
|---|
| 873 |
</ul></li> |
|---|
| 874 |
|
|---|
| 875 |
<li>SOAP Encoding: |
|---|
| 876 |
<ul> |
|---|
| 877 |
<li>Encoding by itself, not using NQXML's tree object model.</li> |
|---|
| 878 |
<li>At last, supported multi-ref encoding!</li> |
|---|
| 879 |
<li>marshal.rb: Marshalling with Envelope and Body. To marshal multi-ref'd object, Body is needed. CAUTION: Not compatible between former implementation.</li> |
|---|
| 880 |
<li>Add EncodingStyleHandlerLiteral and set it to default.</li> |
|---|
| 881 |
<li>Renamed encoding.rb to encodingStyleHandler.rb.</li> |
|---|
| 882 |
<li>Added ASP.NET encoding handler. ASP.NET seems to use literal encoding (by default) but it is easier with this encodingStyleHandler to access the service which is built with ASP.NET.</li> |
|---|
| 883 |
<li>Changed element name escape. |
|---|
| 884 |
<ul> |
|---|
| 885 |
<li>:: <=> \.\.</li> |
|---|
| 886 |
<li>[^a-zA-Z0-9_-] <=> \.[0-F][0-F] |
|---|
| 887 |
</ul> |
|---|
| 888 |
Limitation: Using SOAP4R's RPC function, you cannot use the name which contains '.' for method name, class/struct name, and accessor name. In Ruby world, it should not be a problem I believe.</li> |
|---|
| 889 |
</ul></li> |
|---|
| 890 |
|
|---|
| 891 |
<li>RPC related functions: |
|---|
| 892 |
<ul> |
|---|
| 893 |
<li>Driver: Added 'invoke' method for messaging.</li> |
|---|
| 894 |
<li>Driver: Content of SOAPFault detail element is set in the exception which is thrown from SOAP Node to client application.</li> |
|---|
| 895 |
<li>Processor: Changed Processor.(un|)marshal interface. An instance of NS for parsing/generating XML instance is prepared in parser/generator.</li> |
|---|
| 896 |
<li>mappingRegistry.rb is devided from rpcUtils.rb.</li> |
|---|
| 897 |
</ul></li> |
|---|
| 898 |
</ul></dd> |
|---|
| 899 |
|
|---|
| 900 |
|
|---|
| 901 |
<dt>1.3.8 - October 4, 2001</dt> |
|---|
| 902 |
<dd>Feedback from |
|---|
| 903 |
<a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab "Round 2"</a> |
|---|
| 904 |
and Michael Neumann. Thanks! |
|---|
| 905 |
|
|---|
| 906 |
<ul> |
|---|
| 907 |
<li>Datatypes: |
|---|
| 908 |
<ul> |
|---|
| 909 |
<li>XSDFloat: Creating float data from junk string such as "123.0junk" was |
|---|
| 910 |
converted to 0.0. It should be avoided. Fixed.</li> |
|---|
| 911 |
<li>XSDFloat: Fixed double -> single rounding code.</li> |
|---|
| 912 |
</ul></li> |
|---|
| 913 |
|
|---|
| 914 |
<li>RPC related functions: |
|---|
| 915 |
<ul> |
|---|
| 916 |
<li>Changed typename <=> NCName strategy. '::' <=> '.'</li> |
|---|
| 917 |
<li>Added mappingRegistry argument to interfaces for SOAP object creation.</li> |
|---|
| 918 |
</ul></li> |
|---|
| 919 |
|
|---|
| 920 |
<li>Others: |
|---|
| 921 |
<ul> |
|---|
| 922 |
<li>Set faultstring '(No faultstring)' to SOAP Fault when empty faultstring element.</li> |
|---|
| 923 |
<li>server.rb: Added mappingRegistry interface.</li> |
|---|
| 924 |
<li>marshal.rb: Create NCName from typename.</li> |
|---|
| 925 |
</ul></li> |
|---|
| 926 |
</ul></dd> |
|---|
| 927 |
|
|---|
| 928 |
|
|---|
| 929 |
<dt>1.3.7 - August 24, 2001</dt> |
|---|
| 930 |
<dd>Feedback from |
|---|
| 931 |
<a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab "Round 2"</a> |
|---|
| 932 |
and Michael Neumann. Thanks! |
|---|
| 933 |
|
|---|
| 934 |
<ul> |
|---|
| 935 |
<li>Datatypes: |
|---|
| 936 |
<ul> |
|---|
| 937 |
<li>All datatypes try to keep nil correctly.</li> |
|---|
| 938 |
<li>XSDInt/Integer/Long: to_i -> Integer() to detect format error.</li> |
|---|
| 939 |
<li>XSDDateTime, XSDDate, XSDTime: Add trailing 'Z' to indicate UTC.</li> |
|---|
| 940 |
<li>SOAPStruct: Accept untyped struct.</li> |
|---|
| 941 |
<li>Map(Hash): Let <item> untyped.</li> |
|---|
| 942 |
<li>Apache allows only 'item' in Map type.</li> |
|---|
| 943 |
</ul></li> |
|---|
| 944 |
|
|---|
| 945 |
<li>Stream handler: |
|---|
| 946 |
<ul> |
|---|
| 947 |
<li>Removed MPOST support.</li> |
|---|
| 948 |
<li>ECONNRESET was not caught. Fixed.</li> |
|---|
| 949 |
<li>Added timeout support.</li> |
|---|
| 950 |
</ul></li> |
|---|
| 951 |
|
|---|
| 952 |
<li>Others: |
|---|
| 953 |
<ul> |
|---|
| 954 |
<li>Changed using URI library: URb -> URI; following its name change.</li> |
|---|
| 955 |
<li>Added NQXML/1.1.0 support. A XMLDecl now recognized as a XMLDecl, not a PI.</li> |
|---|
| 956 |
</ul></li> |
|---|
| 957 |
</ul></dd> |
|---|
| 958 |
|
|---|
| 959 |
<dt>1.3.6 - July 27, 2001</dt> |
|---|
| 960 |
<dd>Many feedbacks from Michael Neumann. Thanks! |
|---|
| 961 |
|
|---|
| 962 |
<ul> |
|---|
| 963 |
<li>hexBinary type: Added.</li> |
|---|
| 964 |
<li>nil type: Should not be xsd:nil but xsi:nil.</li> |
|---|
| 965 |
<li>Added StandaloneServer implementation. Thanks to Michael Neumann!</li> |
|---|
| 966 |
<li>Illegal parsing of XMLDecl. Fixed.</li> |
|---|
| 967 |
<li>RPC's 'inout' param was not supported. Fixed. Thanks to Michael Neumann!</li> |
|---|
| 968 |
<li>URb::Generic#path returns '' when abs_path is empty (such as http://foo). |
|---|
| 969 |
Added checking code.</li> |
|---|
| 970 |
<li>Use http-access2 instead of original HTTP implementation. http-access2 supports HTTP/1.1's persistent connection.</li> |
|---|
| 971 |
</ul></dd> |
|---|
| 972 |
|
|---|
| 973 |
<dt>1.3.5 - July 14, 2001</dt> |
|---|
| 974 |
<dd>Many feedbacks from Michael Neumann. |
|---|
| 975 |
I much appreciate valuable comments to him. |
|---|
| 976 |
Thanks! |
|---|
| 977 |
|
|---|
| 978 |
<ul> |
|---|
| 979 |
<li>Changed using URI library: uri -> URb.</li> |
|---|
| 980 |
<li>Types changed: |
|---|
| 981 |
<ul> |
|---|
| 982 |
<li>All: Triming data except XSDString before parsing it.</li> |
|---|
| 983 |
<li>String: Regexp for XML Char check did not work under $KCODE = 'UTF8' condition. Fixed.</li> |
|---|
| 984 |
<li>Nil: 2001xsd:nil must not accept a value '1'. 1999xsd:null must not accept a value 'true' because these are not a boolean but only a flag for nil. Fixed.</li> |
|---|
| 985 |
</ul> |
|---|
| 986 |
</li> |
|---|
| 987 |
|
|---|
| 988 |
<li>Supported XML parser: |
|---|
| 989 |
<ul> |
|---|
| 990 |
<li>Added automatic CES conversion support for NQXMLParser. |
|---|
| 991 |
(Depends on uconv module). |
|---|
| 992 |
Set $KCODE for regexps used in NQXML parser.</li> |
|---|
| 993 |
<li>Moved SOAPNQXML*Parser to nqxmlparser.rb.</li> |
|---|
| 994 |
</ul> |
|---|
| 995 |
</li> |
|---|
| 996 |
|
|---|
| 997 |
<li>RPC related functions changed:</li> |
|---|
| 998 |
<ul> |
|---|
| 999 |
<li>Added marshalling/unmarshalling Ruby's object using SOAP Encoding.</li> |
|---|
| 1000 |
<li>Parallelize of signatures of 'addMethod': proxy.rb <-> rpcRouter.rb, driver.rb <-> cgistub.rb.</li> |
|---|
| 1001 |
<li>Void return if 'retval' is not defined.</li> |
|---|
| 1002 |
<li>Added SOAP's Long type to default mapping table.</li> |
|---|
| 1003 |
</ul> |
|---|
| 1004 |
</li> |
|---|
| 1005 |
</ul></dd> |
|---|
| 1006 |
|
|---|
| 1007 |
<dt>1.3.4.2 - July 11, 2001</dt> |
|---|
| 1008 |
<dd>SOAP4R/1.3.4 was once packed in July 10, 2001. |
|---|
| 1009 |
But, thanks to MNeumann and knu, |
|---|
| 1010 |
I found I had forgotten to pack 'redist' directory with it. |
|---|
| 1011 |
I added some fix from developing version and repack it as 1.3.4.2. |
|---|
| 1012 |
Sorry for frequently release... |
|---|
| 1013 |
<br/><br/> |
|---|
| 1014 |
|
|---|
| 1015 |
Feedback from |
|---|
| 1016 |
<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| 1017 |
and Michael Neumann. Thanks! |
|---|
| 1018 |
|
|---|
| 1019 |
<ul> |
|---|
| 1020 |
<li>Added in 1.3.4.2: |
|---|
| 1021 |
<ul> |
|---|
| 1022 |
<li>Type Decimal: Silly bug fixed. 0.0001 was converted to 0.1</li> |
|---|
| 1023 |
<li>CGIStub returns HTTP status 500 when returning SOAP Fault. |
|---|
| 1024 |
Returned 200 because I don't like this spec., but SOAP/1.2 W3C WD |
|---|
| 1025 |
9 July 2001 have adopted it. Hmm...</li> |
|---|
| 1026 |
<li>RPC client(driver.rb): Exception#set_backtrace was omitted when transmitting exception by SOAP Fault.</li> |
|---|
| 1027 |
</ul> |
|---|
| 1028 |
</li> |
|---|
| 1029 |
<li>Types changed: |
|---|
| 1030 |
<ul> |
|---|
| 1031 |
<li>Array: Incomplete sparse array support. Fixed.</li> |
|---|
| 1032 |
<li>Date: Added.</li> |
|---|
| 1033 |
<li>Time: Added.</li> |
|---|
| 1034 |
<li>DateTime: Added precision of time support.</li> |
|---|
| 1035 |
<li>String: Default data should not be nil but ''.</li> |
|---|
| 1036 |
<li>Nil: Attribute value of xsi:nil might be '1' instead of 'true'. Fixed.</li> |
|---|
| 1037 |
</ul> |
|---|
| 1038 |
</li> |
|---|
| 1039 |
|
|---|
| 1040 |
<li>Supported XML parser: |
|---|
| 1041 |
<ul> |
|---|
| 1042 |
<li>Added SOAPXMLParser and SOAPSAXDriver for XMLParser which uses expat. |
|---|
| 1043 |
You can get the module from RAA: <a href="http://www.ruby-lang.org/raa/list.rhtml?name=xmlparser">XMLParser module</a>.<br/> |
|---|
| 1044 |
To use XMLParser -> add "require 'soap/xmlparser'".<br/> |
|---|
| 1045 |
To use SAX driver of XMLParser -> add "require 'soap/saxdriver'".<br/> |
|---|
| 1046 |
To use NQXMLParser -> nothing to do.<br/> |
|---|
| 1047 |
FYI: |
|---|
| 1048 |
<ul> |
|---|
| 1049 |
<li>XMLParser version is faster than others</li> |
|---|
| 1050 |
<li>SAXDriver version is extremely slow</li> |
|---|
| 1051 |
<li>NQXMLParser version is somewhat slower than XMLParser version</li> |
|---|
| 1052 |
<li>XMLParser is a Ruby extension module; To use it, you must compile and install it.</li> |
|---|
| 1053 |
<li>So far, automatic code conversion support is for XMLParser and SAXDriver. See below.</li> |
|---|
| 1054 |
</ul> |
|---|
| 1055 |
</li> |
|---|
| 1056 |
<li>Added automatic CES conversion support: UTF-8 <-> EUC, SJIS. |
|---|
| 1057 |
Requires Uconv module. Works with XMLParser module only now.</li> |
|---|
| 1058 |
<li>Added XMLDecl for CES.</li> |
|---|
| 1059 |
</ul> |
|---|
| 1060 |
</ul></dd> |
|---|
| 1061 |
|
|---|
| 1062 |
<dt>1.3.3 - July 4, 2001</dt> |
|---|
| 1063 |
<dd>Feedback from |
|---|
| 1064 |
<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| 1065 |
and Michael Neumann. Thanks! |
|---|
| 1066 |
<ul> |
|---|
| 1067 |
<li>Added SOAP4R Installer by Michael Neumann. Thanks!</li> |
|---|
| 1068 |
<li>Types changed: |
|---|
| 1069 |
<ul> |
|---|
| 1070 |
<li>Boolean: Accepts 1 and 0 in addition to true and falue.</li> |
|---|
| 1071 |
<li>Float: handles single-precision 32-bit floating point. |
|---|
| 1072 |
Ruby's float is doule-precision.</li> |
|---|
| 1073 |
<li>Double: Added. Mapped to Ruby's Float.</li> |
|---|
| 1074 |
<li>DateTime: Added TZ support.</li> |
|---|
| 1075 |
<li>Long: Added.</li> |
|---|
| 1076 |
<li>Int: Changed class hierarchy; derived from Long now.</li> |
|---|
| 1077 |
<li>Array: Added 'position' and 'offset' support.</li> |
|---|
| 1078 |
<li>Array: Added M-D Array support.</li> |
|---|
| 1079 |
<li>Decimal: Added but it's incomplete now.</li> |
|---|
| 1080 |
</ul> |
|---|
| 1081 |
</li> |
|---|
| 1082 |
<li>Illegal error message when a type not found in SOAP-ENC.</li> |
|---|
| 1083 |
<li>Tries to transmit \r safely. To be checked...</li> |
|---|
| 1084 |
<li>Parse Fault items like 'faultcode' as same as Body ie. href/id.</li> |
|---|
| 1085 |
<li>rpcUtils.rb was completely re-written. |
|---|
| 1086 |
<ul> |
|---|
| 1087 |
<li>Added mappingRegistry interface.</li> |
|---|
| 1088 |
<li>Changed soap2obj and obj2soap's interface.</li> |
|---|
| 1089 |
<li>Bignum might be int or integer. It's dependent on platform. |
|---|
| 1090 |
Changed to check range -2147483648~+2147483647 itself.</li> |
|---|
| 1091 |
<li>ary2md: Added. Converting Array ((of Array)...) to M-D Array.</li> |
|---|
| 1092 |
<li>struct2obj: Illegal dependency on ordering of Struct#members. Fixed.</li> |
|---|
| 1093 |
<li>Ruby's Array should be converted to SOAP's Array of anyType. Fixed.</li> |
|---|
| 1094 |
</ul> |
|---|
| 1095 |
</li> |
|---|
| 1096 |
<li>Dump HTTP header even when an error was raised.</li> |
|---|
| 1097 |
</ul></dd> |
|---|
| 1098 |
|
|---|
| 1099 |
<dt>1.3.2 - June 21, 2001</dt> |
|---|
| 1100 |
<dd>Feedback from |
|---|
| 1101 |
<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| 1102 |
|
|---|
| 1103 |
<ul> |
|---|
| 1104 |
<li>"nil='1'" should be "nil='true'" in 2001 schema |
|---|
| 1105 |
whereas "null='1'" in 1999 schema. Fixed.</li> |
|---|
| 1106 |
<li>SOAP Array was not typed with xsi:type.</li> |
|---|
| 1107 |
<li>Fixed serialization root handling algorithm.</li> |
|---|
| 1108 |
<li>Supported kind of SOAP-ENC:String style typed element.</li> |
|---|
| 1109 |
<li>Default namespace was not derived to child element. Fixed.</li> |
|---|
| 1110 |
<li>Support default encodingStyle.</li> |
|---|
| 1111 |
<li>Added support for void type (SOAP::RPCUtils::SOAPVoid).</li> |
|---|
| 1112 |
</ul></dd> |
|---|
| 1113 |
|
|---|
| 1114 |
<dt>1.3.1 - May 30, 2001</dt> |
|---|
| 1115 |
<dd>Feedback from |
|---|
| 1116 |
<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| 1117 |
|
|---|
| 1118 |
<ul> |
|---|
| 1119 |
<li>Heading and trailing whtespaces in Base64 string could not be processed. Fixed.</li> |
|---|
| 1120 |
<li>Illegal typeNamespace of SOAP's base64 type. Fixed.</li> |
|---|
| 1121 |
<li>Added NaN, INF, -INF support of Float type.</li> |
|---|
| 1122 |
<li>Extracted xsd:1999 type support to XMLSchemaDatatypes1999.rb. Use it with 'require "soap/XMLSchemaDatatypes1999"'.</li> |
|---|
| 1123 |
<li>Added 'root' attribute support.</li> |
|---|
| 1124 |
<li>Return status 500 when Fault.</li> |
|---|
| 1125 |
</ul></dd> |
|---|
| 1126 |
|
|---|
| 1127 |
<dt>1.3.0 - May 20, 2001</dt> |
|---|
| 1128 |
<dd><ul> |
|---|
| 1129 |
<li>Adopted |
|---|
| 1130 |
<a href="http://www.ruby-lang.org/raa/list.rhtml?name=nqxml">NQXML module</a> |
|---|
| 1131 |
instead of XMLParser module extensively. |
|---|
| 1132 |
(You can implement your SOAP parser with XMLParser module. |
|---|
| 1133 |
See the last part of lib/soap/parser.rb) |
|---|
| 1134 |
<ul> |
|---|
| 1135 |
<li>Use NQXML's streamingParser or tokenizer instead of XMLParser's DOMParser for unmarshalling.</li> |
|---|
| 1136 |
<li>Use NQXML's document instead of XMLParser's DOM for marshalling.</li> |
|---|
| 1137 |
</ul></li> |
|---|
| 1138 |
<li>Passed major(?) part of inteoperability test in |
|---|
| 1139 |
<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| 1140 |
See test/interop/README.txt.</li> |
|---|
| 1141 |
<li>Changed module namespace. SOAPFoo -> SOAP::Foo.</li> |
|---|
| 1142 |
<li>Added float datatype support.</li> |
|---|
| 1143 |
<li>Changed dateTime marshalling format. No timezone was added to marshalled string because SOAP4R does not support timezone now.</li> |
|---|
| 1144 |
</ul></dd> |
|---|
| 1145 |
|
|---|
| 1146 |
<dt>1.2.0 - March 30, 2001</dt> |
|---|
| 1147 |
<dd>Checked interoperability with |
|---|
| 1148 |
<a href="http://xml.apache.org/soap/">Apache-SOAP</a>, |
|---|
| 1149 |
<a href="http://www.pocketsoap.com">pocketSOAP/0.91</a>, |
|---|
| 1150 |
<a href="http://www.geocities.com/paulclinger/soap.html">SOAP::Lite for Perl</a>, |
|---|
| 1151 |
and <a href="http://www.develop.com/soap/">SOAP/Perl/0.28</a>. |
|---|
| 1152 |
It seems to work good except SOAP/Perl/0.28. |
|---|
| 1153 |
|
|---|
| 1154 |
<ul> |
|---|
| 1155 |
<li>Added href/id unmarshalling support. |
|---|
| 1156 |
(href/id marshalling has |
|---|