This document describes the files included with this SOAP runtime and importer update and provides instructions on how to use the update.
The following table lists the runtime files included in the update:
CompVer.inc |
Shared include file to detect version of |
TypeTrans.pas |
|
Rio.pas |
|
InvokeRegistry.pas |
|
OPToSOAPDomConv.pas |
|
WebServExp.pas |
|
WSDLPub.pas |
|
XSBuiltIns.pas |
|
PrivateHeap.pas |
Included for D7 and D2005 users. Resolves DEP issue. |
SoapHTTPTrans.pas |
|
In addition to the above files, the WSDLImp.exe utility is also
included in this update. WSDLImp is used to generate
To use the updated runtime in BDS2006:
This section describes errors you might encounter when building your project with the updated runtime:
The new importer generates code that requires the updated runtime because of the way it encodes the traits of an XML element into a published property. Previous importers used the ‘stored’ value of ‘property’ declarations to flag arrays that mapped to unbounded XML elements or simple types that should be stored as XML attributes. Since ‘stored’ allows for only a Boolean value, this approach did not cater for other traits of an XML element. The new importer uses the ‘Index’ value of ‘property’ declarations to tag optional, unbounded, text, etc. Note that the updated runtime supports the use of the ‘stored’ value generated by earlier importers.
Please post any feedback regarding the update to the Borland.public.delphi.soap or Borland.public.delphi.wsdl newsgroups. Or feel free to email me directly at bbabet@codegear.com. Thank you.
The following is not an exhaustive list of the changes. It’s a list of the ones I could easily spot by running through check-in logs:
QC#7954 Memory leak
in WSDL publishing logic for complex types
QC#9550 Handle '0'
and '1' as valid boolean values
QC#9547 Support for
time-zones with no transition dates
QC#15336
SOAP runtime modifies 'DecimalSeparator' global (Also #QC#5636,
#30095, #20405)
QC#38057
Dynamic array serialization mishandles ref-count (
QC#38709
Support for polymorphic types (illustrated using MapPoint.NET) -
(
QC#28012
Bug in TXSDuration.GetDecimalSecond
QC#28003
Incorrect namespace on element nodes (
QC#8397
OnBeforeExecute ignores changes to SOAPRequest variable
QC#31556
AV on deserializing empty string as dateTime.
QC#10969
Handle XML attributes that map to TXSxxxx types
QC#26063
Fix performance when handling multiref nodes and arrays
QC#26373
Remove unnecessary formatting of XML
QC#15331
Delphi-generated WSDLs are rejected by Java WSDL importers
QC#22485
Array Deserialization logic does not handle non-ntElement (such
as comment) nodes
QC#3980 Logic that
serializes array properties AV when a setter is used
QC#33205
Importer mishandles cases where wrapper element does not match
operation name (NOTE: We won't unwrap anymore).
Importer issues:
(a) Various issues QC#31143, for Amazon'
(b) Incorrect code generated Amazon's Alexa (QC#11920)
(c) Incorrect code generated for Inline enumerations
(QC#9309),
(d) No Unbounded element support (QC#240056, 28062, 30712)
(e) AV on GoogleSearch
(f) Need to check Assigned(X) before invoking X.Free.
(g) Incorrect code for Complex type with simple content
(Amazon's "Creator" for example)
(h) Incorrect code gen. for eBay's WSDL
(i) Does not properly decide when to unwrap
doc|lit services
(j) Does not support imported or included schemas
Misc:
Serialization of zeroed-out array of bytes fixed
Now sets utf-8 in HTTP content-type header to support
international characters (XML is already utf-8 encoded)
TXSxxxx types have sensible defaults. For example, TXSDateTime defaults to "0001-01-01T00:00:00" instead of "1899-12-30T00:00:00.000".