metadata service : regenerate from wsdl file

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1310 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2010-09-01 00:29:10 +00:00
parent d246ccc22b
commit ed28927351
5 changed files with 399 additions and 281 deletions

View File

@ -1,252 +1,250 @@
{
This file is part of the Web Service Toolkit
Copyright (c) 2006 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This unit has been produced by ws_helper.
Input unit name : "metadata_service".
This unit name : "metadata_service".
Date : "23/08/2010 16:10:07".
}
{$INCLUDE wst_global.inc}
unit metadata_service;
{$IFDEF FPC}
{$mode objfpc} {$H+}
{$ENDIF}
{$IFNDEF FPC}
{$DEFINE WST_RECORD_RTTI}
{$ENDIF}
interface
uses
Classes, SysUtils,
base_service_intf, metadata_repository;
uses
SysUtils, Classes, TypInfo, base_service_intf, service_intf,
metadata_repository;
const
sNAME_SPACE = 'metadata_service';
sUNIT_NAME = 'metadata_service';
type
TWSTMtdOperationParam = class;
TWSTMtdServiceOperation = class;
TWSTMtdService = class;
TWSTMtdRepository = class;
TWSTMtdOperationParamArray = class;
TWSTMtdServiceOperationArray = class;
TWSTMtdServiceArray = class;
TWSTMtdOperationParam = class(TBaseComplexRemotable)
private
FModifier: TOperationParamFlag;
FName: string;
FTypeName: string;
FName : String;
FTypeName : String;
FModifier : TOperationParamFlag;
published
property Name : string read FName write FName;
property TypeName : string read FTypeName write FTypeName;
property Name : String read FName write FName;
property TypeName : String read FTypeName write FTypeName;
property Modifier : TOperationParamFlag read FModifier write FModifier;
end;
TWSTMtdOperationParamArray = class(TBaseObjectArrayRemotable)
protected
function GetParam(AIndex: Integer): TWSTMtdOperationParam;
public
class function GetItemClass():TBaseRemotableClass;override;
property Item[AIndex:Integer] : TWSTMtdOperationParam read GetParam;default;
end;
TWSTMtdServiceOperation = class(TBaseComplexRemotable)
private
FName: string;
FParams: TWSTMtdOperationParamArray;
function GetParams: TWSTMtdOperationParamArray;
procedure SetParams(const AValue: TWSTMtdOperationParamArray);
FName : String;
FParams : TWSTMtdOperationParamArray;
public
constructor Create();override;
destructor Destroy();override;
procedure FreeObjectProperties();override;
published
property Name : string read FName write FName;
property Params : TWSTMtdOperationParamArray read GetParams write SetParams;
end;
TWSTMtdServiceOperationArray = class(TBaseObjectArrayRemotable)
private
function GetOperation(AIndex: Integer): TWSTMtdServiceOperation;
public
class function GetItemClass():TBaseRemotableClass;override;
property Item[AIndex:Integer] : TWSTMtdServiceOperation read GetOperation;default;
property Name : String read FName write FName;
property Params : TWSTMtdOperationParamArray read FParams write FParams;
end;
TWSTMtdService = class(TBaseComplexRemotable)
private
FName: string;
FOperations: TWSTMtdServiceOperationArray;
function GetOperations: TWSTMtdServiceOperationArray;
procedure SetOperations(const AValue: TWSTMtdServiceOperationArray);
FName : String;
FOperations : TWSTMtdServiceOperationArray;
public
constructor Create();override;
destructor Destroy();override;
procedure FreeObjectProperties();override;
published
property Name : string read FName write FName;
property Operations : TWSTMtdServiceOperationArray read GetOperations write SetOperations;
property Name : String read FName write FName;
property Operations : TWSTMtdServiceOperationArray read FOperations write FOperations;
end;
TWSTMtdRepository = class(TBaseComplexRemotable)
private
FName : String;
FNameSpace : String;
FServices : TWSTMtdServiceArray;
public
constructor Create();override;
procedure FreeObjectProperties();override;
published
property Name : String read FName write FName;
property NameSpace : String read FNameSpace write FNameSpace;
property Services : TWSTMtdServiceArray read FServices write FServices;
end;
TWSTMtdOperationParamArray = class(TBaseObjectArrayRemotable)
private
function GetItem(AIndex: Integer): TWSTMtdOperationParam;
public
class function GetItemClass():TBaseRemotableClass;override;
property Item[AIndex:Integer] : TWSTMtdOperationParam Read GetItem;Default;
end;
TWSTMtdServiceOperationArray = class(TBaseObjectArrayRemotable)
private
function GetItem(AIndex: Integer): TWSTMtdServiceOperation;
public
class function GetItemClass():TBaseRemotableClass;override;
property Item[AIndex:Integer] : TWSTMtdServiceOperation Read GetItem;Default;
end;
TWSTMtdServiceArray = class(TBaseObjectArrayRemotable)
protected
function GetService(AIndex: Integer): TWSTMtdService;
private
function GetItem(AIndex: Integer): TWSTMtdService;
public
class function GetItemClass():TBaseRemotableClass;override;
Property Item[AIndex:Integer] : TWSTMtdService Read GetService;Default;
property Item[AIndex:Integer] : TWSTMtdService Read GetItem;Default;
end;
TWSTMtdRepository = class(TBaseComplexRemotable)
private
FName: string;
FNameSpace: string;
FServices : TWSTMtdServiceArray;
function GetServices: TWSTMtdServiceArray;
procedure SetServices(const AValue: TWSTMtdServiceArray);
public
constructor Create();override;
destructor Destroy();override;
published
property Name : string read FName write FName;
property NameSpace : string read FNameSpace write FNameSpace;
property Services : TWSTMtdServiceArray read GetServices write SetServices;
end;
{The unique metadata public service}
IWSTMetadataService = interface
IWSTMetadataService = interface(IInvokable)
['{804A3825-ADA5-4499-87BF-CF5491BFD674}']
function GetRepositoryList():TArrayOfStringRemotable;
function GetRepositoryInfo(const AName : string):TWSTMtdRepository;
function GetRepositoryInfo(
const AName : String
):TWSTMtdRepository;
end;
procedure Register_metadata_service_NameSpace();
implementation
procedure Register_metadata_service_NameSpace();
begin
GetModuleMetadataMngr().SetRepositoryNameSpace('metadata_service',sWST_BASE_NS);
end;
procedure Register_metadata_service_ServiceMetadata();
procedure Register_metadata_service_Types();
var
r : TTypeRegistry;
begin
r := GetTypeRegistry();
r.Register(sWST_BASE_NS,TypeInfo(TOperationParamFlag),'TOperationParamFlag');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdOperationParam),'TWSTMtdOperationParam');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdOperationParamArray),'TWSTMtdOperationParamArray');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdOperationParam),'TWSTMtdOperationParam');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdOperationParamArray),'TWSTMtdOperationParamArray');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdServiceOperation),'TWSTMtdServiceOperation');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdServiceOperationArray),'TWSTMtdServiceOperationArray');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdService),'TWSTMtdService');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdServiceArray),'TWSTMtdServiceArray');
r.Register(sWST_BASE_NS,TypeInfo(TWSTMtdRepository),'TWSTMtdRepository');
end;
{ TWSTMtdServiceArray }
function TWSTMtdServiceArray.GetService(AIndex: Integer): TWSTMtdService;
begin
Result := inherited Item[AIndex] as TWSTMtdService;
end;
class function TWSTMtdServiceArray.GetItemClass(): TBaseRemotableClass;
begin
Result := TWSTMtdService;
end;
{ TWSTMtdRepository }
function TWSTMtdRepository.GetServices: TWSTMtdServiceArray;
begin
Result := FServices;
end;
procedure TWSTMtdRepository.SetServices(const AValue: TWSTMtdServiceArray);
begin
FServices.Assign(AValue);
end;
constructor TWSTMtdRepository.Create();
begin
inherited Create();
FServices := TWSTMtdServiceArray.Create();
end;
destructor TWSTMtdRepository.Destroy();
begin
FreeAndNil(FServices);
inherited Destroy();
end;
{ TWSTMtdOperationParamArray }
function TWSTMtdOperationParamArray.GetParam(AIndex: Integer): TWSTMtdOperationParam;
begin
Result := inherited Item[AIndex] as TWSTMtdOperationParam;
end;
class function TWSTMtdOperationParamArray.GetItemClass(): TBaseRemotableClass;
begin
Result := TWSTMtdOperationParam;
end;
Implementation
uses
record_rtti, wst_types;
{ TWSTMtdServiceOperation }
function TWSTMtdServiceOperation.GetParams: TWSTMtdOperationParamArray;
begin
Result := FParams;
end;
procedure TWSTMtdServiceOperation.SetParams(const AValue: TWSTMtdOperationParamArray);
begin
FParams.Assign(AValue);
end;
constructor TWSTMtdServiceOperation.Create();
begin
inherited Create();
FParams := TWSTMtdOperationParamArray.Create();
end;
destructor TWSTMtdServiceOperation.Destroy();
procedure TWSTMtdServiceOperation.FreeObjectProperties();
begin
FreeAndNil(FParams);
inherited Destroy();
end;
{ TWSTMtdServiceOperationArray }
function TWSTMtdServiceOperationArray.GetOperation(AIndex: Integer): TWSTMtdServiceOperation;
begin
Result := inherited Item[AIndex] as TWSTMtdServiceOperation;
end;
class function TWSTMtdServiceOperationArray.GetItemClass(): TBaseRemotableClass;
begin
Result := TWSTMtdServiceOperation;
if Assigned(FParams) then
FreeAndNil(FParams);
inherited FreeObjectProperties();
end;
{ TWSTMtdService }
function TWSTMtdService.GetOperations: TWSTMtdServiceOperationArray;
begin
Result := FOperations;
end;
procedure TWSTMtdService.SetOperations(const AValue: TWSTMtdServiceOperationArray);
begin
FOperations.Assign(AValue);
end;
constructor TWSTMtdService.Create();
begin
FOperations := TWSTMtdServiceOperationArray.Create();
inherited Create();
FOperations := TWSTMtdServiceOperationArray.Create();
end;
destructor TWSTMtdService.Destroy();
procedure TWSTMtdService.FreeObjectProperties();
begin
FreeAndNil(FOperations);
inherited Destroy();
if Assigned(FOperations) then
FreeAndNil(FOperations);
inherited FreeObjectProperties();
end;
{ TWSTMtdRepository }
constructor TWSTMtdRepository.Create();
begin
inherited Create();
FServices := TWSTMtdServiceArray.Create();
end;
procedure TWSTMtdRepository.FreeObjectProperties();
begin
if Assigned(FServices) then
FreeAndNil(FServices);
inherited FreeObjectProperties();
end;
{ TWSTMtdOperationParamArray }
function TWSTMtdOperationParamArray.GetItem(AIndex: Integer): TWSTMtdOperationParam;
begin
Result := TWSTMtdOperationParam(Inherited GetItem(AIndex));
end;
class function TWSTMtdOperationParamArray.GetItemClass(): TBaseRemotableClass;
begin
Result:= TWSTMtdOperationParam;
end;
{ TWSTMtdServiceOperationArray }
function TWSTMtdServiceOperationArray.GetItem(AIndex: Integer): TWSTMtdServiceOperation;
begin
Result := TWSTMtdServiceOperation(Inherited GetItem(AIndex));
end;
class function TWSTMtdServiceOperationArray.GetItemClass(): TBaseRemotableClass;
begin
Result:= TWSTMtdServiceOperation;
end;
{ TWSTMtdServiceArray }
function TWSTMtdServiceArray.GetItem(AIndex: Integer): TWSTMtdService;
begin
Result := TWSTMtdService(Inherited GetItem(AIndex));
end;
class function TWSTMtdServiceArray.GetItemClass(): TBaseRemotableClass;
begin
Result:= TWSTMtdService;
end;
procedure Register_metadata_service_ServiceMetadata();
var
mm : IModuleMetadataMngr;
begin
mm := GetModuleMetadataMngr();
mm.SetRepositoryNameSpace(sUNIT_NAME, sNAME_SPACE);
mm.SetServiceCustomData(
sUNIT_NAME,
'IWSTMetadataService',
'FORMAT_Style',
'rpc'
);
mm.SetOperationCustomData(
sUNIT_NAME,
'IWSTMetadataService',
'GetRepositoryList',
'_E_N_',
'GetRepositoryList'
);
mm.SetOperationCustomData(
sUNIT_NAME,
'IWSTMetadataService',
'GetRepositoryInfo',
'_E_N_',
'GetRepositoryInfo'
);
end;
var
typeRegistryInstance : TTypeRegistry = nil;
initialization
Register_metadata_service_Types();
end.
typeRegistryInstance := GetTypeRegistry();
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdOperationParam),'TWSTMtdOperationParam');
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdServiceOperation),'TWSTMtdServiceOperation');
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdService),'TWSTMtdService');
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdRepository),'TWSTMtdRepository');
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdOperationParamArray),'TWSTMtdOperationParamArray');
typeRegistryInstance.ItemByTypeInfo[TypeInfo(TWSTMtdOperationParamArray)].RegisterExternalPropertyName(sARRAY_ITEM,'Item');
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdServiceOperationArray),'TWSTMtdServiceOperationArray');
typeRegistryInstance.ItemByTypeInfo[TypeInfo(TWSTMtdServiceOperationArray)].RegisterExternalPropertyName(sARRAY_ITEM,'_Item');
typeRegistryInstance.Register(sNAME_SPACE,TypeInfo(TWSTMtdServiceArray),'TWSTMtdServiceArray');
typeRegistryInstance.ItemByTypeInfo[TypeInfo(TWSTMtdServiceArray)].RegisterExternalPropertyName(sARRAY_ITEM,'Item');
End.

View File

@ -0,0 +1,89 @@
<?xml version="1.0"?>
<definitions name="metadata_service" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="metadata_service" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="metadata_service">
<types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="metadata_service" targetNamespace="metadata_service">
<xsd:complexType name="TWSTMtdOperationParam">
<xsd:sequence/>
</xsd:complexType>
<xsd:complexType name="TWSTMtdServiceOperation">
<xsd:sequence>
<xsd:element name="Params" type="tns:TWSTMtdOperationParamArray"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TWSTMtdService">
<xsd:sequence>
<xsd:element name="Operations" type="tns:TWSTMtdServiceOperationArray"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TWSTMtdRepository">
<xsd:sequence>
<xsd:element name="Services" type="tns:TWSTMtdServiceArray"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TWSTMtdOperationParamArray">
<xsd:sequence>
<xsd:element name="item" type="tns:TWSTMtdOperationParam" maxOccurs="unbounded" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TWSTMtdServiceOperationArray">
<xsd:sequence>
<xsd:element name="item" type="tns:TWSTMtdServiceOperation" maxOccurs="unbounded" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TWSTMtdServiceArray">
<xsd:sequence>
<xsd:element name="item" type="tns:TWSTMtdService" maxOccurs="unbounded" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="GetRepositoryList"/>
<message name="GetRepositoryListResponse">
<part name="Result" type="xsd:TArrayOfStringRemotable"/>
</message>
<message name="GetRepositoryInfo">
<part name="AName" type="tns:String"/>
</message>
<message name="GetRepositoryInfoResponse">
<part name="Result" type="tns:TWSTMtdRepository"/>
</message>
<portType name="IWSTMetadataService">
<documentation>
<GUID value="{804A3825-ADA5-4499-87BF-CF5491BFD674}"/>
</documentation>
<operation name="GetRepositoryList">
<input message="tns:GetRepositoryList"/>
<output message="tns:GetRepositoryListResponse"/>
</operation>
<operation name="GetRepositoryInfo">
<input message="tns:GetRepositoryInfo"/>
<output message="tns:GetRepositoryInfoResponse"/>
</operation>
</portType>
<binding name="IWSTMetadataServiceBinding" type="tns:IWSTMetadataService">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetRepositoryList">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="metadata_service"/>
</input>
<output>
<soap:body use="literal" namespace="metadata_service"/>
</output>
</operation>
<operation name="GetRepositoryInfo">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="metadata_service"/>
</input>
<output>
<soap:body use="literal" namespace="metadata_service"/>
</output>
</operation>
</binding>
<service name="IWSTMetadataService">
<port name="IWSTMetadataServicePort" binding="tns:IWSTMetadataServiceBinding">
<soap:address location=""/>
</port>
</service>
</definitions>

View File

@ -1,7 +1,7 @@
GetWSTResourceManager().AddResource('METADATA_SERVICE',
#0#0#0#20'WST_METADATA_0.2.2.0'#0#0#0#16'metadata_service'#1#0#0#0#19'IWSTMe'
+'tadataService'#2#0#0#0#17'GetRepositoryList'#1#0#0#0#6'result'#0#0#0#23'TAr'
#0#0#0#16'WST_METADATA_0.6'#0#0#0#16'metadata_service'#0#1#0#0#0#19'IWSTMeta'
+'dataService'#0#2#0#0#0#17'GetRepositoryList'#1#0#0#0#6'Result'#0#0#0#23'TAr'
+'rayOfStringRemotable'#0#0#0#0#0#0#0#3#0#0#0#17'GetRepositoryInfo'#2#0#0#0#5
+'AName'#0#0#0#6'string'#0#0#0#0#0#0#0#1#0#0#0#6'result'#0#0#0#17'TWSTMtdRepo'
+'AName'#0#0#0#6'String'#0#0#0#0#0#0#0#1#0#0#0#6'Result'#0#0#0#17'TWSTMtdRepo'
+'sitory'#0#0#0#0#0#0#0#3''
);

View File

@ -2,27 +2,25 @@
This unit has been produced by ws_helper.
Input unit name : "metadata_service".
This unit name : "metadata_service_binder".
Date : "12/11/2006 11:12".
Date : "23/08/2010 16:10:07".
}
{$INCLUDE wst_global.inc}
unit metadata_service_binder;
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
interface
uses SysUtils, Classes, base_service_intf, server_service_intf, metadata_service;
type
TWSTMetadataService_ServiceBinder=class(TBaseServiceBinder)
Protected
procedure GetRepositoryListHandler(AFormatter:IFormatterResponse; AContext : ICallContext);
procedure GetRepositoryInfoHandler(AFormatter:IFormatterResponse; AContext : ICallContext);
Public
TWSTMetadataService_ServiceBinder = class(TBaseServiceBinder)
protected
procedure GetRepositoryListHandler(AFormatter : IFormatterResponse; AContext : ICallContext);
procedure GetRepositoryInfoHandler(AFormatter : IFormatterResponse; AContext : ICallContext);
public
constructor Create();
End;
{ TWSTMetadataService_ServiceBinderFactory }
end;
type
TWSTMetadataService_ServiceBinderFactory = class(TInterfacedObject,IItemFactory)
private
FInstance : IInterface;
@ -39,89 +37,109 @@ Implementation
uses TypInfo, wst_resources_imp,metadata_repository;
{ TWSTMetadataService_ServiceBinder implementation }
procedure TWSTMetadataService_ServiceBinder.GetRepositoryListHandler(AFormatter:IFormatterResponse; AContext : ICallContext);
Var
procedure TWSTMetadataService_ServiceBinder.GetRepositoryListHandler(AFormatter : IFormatterResponse; AContext : ICallContext);
var
cllCntrl : ICallControl;
objCntrl : IObjectControl;
hasObjCntrl : Boolean;
tmpObj : IWSTMetadataService;
callCtx : ICallContext;
strPrmName : string;
locStrPrmName : string;
procName,trgName : string;
returnVal : TArrayOfStringRemotable;
Begin
begin
callCtx := AContext;
If ( PTypeInfo(TypeInfo(TArrayOfStringRemotable))^.Kind in [tkClass,tkInterface] ) Then
Pointer(returnVal) := Nil;
Fillchar(returnVal,SizeOf(TArrayOfStringRemotable),#0);
tmpObj := Self.GetFactory().CreateInstance() as IWSTMetadataService;
if Supports(tmpObj,ICallControl,cllCntrl) then
cllCntrl.SetCallContext(callCtx);
returnVal := tmpObj.GetRepositoryList();
If ( PTypeInfo(TypeInfo(TArrayOfStringRemotable))^.Kind = tkClass ) And Assigned(Pointer(returnVal)) Then
callCtx.AddObjectToFree(TObject(returnVal));
procName := AFormatter.GetCallProcedureName();
trgName := AFormatter.GetCallTarget();
AFormatter.Clear();
AFormatter.BeginCallResponse(procName,trgName);
AFormatter.Put('return',TypeInfo(TArrayOfStringRemotable),returnVal);
AFormatter.EndCallResponse();
callCtx := Nil;
End;
hasObjCntrl := Supports(tmpObj,IObjectControl,objCntrl);
if hasObjCntrl then
objCntrl.Activate();
try
returnVal := tmpObj.GetRepositoryList();
if Assigned(TObject(returnVal)) then
callCtx.AddObjectToFree(TObject(returnVal));
procName := AFormatter.GetCallProcedureName();
trgName := AFormatter.GetCallTarget();
AFormatter.Clear();
AFormatter.BeginCallResponse(procName,trgName);
AFormatter.Put('Result',TypeInfo(TArrayOfStringRemotable),returnVal);
AFormatter.EndCallResponse();
callCtx := nil;
finally
if hasObjCntrl then
objCntrl.Deactivate();
Self.GetFactory().ReleaseInstance(tmpObj);
end;
end;
procedure TWSTMetadataService_ServiceBinder.GetRepositoryInfoHandler(AFormatter:IFormatterResponse; AContext : ICallContext);
Var
procedure TWSTMetadataService_ServiceBinder.GetRepositoryInfoHandler(AFormatter : IFormatterResponse; AContext : ICallContext);
var
cllCntrl : ICallControl;
objCntrl : IObjectControl;
hasObjCntrl : Boolean;
tmpObj : IWSTMetadataService;
callCtx : ICallContext;
strPrmName : string;
locStrPrmName : string;
procName,trgName : string;
AName : string;
AName : String;
returnVal : TWSTMtdRepository;
Begin
begin
callCtx := AContext;
Pointer(returnVal) := Nil;
Fillchar(returnVal,SizeOf(TWSTMtdRepository),#0);
strPrmName := 'AName'; AFormatter.Get(TypeInfo(string),strPrmName,AName);
locStrPrmName := 'AName'; AFormatter.Get(TypeInfo(String),locStrPrmName,AName);
tmpObj := Self.GetFactory().CreateInstance() as IWSTMetadataService;
if Supports(tmpObj,ICallControl,cllCntrl) then
cllCntrl.SetCallContext(callCtx);
returnVal := tmpObj.GetRepositoryInfo(AName);
If Assigned(Pointer(returnVal)) Then
callCtx.AddObjectToFree(TObject(returnVal));
procName := AFormatter.GetCallProcedureName();
trgName := AFormatter.GetCallTarget();
AFormatter.Clear();
AFormatter.BeginCallResponse(procName,trgName);
AFormatter.Put('return',TypeInfo(TWSTMtdRepository),returnVal);
AFormatter.EndCallResponse();
callCtx := Nil;
End;
hasObjCntrl := Supports(tmpObj,IObjectControl,objCntrl);
if hasObjCntrl then
objCntrl.Activate();
try
returnVal := tmpObj.GetRepositoryInfo(AName);
if Assigned(TObject(returnVal)) then
callCtx.AddObjectToFree(TObject(returnVal));
procName := AFormatter.GetCallProcedureName();
trgName := AFormatter.GetCallTarget();
AFormatter.Clear();
AFormatter.BeginCallResponse(procName,trgName);
AFormatter.Put('Result',TypeInfo(TWSTMtdRepository),returnVal);
AFormatter.EndCallResponse();
callCtx := nil;
finally
if hasObjCntrl then
objCntrl.Deactivate();
Self.GetFactory().ReleaseInstance(tmpObj);
end;
end;
constructor TWSTMetadataService_ServiceBinder.Create();
Begin
Inherited Create(GetServiceImplementationRegistry().FindFactory('IWSTMetadataService'));
begin
inherited Create(GetServiceImplementationRegistry().FindFactory('IWSTMetadataService'));
RegisterVerbHandler('GetRepositoryList',{$IFDEF FPC}@{$ENDIF}GetRepositoryListHandler);
RegisterVerbHandler('GetRepositoryInfo',{$IFDEF FPC}@{$ENDIF}GetRepositoryInfoHandler);
End;
end;
{ TWSTMetadataService_ServiceBinderFactory }
function TWSTMetadataService_ServiceBinderFactory.CreateInstance():IInterface;
Begin
begin
Result := FInstance;
End;
end;
constructor TWSTMetadataService_ServiceBinderFactory.Create();
begin
FInstance := TWSTMetadataService_ServiceBinder.Create();
FInstance := TWSTMetadataService_ServiceBinder.Create() as IInterface;
end;
destructor TWSTMetadataService_ServiceBinderFactory.Destroy();
@ -138,10 +156,10 @@ End;
initialization
{$IF DECLARED(Register_metadata_service_NameSpace)}
Register_metadata_service_NameSpace();
{$IFEND}
{$i metadata_service.wst}
{$IF DECLARED(Register_metadata_service_ServiceMetadata)}
Register_metadata_service_ServiceMetadata();
{$IFEND}
End.

View File

@ -2,18 +2,15 @@
This unit has been produced by ws_helper.
Input unit name : "metadata_service".
This unit name : "metadata_service_proxy".
Date : "12/11/2006 11:12".
Date : "23/08/2010 16:10:07".
}
{$INCLUDE wst_global.inc}
Unit metadata_service_proxy;
Unit metadata_service_proxy;
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
Interface
Uses SysUtils, Classes, TypInfo, base_service_intf, service_intf, metadata_service;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Type
@ -22,13 +19,26 @@ Type
class function GetServiceType() : PTypeInfo;override;
function GetRepositoryList():TArrayOfStringRemotable;
function GetRepositoryInfo(
Const AName : string
const AName : String
):TWSTMtdRepository;
End;
Function wst_CreateInstance_IWSTMetadataService(const AFormat : string = 'SOAP:'; const ATransport : string = 'HTTP:'; const AAddress : string = ''):IWSTMetadataService;
Implementation
uses wst_resources_imp, metadata_repository;
Function wst_CreateInstance_IWSTMetadataService(const AFormat : string; const ATransport : string; const AAddress : string):IWSTMetadataService;
Var
locAdr : string;
Begin
locAdr := AAddress;
if ( locAdr = '' ) then
locAdr := GetServiceDefaultAddress(TypeInfo(IWSTMetadataService));
Result := TWSTMetadataService_Proxy.Create('IWSTMetadataService',AFormat+GetServiceDefaultFormatProperties(TypeInfo(IWSTMetadataService)),ATransport + 'address=' + locAdr);
End;
{ TWSTMetadataService_Proxy implementation }
class function TWSTMetadataService_Proxy.GetServiceType() : PTypeInfo;
@ -39,20 +49,21 @@ end;
function TWSTMetadataService_Proxy.GetRepositoryList():TArrayOfStringRemotable;
Var
locSerializer : IFormatterClient;
strPrmName : string;
locCallContext : ICallContext;
locStrPrmName : string;
Begin
locCallContext := Self as ICallContext;
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('GetRepositoryList', GetTarget(),(Self as ICallContext));
locSerializer.BeginCall('GetRepositoryList', GetTarget(),locCallContext);
locSerializer.EndCall();
MakeCall();
locSerializer.BeginCallRead((Self as ICallContext));
If ( PTypeInfo(TypeInfo(TArrayOfStringRemotable))^.Kind in [tkClass,tkInterface] ) Then
Pointer(Result) := Nil;
strPrmName := 'return';
locSerializer.Get(TypeInfo(TArrayOfStringRemotable), strPrmName, result);
locSerializer.BeginCallRead(locCallContext);
TObject(Result) := Nil;
locStrPrmName := 'Result';
locSerializer.Get(TypeInfo(TArrayOfStringRemotable), locStrPrmName, Result);
Finally
locSerializer.Clear();
@ -60,24 +71,26 @@ Begin
End;
function TWSTMetadataService_Proxy.GetRepositoryInfo(
Const AName : string
const AName : String
):TWSTMtdRepository;
Var
locSerializer : IFormatterClient;
strPrmName : string;
locCallContext : ICallContext;
locStrPrmName : string;
Begin
locCallContext := Self as ICallContext;
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('GetRepositoryInfo', GetTarget(),(Self as ICallContext));
locSerializer.Put('AName', TypeInfo(string), AName);
locSerializer.BeginCall('GetRepositoryInfo', GetTarget(),locCallContext);
locSerializer.Put('AName', TypeInfo(String), AName);
locSerializer.EndCall();
MakeCall();
locSerializer.BeginCallRead((Self as ICallContext));
Pointer(Result) := Nil;
strPrmName := 'return';
locSerializer.Get(TypeInfo(TWSTMtdRepository), strPrmName, result);
locSerializer.BeginCallRead(locCallContext);
TObject(Result) := Nil;
locStrPrmName := 'Result';
locSerializer.Get(TypeInfo(TWSTMtdRepository), locStrPrmName, Result);
Finally
locSerializer.Clear();
@ -90,5 +103,5 @@ initialization
{$IF DECLARED(Register_metadata_service_ServiceMetadata)}
Register_metadata_service_ServiceMetadata();
{$ENDIF}
{$IFEND}
End.