You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3891 8e941d3f-bd1b-0410-a28a-d453659cc2b4
142 lines
3.7 KiB
ObjectPascal
142 lines
3.7 KiB
ObjectPascal
{
|
|
This unit has been produced by ws_helper.
|
|
Input unit name : "metadata_service".
|
|
This unit name : "metadata_service_imp".
|
|
Date : "01/07/2006 22:14".
|
|
}
|
|
{$INCLUDE wst_global.inc}
|
|
Unit metadata_service_imp;
|
|
|
|
Interface
|
|
|
|
Uses SysUtils, Classes,
|
|
base_service_intf, server_service_intf, server_service_imputils, metadata_service;
|
|
|
|
Type
|
|
|
|
TWSTMetadataService_ServiceImp=class(TSimpleFactoryItem,IWSTMetadataService)
|
|
Protected
|
|
function GetRepositoryList():TArrayOfStringRemotable;
|
|
function GetRepositoryInfo(
|
|
Const AName : string
|
|
):TWSTMtdRepository;
|
|
End;
|
|
|
|
|
|
procedure RegisterWSTMetadataServiceImplementationFactory();
|
|
|
|
Implementation
|
|
uses metadata_repository;
|
|
|
|
{ TWSTMetadataService_ServiceImp implementation }
|
|
function TWSTMetadataService_ServiceImp.GetRepositoryList():TArrayOfStringRemotable;
|
|
var
|
|
i, c : Integer;
|
|
mn : IModuleMetadataMngr;
|
|
Begin
|
|
Result := TArrayOfStringRemotable.Create();
|
|
try
|
|
mn := GetModuleMetadataMngr();
|
|
c := mn.GetCount();
|
|
Result.SetLength(c);
|
|
for i := 0 to Pred(c) do
|
|
Result[i] := mn.GetRepositoryName(i);
|
|
except
|
|
FreeAndNil(Result);
|
|
raise;
|
|
end;
|
|
End;
|
|
|
|
function TWSTMetadataService_ServiceImp.GetRepositoryInfo(Const AName : string):TWSTMtdRepository;
|
|
|
|
procedure LoadService(ARawServ : PService; AObjServ : TWSTMtdService);
|
|
|
|
procedure LoadOperation(ARawOper : PServiceOperation; AObjOper : TWSTMtdServiceOperation);
|
|
|
|
procedure LoadParam(ARawParam : POperationParam; AObjPrm : TWSTMtdOperationParam);
|
|
begin
|
|
if Assigned(ARawParam) and Assigned(AObjPrm) then begin
|
|
AObjPrm.Name :=ARawParam^.Name;
|
|
AObjPrm.TypeName := ARawParam^.TypeName;
|
|
AObjPrm.Modifier := ARawParam^.Modifier;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
ii, cc : Integer;
|
|
pprm : POperationParam;
|
|
begin
|
|
if Assigned(ARawOper) and Assigned(AObjOper) then begin
|
|
AObjOper.Name :=ARawOper^.Name;
|
|
cc := ARawOper^.ParamsCount;
|
|
AObjOper.Params.SetLength(cc);
|
|
if ( cc > 0 ) then begin
|
|
pprm := ARawOper^.Params;
|
|
for ii := 0 to Pred(cc) do begin
|
|
LoadParam(pprm,AObjOper.Params[ii]);
|
|
Inc(pprm);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
k, d : Integer;
|
|
pservOP : PServiceOperation;
|
|
begin
|
|
if Assigned(ARawServ) and Assigned(AObjServ) then begin
|
|
AObjServ.Name :=ARawServ^.Name;
|
|
d := ARawServ^.OperationsCount;
|
|
AObjServ.Operations.SetLength(d);
|
|
if ( d > 0 ) then begin
|
|
pservOP := ARawServ^.Operations;
|
|
for k := 0 to Pred(d) do begin
|
|
LoadOperation(pservOP,AObjServ.Operations[k]);
|
|
Inc(pservOP);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
repData : PServiceRepository;
|
|
mn : IModuleMetadataMngr;
|
|
i, c : Integer;
|
|
pserv : PService;
|
|
Begin
|
|
Result := nil;
|
|
mn := GetModuleMetadataMngr();
|
|
mn.LoadRepositoryName(AName,'/',repData);
|
|
if Assigned(repData) then begin
|
|
try
|
|
try
|
|
Result := TWSTMtdRepository.Create();
|
|
Result.Name := repData^.Name;
|
|
Result.NameSpace := repData^.NameSpace;
|
|
c := repData^.ServicesCount;
|
|
Result.Services.SetLength(c);
|
|
if ( c > 0 ) then begin
|
|
pserv := repData^.Services;
|
|
for i := 0 to Pred(c) do begin
|
|
LoadService(pserv,Result.Services[i]);
|
|
Inc(pserv);
|
|
end;
|
|
end;
|
|
except
|
|
FreeAndNil(Result);
|
|
raise;
|
|
end;
|
|
finally
|
|
mn.ClearRepository(repData);
|
|
end;
|
|
end;
|
|
End;
|
|
|
|
|
|
procedure RegisterWSTMetadataServiceImplementationFactory();
|
|
Begin
|
|
GetServiceImplementationRegistry().Register('IWSTMetadataService',TImplementationFactory.Create(TWSTMetadataService_ServiceImp));
|
|
End;
|
|
|
|
End.
|