Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/tags/RELEASE_1_5_2/RELEASE_en.html

Revision 1139, 54.2 kB (checked in by nahi, 5 years ago)

* for 1.5.2.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to author date id revision
Line 
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: December 25, 2003<br />
22 Created: July 17, 2000
23 </p>
24 </div>
25
26 <hr />
27
28 <div class="main">
29 <h2><span class="content">0. In this document...</span></h2>
30
31 <p>
32 This is Release Notes of SOAP4R.
33 </p>
34
35 <p>
36 Target SOAP4R version: SOAP4R/1.5.2
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"><span class="content">1. Changes</span></h2>
54
55 <p>
56 Important news:  Soap4r library is included in ruby distribution after
57 ruby/1.8.1.  You might not be need to install this package under ruby/1.8.
58 The files this package includes and are not included in ruby/1.8 distribution
59 are; some experimental code, application program (bin/wsdl2ruby) and some test
60 codes.  Consider to get this package if,
61 </p>
62
63 <ul>
64   <li>You want to use soap4r under ruby/1.6</li>
65   <li>You need to do SOAP Messages with Attachments (SwA)</li>
66   <li>You need the WSDL to ruby (reads a WSDL file and generates stubs and Ruby class definitions) application</li>
67 </ul>
68
69 <p>
70 Changes from 1.5.1.2.
71 </p>
72
73 <ul>
74   <li>License;
75   <ul>
76     <li>Changed license from GPL2 to Ruby's.</li>
77   </ul></li>
78
79   <li>Features;
80   <ul>
81     <li>Add SOAP Messages with Attachments (SwA) support.
82     Patched by Jamie Herre.
83     &quot;SOAP Messages with Attachments&quot; is the W3C Note which defines a
84     binding for a SOAP 1.1 message to be carried within a MIME
85     multipart/related message.  <a href="http://www.w3.org/TR/SOAP-attachments">http://www.w3.org/TR/SOAP-attachments</a>
86     This feature is still experimental.  Interop testing is going on.</li>
87
88     <li>HTTPS support even when you use net/http (not http-access2).
89     Patched by Oliver M. Bolzer.</li>
90
91     <li>Property file support.  SOAP and WSDL client reads &quot;soap/property&quot;
92     file located at somewhere in $: (ruby libray locations).  For
93     example, save these lines to
94     &quot;$rubylibdir/site_ruby/1.8/soap/property&quot;.
95 <pre>
96       client.protocol.http.proxy = http://myproxy:8080
97       client.protocol.http.no_proxy = 192.168.71.71,192.168.71.72
98 </pre>
99     Then all HTTP connections should use these proxy and no_proxy
100     definition.</li>
101
102     <li>Do not trust "HTTP_PROXY" environment variable by default to
103     avoid security problem.  cf.
104     <ul>
105       <li><a href="http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0072.html">http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0072.html</a></li>
106       <li><a href="http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0241.html">http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0241.html</a></li>
107       <li><a href="http://curl.haxx.se/mail/archive-2001-12/0034.html">http://curl.haxx.se/mail/archive-2001-12/0034.html</a></li>
108     </ul>
109     To use HTTP_PROXY and NO_PROXY environment variable, you must set
110     SOAP_USE_PROXY environment variable 'on', too.
111 <pre>
112       bash$ soap_use_proxy=on http_proxy=http://myproxy:8080 ruby ...
113       csh$  env soap_use_proxy=on http_proxy=http://myproxy:8080 ruby ...
114 </pre></li>
115
116     <li>Add SOAP::RPC::Driver#mandatorycharset= and
117     SOAP::WSDLDriver#mandatorycharset= interface to force using
118     charset when parsing response from buggy server such as AWS.</li>
119
120     <li>Support a halfway-typed multi-ref array that Axis dumps.</li>
121
122     <li>Added a interface XSD::Charset.encoding= to control internal
123     encoding scheme.  Internal encoding scheme was fixed to 'utf-8'
124     when iconv or uconv was installed.  You can set 'euc-jp', etc.
125     to avoid encoding scheme conversion if you know what encoding
126     scheme the server uses.</li>
127   </ul></li>
128
129   <li>Bug fixes;
130   <ul>
131     <li>SOAP::Marshal.unmarshal: raise an exception if parse fails.
132     (returned nil)</li>
133
134     <li>SOAP::WSDLDriver: decode unknown element according to self-defined
135     type even if WSDL was given.</li>
136
137     <li> SOAP::Mapping::Factory#create_empty_object: fix Class#allocate
138     emulation code for ruby/1.6.  no effective change under ruby/1.8.</li>
139
140     <li>SOAP::RPC::SOAPMethodResponse: element name of response message
141     could have the name other than 'return'.</li>
142
143     <li>SOAP::RPC::StandaloneServer: add methods 'shutdown' and 'status'
144     as delegates to WEBrick.</li>
145
146     <li>WSDL::SOAP::ClassDefCreator: WSDL/1.1 allows plural fault
147     definition in a operation.</li>
148
149     <li>XSD::Charset.init: use cp932 under emx.
150     Patched by Siena. / SHINAGAWA, Norihide.</li>
151   </ul></li>
152 </ul>
153
154 <p>
155 Thanks to all of soap4r users for their support.
156 </p>
157
158 <h2 id="install" name="install"><span class="content">2. Install</span></h2>
159
160 <p>
161 At first, see <a href="#dependencies">Dependencies</a> section.
162 You may need to install some extra packages.
163 Next, get the archived file of SOAP4R and extract it, then simply try;
164 </p>
165 <pre class="path">
166 $ ruby install.rb
167 </pre>
168
169 <p>
170 Necessary files will be installed to suitable directory.
171 </p>
172
173 <p>
174 Files in lib/soap directory are SOAP4R library program itself.
175 </p>
176
177 <dl>
178 <dt class="path">lib/</dt>
179 <dd>Libraries.</dd>
180
181 <dt class="path">sample/</dt>
182 <dd>SOAP4R samples.
183 See <a href="#samples">Samples</a> section.</dd>
184
185 <dt class="path">test/</dt>
186 <dd>Some tests.
187 Unit test MUST cover all lines of code, but far from enough so far...
188 <br/>
189 test/interopR2/ directory includes Clients/Server for
190 <a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a>
191 Followings are advanced examples to use complex type transmit,
192 sending base64 encoded string, multi-dimensional array, and so on.
193 <ul>
194 <li>test/interopR2/server.rb is a RPC Server side implementation.</li>
195 <li>test/interopR2/client.rb is a RPC Client side implementation.</li>
196 <li>test/interopR2/base.rb includes common definitions for client/server.</li>
197 </ul>
198 </dd>
199 </dl>
200
201 <h2 id="uninstall" name="uninstall"><span class="content">3. Uninstall</span></h2>
202
203 <p>
204 Simply delete installed files.
205 </p>
206
207 <h2 id="whats" name="whats"><span class="content">4. What is SOAP4R?</span></h2>
208
209 <p>
210 'SOAP4R' is an implementation of
211 <a href="http://www.w3.org/TR/SOAP/">Simple Object Access Protocol (SOAP) 1.1 (W3C Note)</a>.
212 </p>
213
214 <p>
215 Comments, information such as interoperability between SOAP4R and another implementation are welcomed.
216 Feel free sending mail to
217 <a href="mailto:nakahiro@sarion.co.jp" class="path">nakahiro@sarion.co.jp</a>.
218 </p>
219
220 <h2 id="dependencies" name="dependencies"><span class="content">5. Dependencies</span></h2>
221
222 <p>
223 SOAP4R is written in <a href="http://www.ruby-lang.org">Ruby</a> and
224 aims to use with Ruby application.
225 You have to install Ruby itself.
226 Ruby/1.6 series or later is required.
227 </p>
228
229 <p>
230 SOAP4R depends on following Ruby modules in
231 <a href="http://raa.ruby-lang.org">RAA</a>.
232 You also have to install these modules to use SOAP4R.
233 </p>
234
235 <dl>
236 <dt class="path">XML processor</dt>
237 <dd>SOAP4R requires a XML processor package installed.
238 Note: ruby/1.8 includes REXML so you don't have to install extra XML parser library.<br/>
239 For now, one of following XML processor must be installed
240 (SOAP4R automatically detects it in runtime).
241 <ul>
242 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=xmlscan">[RAA:xmlscan]</a> (0.2.3, 0.3.x)</li>
243 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=rexml">[RAA:REXML]</a> (2.7.1)</li>
244 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=rexml-stable">[RAA:REXML-stable]</a> (2.4.8)</li>
245 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=xmlparser">[RAA:XMLParser]</a> (0.6.5)</li>
246 </ul></dd>
247
248 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=devel-logger">[RAA:devel-logger]</a> (1.1.0)</dt>
249 <dd>Logging utility by NaHi.  ruby/1.8 includes this library so you don't have to re-install it.</dd>
250
251 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=webrick">[RAA:webrick]</a> (1.3.1)</dt>
252 <dd>TCP server toolkit by Gotoyuzo.
253 ruby/1.8 includes WEBrick in standard distribution library.</dd>
254
255 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> (2.0.0) (recommended for SOAP client)</dt>
256 <dd>Yet another HTTP client implementation by NaHi.</dd>
257
258 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=date2">[RAA:date2]</a> (3.2) (required under ruby/1.6)</dt>
259 <dd>Date and DateTime implementation by Todayoshi Funaba.
260 Note: From ruby/1.8, this module is included in standard distribution.
261 You don't have to install it if you are using ruby/1.8 or later.</dd>
262
263 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=uconv">[RAA:uconv]</a> (0.4.10) (required for UTF-8 handling under ruby/1.6 or under ruby/1.8 without iconv)</dt>
264 <dd>by Yoshida Masato.
265 It is requred when you use ruby/1.6 and want automatic CES conversion between
266 SJIS &lt;-&gt; UTF8 and EUC &lt;-&gt; UTF8.
267 Under ruby/1.8, soap4r uses iconv in standard distribution library (if you installed it).
268 Note: SJIS &lt;-&gt; EUC uses NKF module which is in standard distribution.
269 </dd>
270
271 </dl>
272
273 <h2 id="samples" name="samples"><span class="content">6. Samples</span></h2>
274
275 <p>
276 Samples are in sample/ directory of distribution.
277 Some samples try to connect to public servers.
278 Set environment variable SOAP_USE_PROXY and HTTP_PROXY if you are in a firewall and you have
279 http proxy to the internet like;
280 </p>
281 <pre class="path">
282 $ export SOAP_USE_PROXY=on
283 $ export HTTP_PROXY=http://myproxyserver:8080
284   or
285 $ setenv SOAP_USE_PROXY on
286 $ setenv HTTP_PROXY http://myproxyserver:8080
287 </pre>
288
289 <dl>
290 <dt class="path">babelfish.rb</dt>
291 <dd>A client for
292 <a href="http://www.xmethods.com/ve2/ViewListing.po?serviceid=14">BabelFish</a>
293 which namespace URI is 'urn:xmethodsBabelFish'.
294 <pre class="path">
295 $ ./babelfish.rb "Text to translate" [ translation pattern like 'en_fr' ]
296 </pre>
297 </dd>
298
299 <dt class="path">whois.rb</dt>
300 <dd>A client for
301 <a href="http://www.xmethods.com/ve2/ViewListing.po?serviceid=34">SQLData's WHOIS</a>
302 which namespace URI is 'http://www.SoapClient.com/xml/SQLDataSoap.xsd'.
303 <pre class="path">
304 $ ./whois.rb ruby-lang.org
305 </pre>
306 CAUTION: This WhoIs server does not handle non-ascii characters correctly.
307 Querying domain which entry contains Japanese or so will hang.  Gee.
308 </dd>
309
310 <dt class="path">digraph.rb</dt>
311 <dd>A sample of SOAP marshalling/unmarshalling.
312 It creates a digraph that contains multi-ref-ed nodes at first
313 and marshals this object to get serialized XML instance.
314 Then reads and unmarshals this XML instance to recover a object
315 which has the same links among nodes in the digraph.
316 </dd>
317
318 <dt class="path">apacheClient.rb</dt>
319 <dd>SOAP-RPC client sample which connects with demonstration server;
320 stockquote and addressbook in Apache-SOAP.
321 You have to install Apache-SOAP and deploy demostration programs.<br />
322 To execute;
323 <pre class="path">
324 $ ./apacheClient.rb http://localhsot:2020/xml-soap/rpcrouter/rpcrouter.jsp
325 </pre>
326 </dd>
327
328 <dt class="path">GoogleSearch/</dt>
329 <dd>A sample client to search with <a href="http://www.google.com/apis/">Google Web API</a> using WSDL.
330 You need to get a developer's key to use it.
331 See wsdlDriver.rb.
332 </dd>
333
334 <dt class="path">Amazon/</dt>
335 <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.
336 See wsdlDriver.rb.
337 </dd>
338
339 <dt class="path">Calc/</dt>
340 <dd>Calc service contains 2 servers and 2 clients.
341 calc.rb is hosted by server.rb, calc2.rb is hosted by server2.rb.
342 client.rb is for server.rb, client2.rb is for server2.rb.
343 <dl>
344 <dt>calc.rb</dt>
345 <dd>Calc server definition using module and module methods.
346 This module responds 'add', 'sub', 'multi' and 'div'.</dd>
347 <dt>server.rb</dt>
348 <dd>Standalone server.
349 It requires calc.rb and serve module methods of this module.
350 To run this server;
351 <pre class="path">
352 $ ./server.rb
353 </pre>
354 </dd>
355 <dt>server.cgi</dt>
356 <dd>CGI version.
357 To run this server, copy server.cgi and calc.rb to suitable directory
358 of your WWW server.
359 </dd>
360 <dt>client.rb</dt>
361 <dd>It connects to server.rb or server.cgi,
362 and hit methods served by calc.rb.
363 To run the client;
364 <pre class="path">
365 $ ./client.rb
366 </pre>
367 Is it stacked?  Did you run the server.rb?<br/>
368 Turn logger and wireDumpDev in its source on to see logs and wire dumps of
369 SOAP transport.</dd>
370
371 <dt>calc2.rb</dt>
372 <dd>Calc server definition using class and instance methods.
373 An instance of this class holds its value.  Methods 'set' and 'get' is to
374 set/get the value.
375 It also responds to '+', '-', '*', and '/'.
376 </dd>
377 <dt>server2.rb</dt>
378 <dd>It requires calc2.rb and creates an instance of CalcService2
379 that responds all SOAP requests.
380 Since '+', '-' and so on of calc2.rb are not valid name as an element
381 in XML instance,
382 this sample register the method '+' as 'add', '-' as 'sub', and so on.
383 </dd>
384 <dt>server2.cgi</dt>
385 <dd>CGI version.
386 To run this server, copy server2.cgi and calc2.rb to suitable directory
387 of your WWW server.
388 </dd>
389 <dt>client2.rb</dt>
390 <dd>It connects to server2.rb or server2.cgi.
391 Set a value at first and call methods like 'puts objAtServer + 2'.</dd>
392 </dl>
393 </dd>
394
395 <dt class="path">Exchange/</dt>
396 <dd>A sample to retrieve the currency rate from public SOAP service.</dd>
397 <dl>
398 <dt>iExchange.rb</dt>
399 <dd>It includes common definitions for client and server of
400 Exchange service.
401 Including only a definition of namespace URI of this service.</dd>
402 <dt>exchange.rb</dt>
403 <dd>Definition of servant class ExchangeService which returns the currency rate
404 after connecting to another site by SOAP to get the real rate.
405 So that this class is the SOAP server for local client and
406 is also a SOAP client for public server.
407 An instance of this class is hosted by server.rb.
408 The instance responds to only 'getRate' which receives two country code
409 such as 'USA' and 'Japan'.</dd>
410 <dt>server.rb</dt>
411 <dd>It requires exchange.rb and creates an instance of ExchangeService
412 that responds all SOAP requests.
413 To run this server;
414 <pre class="path">
415 $ ./server.rb
416 </pre>
417 </dd>
418 <dt>server.cgi</dt>
419 <dd>CGI version.
420 To run this server, copy server.cgi and exchange.rb to suitable directory
421 of your WWW server.
422 </dd>
423 <dt>client.rb</dt>
424 <dd>It connects to server.rb.
425 Turn logger and wireDumpDev in its source on to see logs and wire dumps of
426 SOAP transport.
427 To run the client;
428 <pre class="path">
429 $ ./client.rb
430 </pre>
431 </dd>
432 </dl>
433 </dd>
434
435 <dt class="path">SampleStruct/</dt>
436 <dd>A sample to transmit complex structured object which has recursive
437 object reference.
438 <dl>
439 <dt>iSampleStruct.rb</dt>
440 <dd>It includes common definitions for client and server of
441 SampleStruct service.
442 Definition of SampleStruct class and namespace URI of this service.</dd>
443 <dt>sampleStruct.rb</dt>
444 <dd>Definition of servant class SampleStructService.
445 An instance of this class is hosted by server.rb.
446 The instance responds to only 'hi' which receives a SampleStruct and wraps
447 it in the new instance of SampleStruct to return .</dd>
448 <dt>server.rb</dt>
449 <dd>It requires sampleStruct.rb and creates an instance of SampleStructService
450 that responds all SOAP requests.
451 To run this server;
452 <pre class="path">
453 $ ./server.rb
454 </pre>
455 </dd>
456 <dt>server.cgi</dt>
457 <dd>CGI version.
458 To run this server, copy server.cgi and sampleStruct.rb to suitable directory
459 of your WWW server.
460 </dd>
461 <dt>client.rb</dt>
462 <dd>It connects to server.rb.
463 Turn logger and wireDumpDev in its source on to see logs and wire dumps of
464 SOAP transport.
465 To run the client;
466 <pre class="path">
467 $ ./client.rb
468 </pre>
469 </dd>
470 </dl>
471 </dd>
472
473 <dt class="path">RAA/</dt>
474 <dd>SOAP-RPC client samples.
475 These programs connect to RAA SOAP Interface on www.ruby-lang.org.
476 <ul>
477 <li>soap4r.rb: Ruby program using SOAP4R</li>
478 <li>xmlrpc4r.rb: Ruby program using xmlrpc4r</li>
479 <li>pocketSOAP.js: JScript program using pocketSOAP</li>
480 <li>SOAP::Lite.pl: Perl program using SOAP::Lite for Perl</li>
481 </ul>
482 Since the server is (still) under testing phase so stable operation is not expected.</dd>
483
484 <li>SampleStructService
485 <dl>
486 <dt>sampleStruct.rb</dt>
487 <dd>A server class definition which wraps a given struct
488 and returns it.
489 An instance of this class is instanciated in httpd.rb and this instance
490 respond to each HTTP request.</dd>
491 <dt>sampleStructClient.rb</dt>
492 <dd>A client to connect soaplet.rb via SOAP/HTTP to call sampleStruct.rb</dd>
493 <dt>iSampleStruct.rb</dt>
494 <dd>Common class(type) definitions for server and client.</dd>
495 </dl></li>
496 </ul>
497 Run the server;
498 <pre class="path">
499 $ ruby httpd.rb
500 </pre>
501 Then, run clients;
502 <pre class="path">
503 $ ruby sampleStruct.rb
504 $ ruby exchangeClient.rb
505 </pre>
506 Set 'logger' and 'wireDumpDev' in clients to see log and wiredumps of SOAP.
507 </dd>
508
509 <dt class="path">ICD</dt>
510 <dd>A client for
511 <a href="http://www.iwebmethod.net/">Insider's Computer Dictionary Web Service</a>.
512 This service is implemented with ASP.NET so that it's also a sample of
513 a client which connects to ASP.NET.
514 CAUTION: this sample contains non-ascii chars in its source and dumped results.
515 <dl>
516 <dt>IICD.rb</dt>
517 <dd>Class(type) definitions for this server.</dd>
518 <dt>icd.rb</dt>
519 <dd>Client implementation.  To run the client;
520 <pre class="path">
521 $ ./icd.rb
522 </pre>
523 </dd>
524 </dl>
525 </dd>
526
527 <dt class="path">WSDemo</dt>
528 <dd>A sample of messaging client.  Server side sample does not exist now...</dd>
529
530 <dt class="path">RWiki</dt>
531 <dd>A sample CGI server which receives a request via SOAP and dispatches it
532 to RWiki server via dRuby.  Naive SOAP/dRuby bridge implementation.</dd>
533
534 </dl>
535
536 <h2 id="restrictions" name="restrictions"><span class="content">7. Restrictions</span></h2>
537
538 <p>
539 The following features of the
540 <a href="http://www.w3.org/TR/SOAP/">SOAP 1.1 (W3C Note)</a>
541 spec are <strong>NOT</strong> currently supported:
542 </p>
543
544 <ul>
545 <li style="margin-top: 2ex;">SOAP Envelope
546 <ul>
547 <li>SOAP actor attribute</li>
548 <li>SOAP mustUnderstand attribute</li>
549 <li>SOAP Fault Codes</li>
550 </ul></li>
551 <li style="margin-top: 2ex;">SOAP Encoding
552 <ul>
553 <li>Decoding using XML Schema</li>
554 </ul></li>
555 <li style="margin-top: 2ex;">Othres
556 <ul>
557 <li>Transport binding except HTTP server and client</li>
558 </ul></li>
559 </ul>
560
561 <h2 id="resources" name="resources"><span class="content">8. Resources</span></h2>
562
563 <dl>
564 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=soap4r">[RAA:soap4r]</a></dt>
565 <dd>I will post a new release to RAA.
566 Check RAA to get a new stable (I hope) version.</dd>
567
568 <dt class="path"><a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/lib/soap4r/">CVS</a></dt>
569 <dd>There is the SOAP4R CVS repository in cvs.ruby-lang.org.
570 (Thanks to knu, the maintainer of cvs.ruby-lang.org.)
571 Check here to get most recent (but could be unstable) version.</dd>
572
573 <dt class="path"><a href="http://rrr.jin.gr.jp/rwiki?cmd=view&name=soap4r">SOAP4R Wiki</a></dt>
574 <dd>There is a wiki for SOAP4R, running under
575 <a href="http://www.ruby-lang.org/raa/list.rhtml?name=rwiki">[RAA:RWiki]</a>.
576 Feel free to add your comment there.
577 Any comments are welcomed. (as always)</dd>
578
579 <dt class="path"><a href="http://rrr.jin.gr.jp/soap4r?cmd=view;name=InteropResults">InteropResults</a></dt>
580 <dd>Test results of <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab &quot;Round 2&quot;</a>.</dd>
581
582 </dl>
583
584 <h2 id="history" name="history"><span class="content">9. History</span></h2>
585
586 <dl>
587 <dt>1.5.2 - December 25, 2003</dt>
588 <dd>
589 <ul>
590   <li>License;
591   <ul>
592     <li>Changed license from GPL2 to Ruby's.</li>
593   </ul></li>
594
595   <li>Features;
596   <ul>
597     <li>Add SOAP Messages with Attachments (SwA) support.
598     Patched by Jamie Herre.
599     &quot;SOAP Messages with Attachments&quot; is the W3C Note which defines a
600     binding for a SOAP 1.1 message to be carried within a MIME
601     multipart/related message.  <a href="http://www.w3.org/TR/SOAP-attachments">http://www.w3.org/TR/SOAP-attachments</a>
602     This feature is still experimental.  Interop testing is going on.</li>
603
604     <li>HTTPS support even when you use net/http (not http-access2).
605     Patched by Oliver M. Bolzer.</li>
606
607     <li>Property file support.  SOAP and WSDL client reads &quot;soap/property&quot;
608     file located at somewhere in $: (ruby libray locations).  For
609     example, save these lines to
610     &quot;$rubylibdir/site_ruby/1.8/soap/property&quot;.
611 <pre>
612       client.protocol.http.proxy = http://myproxy:8080
613       client.protocol.http.no_proxy = 192.168.71.71,192.168.71.72
614 </pre>
615     Then all HTTP connections should use these proxy and no_proxy
616     definition.</li>
617
618     <li>Do not trust "HTTP_PROXY" environment variable by default to
619     avoid security problem.  cf.
620     <ul>
621       <li><a href="http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0072.html">http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0072.html</a></li>
622       <li><a href="http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0241.html">http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0241.html</a></li>
623       <li><a href="http://curl.haxx.se/mail/archive-2001-12/0034.html">http://curl.haxx.se/mail/archive-2001-12/0034.html</a></li>
624     </ul>
625     To use HTTP_PROXY and NO_PROXY environment variable, you must set
626     SOAP_USE_PROXY environment variable 'on', too.
627 <pre>
628       bash$ soap_use_proxy=on http_proxy=http://myproxy:8080 ruby ...
629       csh$  env soap_use_proxy=on http_proxy=http://myproxy:8080 ruby ...
630 </pre></li>
631
632     <li>Add SOAP::RPC::Driver#mandatorycharset= and
633     SOAP::WSDLDriver#mandatorycharset= interface to force using
634     charset when parsing response from buggy server such as AWS.</li>
635
636     <li>Support a halfway-typed multi-ref array that Axis dumps.</li>
637
638     <li>Added a interface XSD::Charset.encoding= to control internal
639     encoding scheme.  Internal encoding scheme was fixed to 'utf-8'
640     when iconv or uconv was installed.  You can set 'euc-jp', etc.
641     to avoid encoding scheme conversion if you know what encoding
642     scheme the server uses.</li>
643   </ul></li>
644
645   <li>Bug fixes;
646   <ul>
647     <li>SOAP::Marshal.unmarshal: raise an exception if parse fails.
648     (returned nil)</li>
649
650     <li>SOAP::WSDLDriver: decode unknown element according to self-defined
651     type even if WSDL was given.</li>
652
653     <li> SOAP::Mapping::Factory#create_empty_object: fix Class#allocate
654     emulation code for ruby/1.6.  no effective change under ruby/1.8.</li>
655
656     <li>SOAP::RPC::SOAPMethodResponse: element name of response message
657     could have the name other than 'return'.</li>
658
659     <li>SOAP::RPC::StandaloneServer: add methods 'shutdown' and 'status'
660     as delegates to WEBrick.</li>
661
662     <li>WSDL::SOAP::ClassDefCreator: WSDL/1.1 allows plural fault
663     definition in a operation.</li>
664
665     <li>XSD::Charset.init: use cp932 under emx.
666     Patched by Siena. / SHINAGAWA, Norihide.</li>
667   </ul></li>
668 </ul></dd>
669
670 <dt>1.5.1 - November  2, 2003</dt>
671 <dd>
672 <ul>
673   <li>Features;
674   <ul>
675     <li>Sample updates; Update Amazon Web Service WSDL (v2 -&gt; v3), and update RAA WSDL(0.0.1 -&gt; 0.0.2).
676     <li>Supports ivars of basetype and extending modules marshalling with XML attribute.
677 Using XML attribute to support ruby object dependent information, marshalled object keeps compatibility with SOAP spec.
678 It shows the power of XML, extensibility.<br/>
679 Now I think SOAP marshaller supports all kind of object graph which is supported by Ruby's original marshaller.</li>
680     <li>Better XML pretty printing.
681 <pre>
682 puts SOAPMarshal.dump(Person.new(&quot;NaHi&quot;, 33))
683
684 =&gt;
685
686 &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
687 &lt;env:Envelope xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
688     xmlns:env=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;
689     xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
690   &lt;env:Body&gt;
691     &lt;Person xmlns:n1=&quot;http://www.ruby-lang.org/xmlns/ruby/type/custom&quot;
692         xsi:type=&quot;n1:Person&quot;
693         env:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;
694       &lt;age xsi:type=&quot;xsd:int&quot;&gt;33&lt;/age&gt;
695       &lt;name xsi:type=&quot;xsd:string&quot;&gt;NaHi&lt;/name&gt;
696     &lt;/Person&gt;
697   &lt;/env:Body&gt;
698 &lt;/env:Envelope&gt;
699     </pre></li>
700   </ul></li>
701
702   <li>Installation;
703   <ul>
704     <li>The previous version soap4r/1.5.0 required http-access2 to be installed to build CGI server, but no longer needed fot this purpose now.
705 You can use almost all features of soap4r without http-access2,
706 but for actual usage, consider installing http-access2 for speed and
707 thread-safe SOAP client.</li>
708     <li>Under ruby/1.8, installer installs lib files to rubylibdir(e.g. /usr/local/lib/ruby/1.8) instead of sitelibdir(e.g. /usr/local/lib/ruby/site_ruby/1.8)</li>
709   </ul></li>
710
711   <li>Bug fixes;
712   <ul>
713     <li>Do not introduce XSD constants to toplevel.</li>
714     <li>'NO_PROXY'/'no_proxy' env var was not supported under net/http.  Fixed.</li>
715     <li>Remove some ruby/1.8 dependent codes.  Should work fine under 1.6, too.</li>
716     <li>XSD::XSDString did not check its value space under $KCODE = 'NONE' env for example where iconv module is not installed.</li>
717     <li>XSD::XSDFloat, XSD::XSDDouble: add +/- sign explicitly when stringified and embedded into XML instance.  Ruby's sprintf may format -0.0 as "0.0" (no minus sign) depending on underlying C sprintf implementation.</li>
718   </ul></li>
719 </ul></dd>
720
721 <dt>1.5.0 - September 13, 2003</dt>
722 <dd>Thousands of lines are changed in this release
723 (*.rb in current SOAP4R distribution has 30kloc or over).
724 But the biggest change is coding convention, camelCase to non_camel_case.
725 Though I tried to keep compatibility between 1.5.0 and 1.4.8, but there's no
726 way to keep it at a few point.  If you'll find your code which was developed
727 for 1.4.8 does not run under 1.5.0, feel free to ask
728 <a href="mailto:nakahiro@sarion.co.jp">me</a> to solve the problem.
729 <ul>
730   <li>Dependency libraries;
731   <ul>
732     <li>Add net/http support.  Users can try sample SOAP clients without installing http-access2.  For actual usage, consider installing http-access2 for speed and thread-safe SOAP client.  CAUTION: Building SOAP CGI server needs http-access2 to be installed.</li>
733     <li>Soap4r standalone server requires webrick module to be installed instead of GServer.rb and httpserver.rb.</li>
734     <li>Supports iconv.  To use utf-8, you need to install iconv(included in ruby/1.8) or uconv.</li>
735     <li>Suspend NQXML XML parser support.</li>
736     <li>Remove REXML processor version check.  No longer needed.</li>
737     <li>Rewrite tests with test/unit.</li>
738   </ul></li>
739
740   <li>Features;
741   <ul>
742     <li>Efforts to support messaging with document/literal and ASP.NET interoperability.</li>
743     <li>Add document/literal messaging interface to wsdlDriver.rb.  See a very brief example in sample/soapbox/wsdlDriver.rb though I still didn't try to login to Jabber server..  Jabber folks?</li>
744     <li>XML pretty printing.</li>
745     <li>Better Ruby object mapping.  Rewrote RubytypeFactory to support more Ruby objects.  Tests in AMarshal(http://cvs.m17n.org/~akr/amarshal/) much helped it.  Thanks very much to Tanaka Akira-san.</li>
746     <li>SOAPMarshal accepts IO as an output device like Marshal#dump.</li>
747     <li>SOAPElement: constructor signature change.  Added extraattrs attribute.</li>
748     <li>XSDDateTimeImpl: to_time did not set usec.</li>
749     <li>StreamHandler: add reset method to shutdown a connection to a site.</li>
750   </ul></li>
751
752   <li>Others;
753   <ul>
754     <li>Simplify installer and remove uninstaller.  Saving inventory file in src dir could be the problem.</li>
755     <li>Class/Module architecture relocation.</li>
756     <li>Changing coding convention to fit with Ruby's.  Added lib/soap/compat.rb which defines compatibility definitions for 1.4.8.  lib/soap/compat.rb warns when the library is loaded.</li>
757     <li>Many warnings raised under 1.8, caused by illegal references like XSD::XSDInt in typeMap.rb.  Soap4r defined toplevel::XSDInt.  Define XSD* classes in XSD module and introduce it to toplevel.</li>
758   </ul></li>
759 </ul>
760 </dd>
761
762 <dt>1.4.8 - January 17, 2003</dt>
763 <dd>
764 This version has these enhancements and bug fixes;
765 <ul>
766   <li>Avoid warnings;
767   <ul>
768     <li>Use Object#class instead of Object#type.</li>
769     <li>Avoid implicit use a String as a regexp source.</li>
770   </ul></li>
771   <li>Add wsdlDriver which reads WSDL file and allow client to call procedures.  Here is an example to search Google.
772   <pre>
773     require 'soap/wsdlDriver'
774     searchWord = ARGV.shift
775     # You must get key from http://www.google.com/apis/ to use Google Web APIs.
776     key = File.open(File.expand_path("~/.google_key")).read.chomp
777     GOOGLE_WSDL = 'http://api.google.com/GoogleSearch.wsdl'
778     # Load WSDL and create driver.
779     google = SOAP::WSDLDriverFactory.new(GOOGLE_WSDL).createDriver
780     # Just invoke!
781     result = google.doGoogleSearch(key, searchWord, 0, 10, false, "", false, "", 'utf-8', 'utf-8')
782     result.resultElements.each do |ele|
783       puts "== #{ele.title}: #{ele.URL}"
784       puts ele.snippet
785       puts
786     end
787   </pre></li>
788   <li>WSDLDriver client examples of AmazonWebServices, RAA and RNN (Japanese Ruby blog site) are also included in sample/ dir.</li>
789   <li>Support xmlscan XML processor.</li>
790   <li>Changed XML processor detection scheme.  Search xmlscan, REXML, XMLParser and NQXML in this order.</li>
791   <li>Rewrite charset handling of XML processor.
792   <ul>
793     <li>If you only use us-ascii and utf-8, all XML processors should work without uconv module.</li>
794     <li>With xmlscan/0.2 or later, you can handle euc-jp or shift_jis encoded XML instance WITHOUT uconv module.</li>
795     <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>
796   </ul></li>
797   <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>
798   <li>wsdl2ruby: Add --force option to override existing file.</li>
799   <li>Fixed many bugs.</li>
800 </ul></dd>
801
802 <dt>1.4.7 - September 20, 2002</dt>
803 <dd>
804 This version has these enhancements and bug fixes;
805 <ul>
806 <li>Includes WSDL4R initial release.
807 <ul>
808 <li>Bare in mind this is an alpha level code.
809 I wrote it halfway at half and a year ago,
810 and wrote the rest part in half and a day.
811 No comprehensive test, no strict syntax check, unfriendly error message, etc.
812 Try it if you want, and find bugs in it.</li>
813 <li>WSDL4R can run under XMLParser for now.
814 You might be able to let it run under NQXML/REXML if you know SAX
815 programming well.  How XML processor is used under WSDL4R
816 is as same as under SOAP4R.</li>
817 </ul></li>
818 <li>Added xsd:short support.</li>
819 <li>::Float(double precision float in Ruby) is mapped to xsd:double now.
820 It was mapped to xsd:float.</li>
821 <li>Fixed a bug of year &lt; 0 handling.  B.C. 1 =&gt; -0001 in XMLSchema.</li>
822 <li>Fixed a bug of exception serialization.  Custam mappingRegistry was not used.</li>
823 <li>Fixed a bug of regex for MediaType parsing.</li>
824 </ul>
825 </dd>
826
827 <dt>1.4.5 - May 25, 2002</dt>
828 <dd>
829 This version has these enhancements;
830 <ul>
831 <li>Supports all primitive datatypes of XML Schema Part2 Datatypes except NOTATION.
832 Added types are Duration, gYearMonth, anyURI, QName and so on.</li>
833 <li>Runs much faster than earlier versions.
834 Some performance check and tuning has been done.</li>
835 <li>Supports all Ruby objects marshalling/unmarshalling
836 except some special objects.  See below for more detail.</li>
837 </ul>
838
839 CAUTION: This version requires
840 <a href="http://raa.ruby-lang.org/list.rhtml?name=date2">[RAA:date2]</a> version 3.2 or later and
841 <a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> version F.
842 Please make sure the versions you use.
843 <br/><br/>
844
845 Here is detail of change.
846 <dl>
847 <dt>Datatypes (XMLSchemaDatatypes.rb and baseData.rb)</dt>
848 <dd>
849 <ul>
850 <li>Added duration, gYearMonth, gYear, gMonthDay, gDay, gMonth, anyURI and QName datetypes.
851 All primitive datatypes in XML Schema Part 2 section 3.2 except NOTAION are supported now.</li>
852 <li>Modified XSDDataTime, XSDDate and XSDTime implementation.  These use a DataTime as a data holder.</li>
853 <li>Follow date/3.2: date2.rb -&gt; date.rb.</li>
854 <li>Changed to_s representations of single float and double float.  Thanks to gotoken.</li>
855 <li>XSDFloat: Add '0' if given str ends with 'E'.  Float( "-1.4E" ) might fail on some system.</li>
856 <li>Added SOAPRawString class.  Given string is embedded into XML instance directly.
857 You can use this class to embed (numeric) character references manually.</li>
858 <li>Fixed UTF8 regexp bug.  XSDString uses this regexp to check a given string.</li>
859 <li>Added UT for XMLSchemaDatatypes.rb.  See test/xsd_ut.rb and test/baseData_ut.rb.</li>
860 </ul></dd>
861
862 <dt>SOAP &lt;-&gt; Ruby object mapping (mappingRegistry.rb and rpcUtils.rb)</dt>
863 <dd>
864 <ul>
865 <li>Exception raised from server side could not be mapped to specific exception.  Fixed.</li>
866 <li>Refactoring to avoid *_eval.  Reduced warnings.</li>
867 <li>Added Range marshalling support.</li>
868 <li>Regexp#options support under ruby/1.6.</li>
869 <li>Supports cyclic Range such as;
870 <pre>
871   class Foo
872     attr_accessor :foo
873     def succ; end
874     def &lt;=&gt;( rhs ); end
875   end
876
877   o1 = Foo.new
878   o2 = Foo.new
879   r = o1..o2
880   o1.foo = r
881
882   p SOAPMarshal.load( SOAPMarshal.dump( r ))
883 </pre></li>
884 <li>Supports some instance variable of ruby standard class.
885 But instance variable of Array, Hash, String, Float and Bignum are not supported because of restriction of SOAP encoding format...</li>
886 <li>Alias ::SOAPMarshal to ::SOAP::Marshal.</li>
887 <li>Added Marshal.load and Marshal.dump as aliases to Marshal.unmarshal and
888   Marshal.unmarshal.</li>
889 </ul></dd>
890
891 <dt>misc</dt>
892 <dd>
893 <ul>
894 <li>Dumps what parser is used when $DEBUG.  Try 'ruby -d -rsoap/processor -e 0'</li>
895 <li>Added CGI samples in sample/.</li>
896 <li>Some performance check and tuning has been done on both client and server side.
897 One bottle neck is Kernel.methods which SOAP4R use(d) while mapping SOAP Data Model &lt;-&gt; Ruby object.
898 I replaced it with Object.respond_to? .
899 Another bottle neck of client side is delegate.rb which is used by http-access2.
900 Get <a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> version F.
901 </ul>
902 </dd>
903 </dl>
904 </dd>
905
906 <dt>1.4.4 - May 6, 2002</dt>
907 <dd>
908 This is a bug fix release.
909 Following users should update.
910 <ul>
911 <li>Users who use DateTime datatype.</li>
912 <li>Developers of SOAP client/server which works under multi-thread condition.</li>
913 <li>REXML users.</li>
914 </ul>
915 Fixed bugs.
916 <ul>
917 <li>XSDDataTime: Changed variable name usec to sec_frac.  It's not a micro sec so name usec is misleading.</li>
918 <li>XSDTime: Fixed bugs in usec part.</li>
919 <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.
920 (ex. using a module which requires date.rb like DBI and another module which requires date2.rb).
921 Added a workaround for this.</li>
922 <li>SOAP::Processor was not MT-safe.  Fixed.
923 Projected feature regards to MT are follows.
924 At least I hope so.  Tell me if you find these wrong.
925 <ul>
926 <li>Driver: safe</li>
927 <li>Proxy: safe</li>
928 <li>Server: safe</li>
929 <li>CGIStub: safe</li>
930 <li>StandaloneServer: safe</li>
931 <li>RPCRouter: safe</li>
932 <li>StreamHandler: safe</li>
933 <li>Processor: safe</li>
934 <li>SOAPParser: unsafe</li>
935 <li>SOAPGenerator: unsafe</li>
936 <li>EncodingStyleHandler: unsafe</li>
937 </ul>
938 </li>
939 <li>SOAP4R/1.4.3 supports REXML/2.1.3 but it did not detect REXML processor automatically.</li>
940 </ul>
941 </dd>
942
943 <dt>1.4.3 - April 11, 2002</dt>
944
945 <dd>
946 <dl>
947 <dt>Attention to 1.4.2 or earlier users;</dt>
948 <dd>
949 <ul>
950 <li>Stopped redistributing packages in RAA from this release.
951 Please get <a href="#dependencies">required</a> packages from
952 <a href="http://raa.ruby-lang.org">RAA</a>
953 and install it.</li>
954 <li>It still does NOT support WSDL!</li>
955 </ul>
956 </dd>
957
958 <dt>New features</dt>
959 <dd>
960 <ul>
961 <li>Added REXML parser support.</li>
962 <li>Added uninstaller.</li>
963 <li>Re: samples
964 <ul>
965 <li>Added 3 new samples, Calc, Exchange, and SampleStruct.</li>
966 <li>Use environment variable HTTP_PROXY or http_proxy for http proxy.</li>
967 <li>Removed unreachable services.</li>
968 <li>RAA: Separate iRAA.rb into RAA.rb and iRAA.rb.</li>
969 <li>Added description about <a href="#samples">samples</a> to RELEASE_en.html.</li>
970 </ul>
971 <li>Changed String encoding handling among
972 Ruby object &lt;-&gt; SOAP Data Model &lt;-&gt; XML instance.
973 <ul>
974 <li>Ruby object: $KCODE.</li>
975 <li>SOAP Data Model: utf-8 if uconv module is installed, $KCODE if not.</li>
976 <li>XML instance: Client side use utf-8 if uconv module is installed,
977 $KCODE if not.  Server side try to adjust the request encoding.</li>
978 <li>Use regexp instead of NKF.guess to check if the given String is EUC/SJIS or not.</li>
979 </ul>
980 </li>
981 <li>Added 'addServant' interface to server side.  See sample/Calc/server.rb.</li>
982 <li>Added 'addMethodAs' interface to both server side and client side.
983 See sample/Calc/server2.rb.</li>
984 </ul>
985 </dd>
986
987 <dt>Changes</dt>
988 <dd>
989 <ul>
990 <li>Removed Japanese document.
991 I was tired of maintaining 2 separated documents.
992 Though my English is poor as you see, numbers of readers of my English document
993 should be more than one of my Japanese document.
994 Would you please tell me bug of my English composition and of course in the code?</li>
995 <li>Use
996 <a href="http://raa.ruby-lang.org/list.rhtml?name=devel-logger">[RAA:devel-logger]</a>
997 instead of
998 <a href="http://raa.ruby-lang.org/list.rhtml?name=application">[RAA:application]</a>.
999 </li>
1000 <li>Avoided using exception in soap2obj and reduced warnings in runtime.</li>
1001 <li>XSDDateTime: Use date2 version 3 instead of date3.rb.
1002 Date2 version 3 will be included in standard distribution of Ruby/1.8.</li>
1003 <li>XSDDateTime: Added XSDDateTimeToTime module to extract a Time object from XSDDateTime, XSDDate and XSDTime.</li>
1004 </ul>
1005 </dd>
1006
1007 <dt>Bug fixes</dt>
1008 <dd>
1009 <ul>
1010 <li>Set 'charset=' to content-type when sending back a SOAPFault.
1011 It was not set.</li>
1012 <li>XSDDateTime: Parsedate was not used.  Removed.</li>
1013 <li>Added constant Log as a canonical name of Devel::Logger for backward
1014 compatibility of devel-logger.</li>
1015 <li>Foo = Struct.new(:foo) and Foo = Struct.new("Foo", :foo) could not be
1016   unmarshalled collectly.  All members were unmarshalled as nil.  Fixed.</li>
1017 <li>Rescue ArgumentError(Unrecognized signal) in standaloneServer.rb for mswin32 ruby.</li>
1018 </ul>
1019 </dd>
1020 </dl>
1021 </dd>
1022
1023 <dt>1.4.2 - December 28, 2001</dt>
1024 <dd>
1025 Many changes around Ruby language mapping for SOAP.
1026 I replaced DRb's marshalling format with SOAP marshalling and it passed
1027 about all unit test packed in DRb package.
1028 Only test failed was regards to packet size.
1029 You might be able to use SOAP::Marshal.(un|)marshal for serializing objects
1030 instead of Marshal.(load|dump).
1031
1032 <ul>
1033 <li>Illegal decoding of a position-less element after position-ed element.  Fixed.</li>
1034 <li>Add Rubytype encoding/decoding support: Regexp, Class, Module and Symbol.</li>
1035 <li>Added an option of MappingRegistry to raise an exception when unknown Struct.
1036 The option is set 'false' by default so that same behaviour as before.</li>
1037 </ul></dd>
1038
1039 <dt>1.4.1 - December 7, 2001</dt>
1040 <dd>SOAP4R/1.4 contained many bugs (as usual...)
1041 1.4.1 is a maintenance release.  Some bugs are fixed.
1042 Thanks to Michael Neumann.
1043
1044 <ul>
1045 <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>
1046 <li>Fixed charset handling.  Illegal charset was set when automatic XML processor detecting.</li>
1047 <li>Removed unused code(self.decode) in element.rb.</li>
1048 <li>Illegal constant access when SOAP format error.  Fixed.</li>
1049 <li>LiteralEncodingNamespace moved to SOAP module.</li>
1050 </ul></dd>
1051
1052
1053 <dt>1.4 - December 5, 2001</dt>
1054 <dd><ul>
1055 <li>Datatypes:
1056 <ul>
1057 <li>XSDFloat: Bug in rounding double float to single float.  Fixed.</li>
1058 <li>SOAPElement: Added for literal encoding.</li>
1059 <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>
1060 <li>SOAPHeaderItem: Changed interface for easy use.</li>
1061 </ul></li>
1062
1063 <li>SOAP Encoding:
1064 <ul>
1065 <li>Encoding by itself, not using NQXML's tree object model.</li>
1066 <li>At last, supported multi-ref encoding!</li>
1067 <li>marshal.rb: Marshalling with Envelope and Body.  To marshal multi-ref'd object, Body is needed. CAUTION: Not compatible between former implementation.</li>
1068 <li>Add EncodingStyleHandlerLiteral and set it to default.</li>
1069 <li>Renamed encoding.rb to encodingStyleHandler.rb.</li>
1070 <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>
1071 <li>Changed element name escape.
1072 <ul>
1073 <li>:: &lt;=&gt; \.\.</li>
1074 <li>[^a-zA-Z0-9_-] &lt;=&gt; \.[0-F][0-F]
1075 </ul>
1076 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>
1077 </ul></li>
1078
1079 <li>RPC related functions:
1080 <ul>
1081 <li>Driver: Added 'invoke' method for messaging.</li>
1082 <li>Driver: Content of SOAPFault detail element is set in the exception which is thrown from SOAP Node to client application.</li>
1083 <li>Processor: Changed Processor.(un|)marshal interface.  An instance of NS for parsing/generating XML instance is prepared in parser/generator.</li>
1084 <li>mappingRegistry.rb is devided from rpcUtils.rb.</li>
1085 </ul></li>
1086 </ul></dd>
1087
1088
1089 <dt>1.3.8 - October 4, 2001</dt>
1090 <dd>Feedback from
1091 <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab &quot;Round 2&quot;</a>
1092 and Michael Neumann.  Thanks!
1093
1094 <ul>
1095 <li>Datatypes:
1096 <ul>
1097 <li>XSDFloat: Creating float data from junk string such as "123.0junk" was
1098   converted to 0.0.  It should be avoided.  Fixed.</li>
1099 <li>XSDFloat: Fixed double -&gt; single rounding code.</li>
1100 </ul></li>
1101
1102 <li>RPC related functions:
1103 <ul>
1104 <li>Changed typename <=> NCName strategy.  '::' &lt;=&gt; '.'</li>
1105 <li>Added mappingRegistry argument to interfaces for SOAP object creation.</li>
1106 </ul></li>
1107
1108 <li>Others:
1109 <ul>
1110 <li>Set faultstring '(No faultstring)' to SOAP Fault when empty faultstring element.</li>
1111 <li>server.rb: Added mappingRegistry interface.</li>
1112 <li>marshal.rb: Create NCName from typename.</li>
1113 </ul></li>
1114 </ul></dd>
1115
1116
1117 <dt>1.3.7 - August 24, 2001</dt>
1118 <dd>Feedback from
1119 <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab &quot;Round 2&quot;</a>
1120 and Michael Neumann.  Thanks!
1121
1122 <ul>
1123 <li>Datatypes:
1124 <ul>
1125 <li>All datatypes try to keep nil correctly.</li>
1126 <li>XSDInt/Integer/Long: to_i -&gt; Integer() to detect format error.</li>
1127 <li>XSDDateTime, XSDDate, XSDTime: Add trailing 'Z' to indicate UTC.</li>
1128 <li>SOAPStruct: Accept untyped struct.</li>
1129 <li>Map(Hash): Let &lt;item&gt; untyped.</li>
1130 <li>Apache allows only 'item' in Map type.</li>
1131 </ul></li>
1132
1133 <li>Stream handler:
1134 <ul>
1135 <li>Removed MPOST support.</li>
1136 <li>ECONNRESET was not caught.  Fixed.</li>
1137 <li>Added timeout support.</li>
1138 </ul></li>