Invk file for inherited services. Issue, proposed solution and question

(Henk Post) #1

Suppose to a default (the one with ‘GetServerTime and Sum’ RODL I add a NewServiceChild that inherits from NewService.

If I call from a ClientSide (using SOAP), the NewServiceChild.Sum(1,2) I get the following response (copied only the relevant part):


However, since I called the NewServiceChild service I would expect this part to be:


Proposed solution
I can achieve this by a change in the NewLibrary_Invk.pas that is the result of the following change in uRODLToPascalInvk.pas (from line 510 in version

(*    if anOperation.Info.Attributes.Values['OutputMessageName'] <> '' then
    Write(Format('    __Message.InitializeResponseMessage(__Transport, ''%s'', ''%s'', ''%s'');',[aLibrary.Name, aService.Name, anOperation.Info.Attributes.Values['OutputMessageName']]))
  else *)

//  Write(Format('    __Message.InitializeResponseMessage(__Transport, ''%s'', ''%s'', ''%sResponse'');',[aLibrary.Name, aService.Name, anOperation.Name])); //Original version
   Write(Format('    __Message.InitializeResponseMessage(__Transport, ''%s'', __Message.InterfaceName, ''%sResponse'');',[aLibrary.Name, anOperation.Name])); //updated version

Even after re-installing all packages (especially the RemObjects_Server_IDE_D25), the IDE will recreate the original Invk file, neglecting the change that I mad in uROPascalInvk.

Is there a way that I could use my proposed patch for the ‘IDE version that recreates the _Invk files?’. Furthermore, I do hope that you will use my proposed solution in each next version of the SDK.

(RemObjects) #2

Thanks, logged as bugs://79295

(RemObjects) #3

bugs://79295 got closed with status fixed.

(EvgenyK) #4

Nowadays we use CodeGen4 instead of Codegen1 shipped with Delphi. Those files (uRODLToPascal*.pas) are used only in Lazarus/Non-Windows configurations. I’ll remove them from Delphi IDE packages later.

(Henk Post) #5


If the Codegen1 is really obsolete it might be a good idea to remove uROLDToPascal*.pas files. But if they are still producing valid code, it might be useful to provide them. A user can modify the code and call the convrsion routine manually.

This is they way I use a work-around for the ‘bug’ mentioned above.

Thanks for logging and fixing this bug!

(EvgenyK) #6

as a temporary workaround, you can update _Invk manually and disable autogeneration of _Intf and _Invk via replacing

{#ROGEN:MegaDemoLibrary.rodl} // RemObjects: Careful, do not remove!


{#.ROGEN:MegaDemoLibrary.rodl} // RemObjects: Careful, do not remove!

(EvgenyK) #7

fyi: we have released beta, it contains fix for this issue.