 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Jean-Marie Babet Guest
|
Posted: Sat Mar 17, 2007 5:43 am Post subject: SOAP Runtime/Importer Updates |
|
|
Hello,
I just finished merging the D2007 changes in the D7/D2005 SOAP sources. This
came up in the CodeRage session this week as some users would like to talk
to MapPoint/eBay/Amazon/etc but are still working on a project that cannot
upgrade to D2007. If anyone is interested in trying the changes, please let
me know. I've emailed the runtime and importer updates to people who have
contacted me via email but if there are others would not mind trying out, I
would be happy to send out the updates and get some feedback. Thank you.
Cheers,
Bruneau.
PS: Note the update can work in either interface-breaking or
interface-compatible mode. With the latter, you won't get all
fixes/enhancements but any components/dcu that you have that relies on the
shipping interface will still work. In the former mode, you'll have to
rebuild any unit that uses soap units but you'll get all D2007 goodies -
such as support for unqualified/unbounded/optional elements. The former mode
will be interesting to those dealing with issues such as DEP, failure to map
renamed XML names, memory leaks on WSDL publish or dynamic arrays, etc. |
|
| Back to top |
|
 |
Robert Loof Guest
|
Posted: Sat Mar 17, 2007 7:09 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hi Bruneau,
Much appreciated if you could send the updates to me. Just inherited a
D7 based project.
Cheers,
Robert |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Sat Mar 17, 2007 8:12 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello,
I've email you the updates. Please post (or email me) any feedback. Thank
you.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
SRV Guest
|
Posted: Sat Mar 17, 2007 12:40 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hi Bruneau,
I'd like to try the updates.
Saludos
Francisco
On Fri, 16 Mar 2007 16:43:49 -0800, "Jean-Marie Babet"
<bbabet (AT) borland (DOT) com> wrote:
| Quote: | Hello,
I just finished merging the D2007 changes in the D7/D2005 SOAP sources. This
came up in the CodeRage session this week as some users would like to talk
to MapPoint/eBay/Amazon/etc but are still working on a project that cannot
upgrade to D2007. If anyone is interested in trying the changes, please let
me know. I've emailed the runtime and importer updates to people who have
contacted me via email but if there are others would not mind trying out, I
would be happy to send out the updates and get some feedback. Thank you.
Cheers,
Bruneau.
PS: Note the update can work in either interface-breaking or
interface-compatible mode. With the latter, you won't get all
fixes/enhancements but any components/dcu that you have that relies on the
shipping interface will still work. In the former mode, you'll have to
rebuild any unit that uses soap units but you'll get all D2007 goodies -
such as support for unqualified/unbounded/optional elements. The former mode
will be interesting to those dealing with issues such as DEP, failure to map
renamed XML names, memory leaks on WSDL publish or dynamic arrays, etc.
|
|
|
| Back to top |
|
 |
Jeferson Oliveira Guest
|
Posted: Sun Mar 18, 2007 8:26 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello,
An AV happens when I attempt to import a WSDL of an IAppServerSOAP
interface, as already reported at QC #8275
(http://qc.codegear.com/qc/wc/qcmain.aspx?d=8275).
I have noticed that when the SoapDataModule has only one method the
error doesn't occur, but if it has none or more than one the AV happens.
I have done my tests using D7 and BDS2006 and both result in the same error.
When trying to import the XML file using the updated WSDLImporter
command line tool (WSDLImp.exe 16-mar-2007 4:58pm) I got the message
"*Error*: Privileged instruction" and the .pas file was not generated.
The WSDL I'm trying to import is available at:
http://jfo.no-ip.info/WebServices/WSDLTest.dll/wsdl/IDados
I would appreciate any suggestions on how to workaround this problem.
Regards,
Jeferson Oliveira
Brazil |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Mon Mar 19, 2007 12:22 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello Jeferson,
Someone at CodeGear contacted me about a similar (same?) issue on Friday.
The issue is that this will happen for any WebService that exposes no
methods from the importer's point of view. The WSDL of a SoapModule that
exposes IAppServer has 7 methods in it. The importer has some logic that
basically says if the first 7 methods of a WebService matches those of
IAppServer, I'll skip them and simply make the interface derive from
IAppServerSOAP instead of IInvokable.
So in the case of IAppServer-based WebServices, you'll get something along
the lines of:
IDados = interface(IAppServerSOAP)
['{C5DE1E6B-D896-C265-5E75-AD96B12103FE}']
end;
That's all good except later there's logic that attempts to register the
SOAPAction header f each of the 7 methods found. That logic has a bug in it
in that it does not check if the methods found earlier were axed.
I have a quick fix that simply checks if the method count on the interface
is zero before proceeding. If you'd like I'd be happy to forward you a copy
of that importer. Sometime next week I'll add some tests to our unit test to
catch this case. While perusing that area I also noticed that the code would
fail also for services that want empty SOAPAction headers. I'll address this
and add unit-tests for these cases too.
Let me know if you'd like me to forward you a copy of the updated importer.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
Jeferson Oliveira Guest
|
Posted: Mon Mar 19, 2007 1:28 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Jean-Marie Babet escreveu:
| Quote: | Someone at CodeGear contacted me about a similar (same?)
|
Yes. The same.
| Quote: | The issue is that this will happen for any WebService that exposes no
methods
|
It's true. And also is true that if I add one (and just one) method to
the SoapDataModule, the importer can create the .pas file without any
problems, but if I add a second method (as in this case
http://jfo.no-ip.info/WebServices/WSDLTest.dll/wsdl/IDados) the AV
happens again.
| Quote: | Let me know if you'd like me to forward you a copy of the updated importer.
|
A newest than that one that I had already tested (WSDLImp.exe
16-mar-2007 4:58pm)? If so, I would appreciate so much. Send me please.
Thanks for your answer.
Regards,
Jeferson Oliveira
Brazil |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Mon Mar 19, 2007 2:23 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello Francisco,
I sent you the importer/runtime updates along with a little README file.
Please let me know if you run into any difficulties using these files. Thank
you.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Mon Mar 19, 2007 2:59 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello Jeferson,
| Quote: | A newest than that one that I had already tested (WSDLImp.exe
16-mar-2007 4:58pm)? If so, I would appreciate so much. Send me please.
|
Yes, the version is '5534'. You can see that at the top of the generated
file - as in:
// ************************************************************************
//
// The types declared in this file were generated from data read from the
{ .... }
// (3/18/2007 2:54:00 PM - - $Rev: 5534 $) <<<=========== REV#
// ************************************************************************
//
unit IDados2;
{ .... }
IDados = interface(IAppServerSOAP)
['{C5DE1E6B-D896-C265-5E75-AD96B12103FE}']
procedure Test1; stdcall;
function Test2: WideString; stdcall;
end;
{ .... }
I'm emailing you a copy. Please let me know if this does not solve the
problem.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
Jeferson Oliveira Guest
|
Posted: Mon Mar 19, 2007 3:12 am Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Jean-Marie Babet escreveu:
| Quote: | Yes, the version is '5534'. You can see that at the top of the generated
file - as in:
|
Pretty good Bruneau!
Now I could import without any errors.
I hope this importer could be available as an update for Delphi 7,
BDS2006 and/or Delphi2007 linked to QC 8275.
Thank you so much for your help.
Regards,
Jeferson Oliveira
Brazil |
|
| Back to top |
|
 |
J.L.Rocha Guest
|
Posted: Mon Mar 19, 2007 1:39 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hi Bruneau,
I'd like to try the updates for D2006, too.
Thanks in advance,
--
Jose Luis Rocha |
|
| Back to top |
|
 |
Örjan Guest
|
Posted: Mon Mar 19, 2007 7:38 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
I would like to try the updates as we are having a problem with our
current version of Delphi in BDS 2006.
Regards,
Örjan Jämte |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Mon Mar 19, 2007 10:12 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello Örjan,
I've sent you the updates. Please let me know if you run into any
difficulties using the files. Thank you.
Cheers,
Bruneau.
Change Log
The following is not an exhaustive list of the changes. It's a list of the
ones I could easily spot by running through recent 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 (Also QC#21223)
QC#38709 Support for polymorphic types (illustrated using MapPoint.NET) -
(Also QC#32718)
QC#28012 Bug in TXSDuration.GetDecimalSecond
QC#28003 Incorrect namespace on element nodes (Also QC#31185)
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 Alex (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". |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Mon Mar 19, 2007 10:15 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Hello Jose,
I've sent you the files. Please let meknow if you run into any difficulties
using the files. Thanks for trying this out.
Cheers,
Bruneau.
Change Log
The following is not an exhaustive list of the changes. It's a list of the
ones I could easily spot by running through recent 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 (Also QC#21223)
QC#38709 Support for polymorphic types (illustrated using MapPoint.NET) -
(Also QC#32718)
QC#28012 Bug in TXSDuration.GetDecimalSecond
QC#28003 Incorrect namespace on element nodes (Also QC#31185)
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 Alex (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". |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Mon Mar 19, 2007 10:23 pm Post subject: Re: SOAP Runtime/Importer Updates |
|
|
Here's a list of the changes in the update that I spotted going through
recent check-in logs. If you're using D7 or D2005 you'll also get changes
made in later versions. If there's a particular issue that you'd like to
know about, please feel free to post here or email me and I'll relay the
status. Also note that we've started work on the next patch/update.
Couple of the items mentioned below were in HOTFIX10 of BDS2006. They were
reworked to use a helper-class in order to be interface-compatible with
shipping BDS2006. So you no longer have to have special conditional defines
to enable the fixes if you're BDS2006.
Cheers,
Bruneau.
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 (Also QC#21223)
QC#38709 Support for polymorphic types (illustrated using MapPoint.NET) -
(Also QC#32718)
QC#28012 Bug in TXSDuration.GetDecimalSecond
QC#28003 Incorrect namespace on element nodes (Also QC#31185)
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 Alex (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". |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|