diff --git a/wst/trunk/library_base_intf.pas b/wst/trunk/library_base_intf.pas new file mode 100644 index 000000000..f87afec41 --- /dev/null +++ b/wst/trunk/library_base_intf.pas @@ -0,0 +1,87 @@ +{ + 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. +} +unit library_base_intf; + +{$mode objfpc}{$H+} + +interface +uses base_service_intf; + +const + RET_OK = 0; + RET_FALSE = 1; + WST_LIB_HANDLER = 'wstHandleRequest'; + +type + + EwstCheckException = class(EServiceException) + private + FReturnCode: Integer; + public + property ReturnCode : Integer read FReturnCode write FReturnCode; + end; + + IwstStream = interface + ['{95700F89-3E36-4678-AD84-347162E39288}'] + function Read( + ABuffer : Pointer; + const ALenToRead : LongWord; + out AReadedLen : LongWord + ):LongInt; + function Write( + ABuffer : Pointer; + const ALenToWrite : LongWord; + out AWrittenLen : LongWord + ):LongInt; + function GetSize(out ASize : LongWord):LongInt; + function SetSize(const ANewSize : LongWord):LongInt; + function GetPosition(out APos : LongWord):LongWord; + function SetPosition(const ANewPos : LongWord):LongInt; + end; + + TwstLibraryHandlerFunction = + function( + ARequestBuffer : IwstStream; + AErrorBuffer : Pointer; + var AErrorBufferLen : LongInt + ):LongInt; + + procedure wstCheck(const AReturn : LongInt);overload; + procedure wstCheck(const AReturn : LongInt; const AMsg : string);overload; + +implementation + +procedure wstCheck(const AReturn : LongInt); +var + e : EwstCheckException; +begin + if ( AReturn <> RET_OK ) then begin + e := EwstCheckException.CreateFmt('wst Check Exception , return = %d',[AReturn]); + e.ReturnCode := AReturn; + raise e; + end; +end; + +procedure wstCheck(const AReturn : LongInt; const AMsg : string); +var + e : EwstCheckException; +begin + if ( AReturn <> RET_OK ) then begin + e := EwstCheckException.Create(AMsg); + e.ReturnCode := AReturn; + raise e; + end; +end; + +end. + diff --git a/wst/trunk/library_imp_utils.pas b/wst/trunk/library_imp_utils.pas new file mode 100644 index 000000000..06dc97ed9 --- /dev/null +++ b/wst/trunk/library_imp_utils.pas @@ -0,0 +1,170 @@ +unit library_imp_utils; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +type + + IwstModule = interface + ['{A62A9A71-727E-47AD-9B84-0F7CA0AE51D5}'] + function GetFileName():string; + function GetProc(const AProcName : string):Pointer; + end; + + IwstModuleManager = interface + ['{0A49D315-FF3E-40CD-BCA0-F958BCD5C57F}'] + function Get(const AFileName : string):IwstModule; + procedure Clear(); + end; + +var + LibraryManager : IwstModuleManager = nil; + +implementation +uses DynLibs; + + +type + + { TwstModule } + + TwstModule = class(TInterfacedObject,IwstModule) + private + FFileName : string; + FHandle : TLibHandle; + private + procedure Load(const ADoLoad : Boolean); + protected + function GetFileName():string; + function GetProc(const AProcName : string):Pointer; + public + constructor Create(const AFileName : string); + destructor Destroy();override; + end; + + { TwstModuleManager } + + TwstModuleManager = class(TInterfacedObject,IwstModuleManager) + private + FList : IInterfaceList; + private + function Load(const AFileName : string):IwstModule; + function GetItem(const AIndex : Integer):IwstModule; + function IndexOf(const AFileName : string):Integer; + protected + function Get(const AFileName : string):IwstModule; + procedure Clear(); + public + constructor Create(); + destructor Destroy();override; + end; + +procedure TwstModule.Load(const ADoLoad : Boolean); +begin + if ADoLoad then begin + if ( FHandle = NilHandle ) then begin + FHandle := LoadLibrary(FFileName); + if ( FHandle = NilHandle ) then + raise Exception.CreateFmt('Error while loading : "%s".',[FFileName]); + end; + end else begin + if ( FHandle <> NilHandle ) then begin + FreeLibrary(FHandle); + FHandle := NilHandle; + end; + end; +end; + +function TwstModule.GetFileName(): string; +begin + Result := FFileName; +end; + +function TwstModule.GetProc(const AProcName: string): Pointer; +begin + Result := GetProcAddress(FHandle,AProcName); + if not Assigned(Result) then + raise Exception.CreateFmt('Procedure "%s" not found in this module( "%s" ).',[AProcName,FFileName]); +end; + +constructor TwstModule.Create(const AFileName: string); +begin + if not FileExists(AFileName) then + raise Exception.CreateFmt('File not found : "%s".',[AFileName]); + FHandle := NilHandle; + FFileName := AFileName; + Load(True); +end; + +destructor TwstModule.Destroy(); +begin + Load(False); + inherited Destroy(); +end; + +{ TwstModuleManager } + +function TwstModuleManager.Get(const AFileName: string): IwstModule; +var + i : Integer; +begin + i := IndexOf(AFileName); + if ( i < 0 ) then + Result := Load(AFileName) + else + Result := GetItem(i); +end; + +procedure TwstModuleManager.Clear(); +begin + FList.Clear(); +end; + +function TwstModuleManager.Load(const AFileName: string): IwstModule; +begin + Result := TwstModule.Create(AFileName); +end; + +function TwstModuleManager.GetItem(const AIndex: Integer): IwstModule; +begin + Result := FList[AIndex] as IwstModule; +end; + +function TwstModuleManager.IndexOf(const AFileName: string): Integer; +begin + for Result := 0 to Pred(FList.Count) do begin + if AnsiSameStr(AFileName,(FList[Result] as IwstModule).GetFileName()) then + Exit; + end; + Result := -1; +end; + +constructor TwstModuleManager.Create(); +begin + inherited; + FList := TInterfaceList.Create(); +end; + +destructor TwstModuleManager.Destroy(); +begin + FList := nil; + inherited Destroy(); +end; + +procedure InitLibraryManager(); +begin + LibraryManager := TwstModuleManager.Create(); +end; + +initialization + InitLibraryManager(); + +finalization + LibraryManager := nil; + +end. + diff --git a/wst/trunk/library_protocol.pas b/wst/trunk/library_protocol.pas new file mode 100644 index 000000000..9b2eacf17 --- /dev/null +++ b/wst/trunk/library_protocol.pas @@ -0,0 +1,245 @@ +{ + 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. +} +unit library_protocol; + +{$mode objfpc}{$H+} + +//{$DEFINE WST_DBG} + +interface + +uses + Classes, SysUtils,{$IFDEF WST_DBG}Dialogs,{$ENDIF} + service_intf, imp_utils, base_service_intf, library_base_intf, + library_imp_utils; + +Const + sTRANSPORT_NAME = 'LIB'; + +Type + +{$M+} + { TLIBTransport } + TLIBTransport = class(TSimpleFactoryItem,ITransport) + Private + FPropMngr : IPropertyManager; + FModule : IwstModule; + FHandler : TwstLibraryHandlerFunction; + private + FContentType: string; + FFileName: string; + FTarget: string; + private + procedure SetFileName(const AValue: string); + procedure LoadModule(); + public + constructor Create();override; + destructor Destroy();override; + function GetPropertyManager():IPropertyManager; + procedure SendAndReceive(ARequest,AResponse:TStream); + published + property ContentType : string read FContentType write FContentType; + property Target : string read FTarget write FTarget; + property FileName : string read FFileName write SetFileName; + end; +{$M+} + + procedure LIB_Register_Transport(); + +implementation +uses binary_streamer; + +type + + { TwstStream } + + TwstStream = class(TInterfacedObject,IwstStream) + private + FStream : TStream; + protected + function Read( + ABuffer : Pointer; + const ALenToRead : LongWord; + out AReadedLen : LongWord + ):LongInt; + function Write( + ABuffer : Pointer; + const ALenToWrite : LongWord; + out AWrittenLen : LongWord + ):LongInt; + function GetSize(out ASize : LongWord):LongInt; + function SetSize(const ANewSize : LongWord):LongInt; + function GetPosition(out APos : LongWord):LongWord; + function SetPosition(const ANewPos : LongWord):LongInt; + public + constructor Create(AStream : TStream); + end; + +{ TwstStream } + +function TwstStream.Read( + ABuffer : Pointer; + const ALenToRead : LongWord; + out AReadedLen : LongWord +): LongInt; +begin + try + AReadedLen := FStream.Read(ABuffer^,ALenToRead); + Result := RET_OK; + except + Result := RET_FALSE; + end; +end; + +function TwstStream.Write( + ABuffer : Pointer; + const ALenToWrite : LongWord; + out AWrittenLen : LongWord +): LongInt; +begin + try + AWrittenLen := FStream.Write(ABuffer^,ALenToWrite); + Result := RET_OK; + except + Result := RET_FALSE; + end; +end; + +function TwstStream.GetSize(out ASize: LongWord): LongInt; +begin + ASize := FStream.Size; + Result := RET_OK; +end; + +function TwstStream.SetSize(const ANewSize: LongWord): LongInt; +begin + FStream.Size := ANewSize; + Result := RET_OK; +end; + +function TwstStream.GetPosition(out APos: LongWord): LongWord; +begin + APos := FStream.Position; + Result := RET_OK; +end; + +function TwstStream.SetPosition(const ANewPos: LongWord): LongInt; +begin + FStream.Position := ANewPos; + Result := RET_OK; +end; + +constructor TwstStream.Create(AStream: TStream); +begin + Assert(Assigned(AStream)); + FStream := AStream; +end; + +{ TLIBTransport } + +procedure TLIBTransport.SetFileName(const AValue: string); +begin + FFileName := AValue; + if Assigned(FModule) and ( not AnsiSameStr(FFileName,FModule.GetFileName()) ) then begin + FHandler := nil; + FModule := nil; + end; +end; + +procedure TLIBTransport.LoadModule(); +begin + if ( FModule = nil ) then begin + FModule := LibraryManager.Get(FFileName); + FHandler := TwstLibraryHandlerFunction(FModule.GetProc(WST_LIB_HANDLER)); + end; +end; + +constructor TLIBTransport.Create(); +begin + inherited Create(); + FPropMngr := TPublishedPropertyManager.Create(Self); + FModule := nil; + FHandler := nil +end; + +destructor TLIBTransport.Destroy(); +begin + FPropMngr := Nil; + FModule := nil; + FHandler := nil; + inherited Destroy(); +end; + +function TLIBTransport.GetPropertyManager(): IPropertyManager; +begin + Result := FPropMngr; +end; + +const MAX_ERR_LEN = 500; +procedure TLIBTransport.SendAndReceive(ARequest, AResponse: TStream); +Var + wrtr : IDataStore; + buffStream : TMemoryStream; + strBuff : string; + intfBuffer : IwstStream; + bl : LongInt; +{$IFDEF WST_DBG} + s : string; + i : Int64; +{$ENDIF WST_DBG} +begin + LoadModule(); + buffStream := TMemoryStream.Create(); + try + wrtr := CreateBinaryWriter(buffStream); + wrtr.WriteInt32S(0); + wrtr.WriteStr(Target); + wrtr.WriteStr(ContentType); + SetLength(strBuff,ARequest.Size); + ARequest.Position := 0; + ARequest.Read(strBuff[1],Length(strBuff)); + wrtr.WriteStr(strBuff); + buffStream.Position := 0; + wrtr.WriteInt32S(buffStream.Size-4); + + buffStream.Position := 0; + intfBuffer := TwstStream.Create(buffStream); + bl := MAX_ERR_LEN; + strBuff := StringOfChar(#0,bl); + if ( FHandler(intfBuffer,Pointer(strBuff),bl) <> RET_OK ) then + raise Exception.Create(strBuff); + + buffStream.Position := 0; + AResponse.Size := 0; + AResponse.CopyFrom(buffStream,0); + AResponse.Position := 0; + {$IFDEF WST_DBG} + i := AResponse.Position; + SetLength(s,AResponse.Size); + AResponse.Read(s[1],AResponse.Size); + if IsConsole then + WriteLn(s) + else + ShowMessage(s); + {$ENDIF WST_DBG} + finally + buffStream.Free(); + end; +end; + +procedure LIB_Register_Transport(); +begin + GetTransportRegistry().Register(sTRANSPORT_NAME,TSimpleItemFactory.Create(TLIBTransport) as IItemFactory); +end; + +end. diff --git a/wst/trunk/library_server_intf.pas b/wst/trunk/library_server_intf.pas new file mode 100644 index 000000000..0d25616cc --- /dev/null +++ b/wst/trunk/library_server_intf.pas @@ -0,0 +1,121 @@ +{ + 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. +} +unit library_server_intf; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, + library_base_intf; + + function wstHandleRequest( + ARequestBuffer : IwstStream; + AErrorBuffer : Pointer; + var AErrorBufferLen : LongInt + ):LongInt; + +implementation +uses base_service_intf, server_service_intf, server_service_imputils, binary_streamer; + +function wstHandleRequest( + ARequestBuffer : IwstStream; + AErrorBuffer : Pointer; + var AErrorBufferLen : LongInt +):LongInt; + + procedure CopyErrMsg(const AMsg : string); + var + j,m : Integer; + begin + m := AErrorBufferLen; + j := Length(AMsg); + if ( j > 0 ) then begin + if ( j > m ) then + j := m; + try + Move(AMsg[1],AErrorBuffer^,j); + except + end; + end; + end; + +Var + buff, trgt,ctntyp : string; + rqst : IRequestBuffer; + rdr : IDataStoreReader; + inStream, bufStream : TMemoryStream; + bs, bytesCount : LongWord; +begin + Result := RET_FALSE; + try + inStream := nil; + bufStream := nil; + if Assigned(ARequestBuffer) then begin + wstCheck(ARequestBuffer.GetSize(bs)); + if ( bs > 0 ) then begin + try + inStream := TMemoryStream.Create(); + bufStream := TMemoryStream.Create(); + + bufStream.Size := bs; + wstCheck(ARequestBuffer.SetPosition(0)); + wstCheck(ARequestBuffer.Read(bufStream.Memory,bs,bytesCount)); + if ( bs <> bytesCount ) then + wstCheck(RET_FALSE,'Invalid buffer operation (READ)'); + wstCheck(ARequestBuffer.SetSize(0)); + + bufStream.Position := 0; + rdr := CreateBinaryReader(bufStream); + if ( rdr.ReadInt32S() <> ( bs - 4 ) ) then + wstCheck(RET_FALSE,'Invalid buffer.'); + trgt := rdr.ReadStr(); + ctntyp := rdr.ReadStr(); + buff := rdr.ReadStr(); + rdr := nil; + bufStream.Size := 0; + bufStream.Position := 0; + inStream.Write(buff[1],Length(buff)); + SetLength(buff,0); + inStream.Position := 0; + rqst := TRequestBuffer.Create(trgt,ctntyp,inStream,bufStream); + HandleServiceRequest(rqst); + bs := bufStream.Size; + wstCheck(ARequestBuffer.SetSize(bs)); + wstCheck(ARequestBuffer.SetPosition(0)); + wstCheck(ARequestBuffer.Write(bufStream.Memory,bs,bytesCount)); + if ( bs <> bytesCount ) then + wstCheck(RET_FALSE,'Invalid buffer operation (WRITE)'); + Result := RET_OK; + finally + bufStream.Free(); + inStream.Free(); + end; + end; + end; + except + on e : EwstCheckException do begin + Result := e.ReturnCode; + CopyErrMsg(e.Message); + end; + on e : Exception do begin + Result := RET_FALSE; + CopyErrMsg(e.Message); + end else begin + Result := RET_FALSE; + end; + end; +end; + +end. diff --git a/wst/trunk/synapse_http_protocol.pas b/wst/trunk/synapse_http_protocol.pas index 5f0551cee..c1db5524d 100644 --- a/wst/trunk/synapse_http_protocol.pas +++ b/wst/trunk/synapse_http_protocol.pas @@ -166,7 +166,10 @@ begin TMemoryStream(AResponse).SaveToFile('log.log'); SetLength(s,AResponse.Size); Move(TMemoryStream(AResponse).Memory^,s[1],Length(s)); - ShowMessage(s); + if IsConsole then + WriteLn(s) + else + ShowMessage(s); {$ENDIF} end; diff --git a/wst/trunk/tests/calculator/gui_client/main_unit.lfm b/wst/trunk/tests/calculator/gui_client/main_unit.lfm index d5e7328f9..0f3eb5164 100644 --- a/wst/trunk/tests/calculator/gui_client/main_unit.lfm +++ b/wst/trunk/tests/calculator/gui_client/main_unit.lfm @@ -7,39 +7,41 @@ object fmain: Tfmain VertScrollBar.Page = 299 ActiveControl = edtA Caption = '"calculator" service test' + ClientHeight = 300 + ClientWidth = 528 OnCreate = FormCreate object Label1: TLabel Left = 16 - Height = 14 + Height = 18 Top = 48 - Width = 49 + Width = 64 Caption = 'Param "A"' Color = clNone ParentColor = False end object Label2: TLabel Left = 17 - Height = 14 + Height = 18 Top = 80 - Width = 48 + Width = 64 Caption = 'Param "B"' Color = clNone ParentColor = False end object Label3: TLabel Left = 240 - Height = 14 + Height = 18 Top = 52 - Width = 35 + Width = 45 Caption = 'Format' Color = clNone ParentColor = False end object Label4: TLabel Left = 16 - Height = 14 + Height = 18 Top = 8 - Width = 40 + Width = 49 Caption = 'Address' Color = clNone ParentColor = False diff --git a/wst/trunk/tests/calculator/gui_client/main_unit.lrs b/wst/trunk/tests/calculator/gui_client/main_unit.lrs index 105e44e92..d64d47fa6 100644 --- a/wst/trunk/tests/calculator/gui_client/main_unit.lrs +++ b/wst/trunk/tests/calculator/gui_client/main_unit.lrs @@ -3,32 +3,33 @@ LazarusResources.Add('Tfmain','FORMDATA',[ 'TPF0'#6'Tfmain'#5'fmain'#4'Left'#3#13#1#6'Height'#3','#1#3'Top'#3#234#0#5'Wi' +'dth'#3#16#2#18'HorzScrollBar.Page'#3#15#2#18'VertScrollBar.Page'#3'+'#1#13 - +'ActiveControl'#7#4'edtA'#7'Caption'#6#25'"calculator" service test'#8'OnCre' - +'ate'#7#10'FormCreate'#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Height'#2#14#3'T' - +'op'#2'0'#5'Width'#2'1'#7'Caption'#6#9'Param "A"'#5'Color'#7#6'clNone'#11'Pa' - +'rentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#17#6'Height'#2#14#3'Top'#2'P' - +#5'Width'#2'0'#7'Caption'#6#9'Param "B"'#5'Color'#7#6'clNone'#11'ParentColor' - +#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#240#0#6'Height'#2#14#3'Top'#2'4'#5'Widt' - +'h'#2'#'#7'Caption'#6#6'Format'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6 - +'TLabel'#6'Label4'#4'Left'#2#16#6'Height'#2#14#3'Top'#2#8#5'Width'#2'('#7'Ca' - +'ption'#6#7'Address'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#4'e' - +'dtA'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'0'#5'Width'#2'P'#8'TabOrder'#2#0#4 - +'Text'#6#1'5'#0#0#5'TEdit'#4'edtB'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'P'#5 - +'Width'#2'P'#8'TabOrder'#2#1#4'Text'#6#1'2'#0#0#7'TButton'#7'btnExec'#4'Left' - +#3#128#1#6'Height'#2#25#3'Top'#2#8#5'Width'#3#128#0#25'BorderSpacing.InnerBo' - +'rder'#2#4#7'Caption'#6#7'Execute'#7'OnClick'#7#12'btnExecClick'#8'TabOrder' - +#2#2#0#0#5'TMemo'#6'mmoLog'#6'Height'#3#180#0#3'Top'#2'x'#5'Width'#3#16#2#5 - +'Align'#7#8'alBottom'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom' - +#0#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.H' - +'eight'#2#237#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#13 - +'Lines.Strings'#1#6#0#0#10'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#3#0#0#5'TEd' - +'it'#9'edtFormat'#4'Left'#3' '#1#6'Height'#2#23#3'Top'#2'2'#5'Width'#2'P'#8 - +'TabOrder'#2#4#4'Text'#6#4'SOAP'#0#0#7'TButton'#7'btnInit'#4'Left'#3#128#1#6 - +'Height'#2#25#3'Top'#2'0'#5'Width'#2'K'#25'BorderSpacing.InnerBorder'#2#4#7 - +'Caption'#6#8'Init Obj'#7'OnClick'#7#12'btnInitClick'#8'TabOrder'#2#5#0#0#7 - +'TButton'#11'btnClearLog'#4'Left'#3#128#1#6'Height'#2#25#3'Top'#2'P'#5'Width' - +#2'K'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'Clear Log'#7'OnClick' - +#7#16'btnClearLogClick'#8'TabOrder'#2#6#0#0#5'TEdit'#10'edtAddress'#4'Left'#2 - +'P'#6'Height'#2#23#3'Top'#2#11#5'Width'#3' '#1#8'TabOrder'#2#7#4'Text'#6'7ht' - +'tp:Address=http://127.0.0.1:8000/services/ICalculator'#0#0#0 + +'ActiveControl'#7#4'edtA'#7'Caption'#6#25'"calculator" service test'#12'Clie' + +'ntHeight'#3','#1#11'ClientWidth'#3#16#2#8'OnCreate'#7#10'FormCreate'#0#6'TL' + +'abel'#6'Label1'#4'Left'#2#16#6'Height'#2#18#3'Top'#2'0'#5'Width'#2'@'#7'Cap' + +'tion'#6#9'Param "A"'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6 + +'Label2'#4'Left'#2#17#6'Height'#2#18#3'Top'#2'P'#5'Width'#2'@'#7'Caption'#6#9 + +'Param "B"'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4 + +'Left'#3#240#0#6'Height'#2#18#3'Top'#2'4'#5'Width'#2'-'#7'Caption'#6#6'Forma' + +'t'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2 + +#16#6'Height'#2#18#3'Top'#2#8#5'Width'#2'1'#7'Caption'#6#7'Address'#5'Color' + +#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#4'edtA'#4'Left'#2'P'#6'Height'#2 + +#23#3'Top'#2'0'#5'Width'#2'P'#8'TabOrder'#2#0#4'Text'#6#1'5'#0#0#5'TEdit'#4 + +'edtB'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'P'#5'Width'#2'P'#8'TabOrder'#2#1 + +#4'Text'#6#1'2'#0#0#7'TButton'#7'btnExec'#4'Left'#3#128#1#6'Height'#2#25#3'T' + +'op'#2#8#5'Width'#3#128#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#7'E' + +'xecute'#7'OnClick'#7#12'btnExecClick'#8'TabOrder'#2#2#0#0#5'TMemo'#6'mmoLog' + +#6'Height'#3#180#0#3'Top'#2'x'#5'Width'#3#16#2#5'Align'#7#8'alBottom'#7'Anch' + +'ors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#12'Font.CharSet'#7#12'A' + +'NSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#237#9'Font.Name' + +#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#13'Lines.Strings'#1#6#0#0#10 + +'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#3#0#0#5'TEdit'#9'edtFormat'#4'Left'#3 + +' '#1#6'Height'#2#23#3'Top'#2'2'#5'Width'#2'P'#8'TabOrder'#2#4#4'Text'#6#4'S' + +'OAP'#0#0#7'TButton'#7'btnInit'#4'Left'#3#128#1#6'Height'#2#25#3'Top'#2'0'#5 + +'Width'#2'K'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#8'Init Obj'#7'On' + +'Click'#7#12'btnInitClick'#8'TabOrder'#2#5#0#0#7'TButton'#11'btnClearLog'#4 + +'Left'#3#128#1#6'Height'#2#25#3'Top'#2'P'#5'Width'#2'K'#25'BorderSpacing.Inn' + +'erBorder'#2#4#7'Caption'#6#9'Clear Log'#7'OnClick'#7#16'btnClearLogClick'#8 + +'TabOrder'#2#6#0#0#5'TEdit'#10'edtAddress'#4'Left'#2'P'#6'Height'#2#23#3'Top' + +#2#11#5'Width'#3' '#1#8'TabOrder'#2#7#4'Text'#6'7http:Address=http://127.0.0' + +'.1:8000/services/ICalculator'#0#0#0 ]); diff --git a/wst/trunk/tests/calculator/gui_client/main_unit.pas b/wst/trunk/tests/calculator/gui_client/main_unit.pas index b970c9ac8..646cc434b 100644 --- a/wst/trunk/tests/calculator/gui_client/main_unit.pas +++ b/wst/trunk/tests/calculator/gui_client/main_unit.pas @@ -42,6 +42,7 @@ implementation uses TypInfo, base_service_intf, soap_formatter, binary_formatter, ics_tcp_protocol, ics_http_protocol, //synapse_http_protocol, + library_protocol, service_intf; { Tfmain } @@ -127,6 +128,7 @@ begin FObj := Nil; //ICS_RegisterTCP_Transport(); ICS_RegisterHTTP_Transport(); + LIB_Register_Transport(); //SYNAPSE_RegisterHTTP_Transport(); end; diff --git a/wst/trunk/tests/calculator/gui_client/test_calc.lpi b/wst/trunk/tests/calculator/gui_client/test_calc.lpi index d65eff013..efb496135 100644 --- a/wst/trunk/tests/calculator/gui_client/test_calc.lpi +++ b/wst/trunk/tests/calculator/gui_client/test_calc.lpi @@ -7,7 +7,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -41,11 +41,9 @@ - - - + + - @@ -53,9 +51,7 @@ - - @@ -63,9 +59,7 @@ - - @@ -155,27 +149,21 @@ - - - - - - @@ -189,18 +177,14 @@ - - - - @@ -226,9 +210,7 @@ - - @@ -289,40 +271,45 @@ - - - - - + + - - + + + + + + + + + + + + + + + - + - - - - - - + - + @@ -342,7 +329,8 @@ - + diff --git a/wst/trunk/tests/google_api/test_google_api.lpi b/wst/trunk/tests/google_api/test_google_api.lpi index 3e2cb04e5..e07e1a546 100644 --- a/wst/trunk/tests/google_api/test_google_api.lpi +++ b/wst/trunk/tests/google_api/test_google_api.lpi @@ -12,7 +12,7 @@ - + @@ -32,15 +32,15 @@ - + - - - - + + + + @@ -49,9 +49,7 @@ - - - + @@ -155,7 +153,7 @@ - + @@ -163,9 +161,7 @@ - - - + @@ -232,16 +228,20 @@ - - + + + + - - + + + + @@ -274,9 +274,11 @@ - - - + + + + + @@ -295,9 +297,11 @@ - - - + + + + + @@ -327,14 +331,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + @@ -347,7 +385,8 @@ - + diff --git a/wst/trunk/tests/google_api/test_google_api.pas b/wst/trunk/tests/google_api/test_google_api.pas index 024f00a34..787e723c2 100644 --- a/wst/trunk/tests/google_api/test_google_api.pas +++ b/wst/trunk/tests/google_api/test_google_api.pas @@ -12,7 +12,9 @@ uses googlewebapi, googlewebapi_proxy; Const - sADRESS = 'http:Address=http://api.google.com/search/beta2'; + //sADRESS = 'http:Address=http://api.google.com/search/beta2;Proxy'; + sADDRESS = 'http:Address=http://api.google.com/search/beta2'+ + ';ProxyServer=10.0.0.5;ProxyPort=8080'; sTARGET = 'urn:GoogleSearch'; sKEY = '0w9pU3tQFHJyjRUP/bKgv2qwCoXf5pop'; sSERVICE_PROTOCOL = 'SOAP'; @@ -30,7 +32,7 @@ begin WriteLn(); WriteLn('Enter phrase to spell :'); ReadLn(strBuffer); - tmpObj := TGoogleSearch_Proxy.Create(sTARGET,sSERVICE_PROTOCOL,sADRESS); + tmpObj := TGoogleSearch_Proxy.Create(sTARGET,sSERVICE_PROTOCOL,sADDRESS); Try strBuffer := tmpObj.doSpellingSuggestion(sKEY,strBuffer); WriteLn('google spell >>> ',strBuffer); diff --git a/wst/trunk/tests/http_server/wst_http_server.lpi b/wst/trunk/tests/http_server/wst_http_server.lpi index d87f81ca4..43d426c29 100644 --- a/wst/trunk/tests/http_server/wst_http_server.lpi +++ b/wst/trunk/tests/http_server/wst_http_server.lpi @@ -37,7 +37,7 @@ - + @@ -567,6 +567,9 @@ + + + diff --git a/wst/trunk/tests/library/lib_server.lpi b/wst/trunk/tests/library/lib_server.lpi new file mode 100644 index 000000000..f7cf2253b --- /dev/null +++ b/wst/trunk/tests/library/lib_server.lpi @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wst/trunk/tests/library/lib_server.lpr b/wst/trunk/tests/library/lib_server.lpr new file mode 100644 index 000000000..0f248ab8e --- /dev/null +++ b/wst/trunk/tests/library/lib_server.lpr @@ -0,0 +1,45 @@ +{ + 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. +} +library lib_server; + +{$mode objfpc}{$H+} + +uses + SysUtils, Classes, + + base_service_intf, + server_service_intf, + server_service_soap, server_binary_formatter, + metadata_repository, metadata_wsdl, + metadata_service, metadata_service_binder, metadata_service_imp, + library_base_intf, library_server_intf, + + calculator_binder, calculator_imp; + + + +exports + wstHandleRequest name WST_LIB_HANDLER; + +begin + RegisterStdTypes(); + Server_service_RegisterBinaryFormat(); + Server_service_RegisterSoapFormat(); + + RegisterCalculatorImplementationFactory(); + Server_service_RegisterCalculatorService(); + + Server_service_RegisterWSTMetadataServiceService(); + RegisterWSTMetadataServiceImplementationFactory(); +end. + diff --git a/wst/trunk/tests/metadata_browser/metadata_browser.lpi b/wst/trunk/tests/metadata_browser/metadata_browser.lpi index 4ccb4d94b..4e9059526 100644 --- a/wst/trunk/tests/metadata_browser/metadata_browser.lpi +++ b/wst/trunk/tests/metadata_browser/metadata_browser.lpi @@ -7,7 +7,6 @@ - @@ -29,14 +28,14 @@ - + - + @@ -44,74 +43,66 @@ - - - - - + + + - - - + + + - + - - - - + + - + - + - + - - - + - - - + @@ -119,48 +110,116 @@ - + - + - - - + - - - + + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -171,7 +230,7 @@ - + @@ -186,7 +245,8 @@ - + diff --git a/wst/trunk/tests/metadata_browser/umain.lfm b/wst/trunk/tests/metadata_browser/umain.lfm index fa99c6460..02b9b6087 100644 --- a/wst/trunk/tests/metadata_browser/umain.lfm +++ b/wst/trunk/tests/metadata_browser/umain.lfm @@ -7,25 +7,29 @@ object fMain: TfMain VertScrollBar.Page = 310 ActiveControl = edtAddress Caption = 'WST Metadata Browser' + ClientHeight = 311 + ClientWidth = 574 object pnlHead: TPanel Height = 82 Width = 574 Align = alTop + ClientHeight = 82 + ClientWidth = 574 TabOrder = 0 object Label1: TLabel Left = 14 - Height = 14 + Height = 18 Top = 12 - Width = 20 + Width = 26 Caption = 'URL' Color = clNone ParentColor = False end object Label3: TLabel Left = 11 - Height = 14 + Height = 18 Top = 46 - Width = 35 + Width = 45 Caption = 'Format' Color = clNone ParentColor = False @@ -58,7 +62,7 @@ object fMain: TfMain Left = 88 Height = 37 Top = 35 - Width = 238 + Width = 280 AutoFill = True Caption = ' &Format ' ChildSizing.LeftRightSpacing = 6 @@ -85,6 +89,8 @@ object fMain: TfMain Align = alClient BevelInner = bvRaised BevelOuter = bvLowered + ClientHeight = 229 + ClientWidth = 574 TabOrder = 1 object Label2: TLabel Left = 14 @@ -135,8 +141,8 @@ object fMain: TfMain end end object AL: TActionList - left = 48 - top = 384 + left = 72 + top = 464 object actGetRepositoryList: TAction Caption = 'Get Rep. List' OnExecute = actGetRepositoryListExecute diff --git a/wst/trunk/tests/metadata_browser/umain.lrs b/wst/trunk/tests/metadata_browser/umain.lrs index 3ab0a63c2..2e2ea5bf5 100644 --- a/wst/trunk/tests/metadata_browser/umain.lrs +++ b/wst/trunk/tests/metadata_browser/umain.lrs @@ -3,49 +3,50 @@ LazarusResources.Add('TfMain','FORMDATA',[ 'TPF0'#6'TfMain'#5'fMain'#4'Left'#3#175#0#6'Height'#3'7'#1#3'Top'#3#233#0#5'W' +'idth'#3'>'#2#18'HorzScrollBar.Page'#3'='#2#18'VertScrollBar.Page'#3'6'#1#13 - +'ActiveControl'#7#10'edtAddress'#7'Caption'#6#20'WST Metadata Browser'#0#6'T' - +'Panel'#7'pnlHead'#6'Height'#2'R'#5'Width'#3'>'#2#5'Align'#7#5'alTop'#8'TabO' - +'rder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#14#3'Top'#2#12#5'W' - +'idth'#2#20#7'Caption'#6#3'URL'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6 - +'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#14#3'Top'#2'.'#5'Width'#2'#'#7'C' - +'aption'#6#6'Format'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#10 - +'edtAddress'#4'Left'#2'X'#6'Height'#2#23#3'Top'#2#12#5'Width'#3#224#1#7'Anch' - +'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'Font.CharSet'#7#12'ANSI_CHARSET' - +#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#243#9'Font.Name'#6#5'Arial'#10 - +'Font.Pitch'#7#10'fpVariable'#8'TabOrder'#2#0#4'Text'#6'6http://127.0.0.1:80' - +'00/wst/services/IWSTMetadataService'#0#0#7'TButton'#13'btnGetRepList'#4'Lef' - +'t'#3#221#1#6'Height'#2#25#3'Top'#2'('#5'Width'#2'['#6'Action'#7#20'actGetRe' - +'positoryList'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBor' - +'der'#2#4#8'TabOrder'#2#2#0#0#11'TRadioGroup'#9'edtFormat'#4'Left'#2'X'#6'He' - +'ight'#2'%'#3'Top'#2'#'#5'Width'#3#238#0#8'AutoFill'#9#7'Caption'#6#9' &Form' - +'at '#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2 - +#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'Child' - +'Sizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.Shrin' - +'kHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsSc' - +'aleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Ch' - +'ildSizing.ControlsPerLine'#2#2#7'Columns'#2#2#9'ItemIndex'#2#0#13'Items.Str' - +'ings'#1#6#5'&SOAP'#6#7'&binary'#0#8'TabOrder'#2#1#0#0#0#6'TPanel'#9'pnlClie' - +'nt'#6'Height'#3#229#0#3'Top'#2'R'#5'Width'#3'>'#2#5'Align'#7#8'alClient'#10 - +'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#1#0#6 - +'TLabel'#6'Label2'#4'Left'#2#14#6'Height'#2#14#3'Top'#2#14#5'Width'#2'5'#7'C' - +'aption'#6#10'Repository'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TComb' - +'oBox'#17'edtRepositoryList'#4'Left'#2'p'#6'Height'#2#21#3'Top'#2#7#5'Width' - +#3'X'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11 - +#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'Ta' - +'bOrder'#2#0#4'Text'#6#17'edtRepositoryList'#0#0#9'TTreeView'#11'tvwMetadata' - +#4'Left'#2#11#6'Height'#3#176#0#3'Top'#2'&'#5'Width'#3'+'#2#7'Anchors'#11#5 - +'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'DefaultItemHeight'#2#18#12'Fon' - +'t.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2 - +#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#8'ReadOnly'#9 - +#8'TabOrder'#2#1#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21 - +'tvoKeepCollapsedNodes'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLines' - +#11'tvoShowRoot'#17'tvoShowSeparators'#11'tvoToolTips'#0#13'TreeLineColor'#7 - +#6'clNavy'#0#0#7'TButton'#7'Button1'#4'Left'#3#221#1#6'Height'#2#25#3'Top'#2 - +#6#5'Width'#2'['#6'Action'#7#16'actGetRepository'#7'Anchors'#11#5'akTop'#7'a' - +'kRight'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#0#11'TActio' - +'nList'#2'AL'#4'left'#2'0'#3'top'#3#128#1#0#7'TAction'#20'actGetRepositoryLi' - +'st'#7'Caption'#6#13'Get Rep. List'#9'OnExecute'#7#27'actGetRepositoryListEx' - +'ecute'#0#0#7'TAction'#16'actGetRepository'#7'Caption'#6#14'Get Repository'#9 - +'OnExecute'#7#23'actGetRepositoryExecute'#8'OnUpdate'#7#22'actGetRepositoryU' - +'pdate'#0#0#0#0 + +'ActiveControl'#7#10'edtAddress'#7'Caption'#6#20'WST Metadata Browser'#12'Cl' + +'ientHeight'#3'7'#1#11'ClientWidth'#3'>'#2#0#6'TPanel'#7'pnlHead'#6'Height'#2 + +'R'#5'Width'#3'>'#2#5'Align'#7#5'alTop'#12'ClientHeight'#2'R'#11'ClientWidth' + +#3'>'#2#8'TabOrder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#18#3 + +'Top'#2#12#5'Width'#2#26#7'Caption'#6#3'URL'#5'Color'#7#6'clNone'#11'ParentC' + +'olor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#18#3'Top'#2'.'#5'W' + +'idth'#2'-'#7'Caption'#6#6'Format'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0 + +#5'TEdit'#10'edtAddress'#4'Left'#2'X'#6'Height'#2#23#3'Top'#2#12#5'Width'#3 + +#224#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'Font.CharSet'#7#12'A' + +'NSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#243#9'Font.Name' + +#6#5'Arial'#10'Font.Pitch'#7#10'fpVariable'#8'TabOrder'#2#0#4'Text'#6'6http:' + +'//127.0.0.1:8000/wst/services/IWSTMetadataService'#0#0#7'TButton'#13'btnGet' + +'RepList'#4'Left'#3#221#1#6'Height'#2#25#3'Top'#2'('#5'Width'#2'['#6'Action' + +#7#20'actGetRepositoryList'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpa' + +'cing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#11'TRadioGroup'#9'edtFormat'#4'Le' + +'ft'#2'X'#6'Height'#2'%'#3'Top'#2'#'#5'Width'#3#24#1#8'AutoFill'#9#7'Caption' + +#6#9' &Format '#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBotto' + +'mSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResi' + +'ze'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'Child' + +'Sizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical' + +#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBot' + +'tom'#27'ChildSizing.ControlsPerLine'#2#2#7'Columns'#2#2#9'ItemIndex'#2#0#13 + +'Items.Strings'#1#6#5'&SOAP'#6#7'&binary'#0#8'TabOrder'#2#1#0#0#0#6'TPanel'#9 + +'pnlClient'#6'Height'#3#229#0#3'Top'#2'R'#5'Width'#3'>'#2#5'Align'#7#8'alCli' + +'ent'#10'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#12'ClientHe' + +'ight'#3#229#0#11'ClientWidth'#3'>'#2#8'TabOrder'#2#1#0#6'TLabel'#6'Label2'#4 + +'Left'#2#14#6'Height'#2#14#3'Top'#2#14#5'Width'#2'5'#7'Caption'#6#10'Reposit' + +'ory'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TComboBox'#17'edtReposito' + +'ryList'#4'Left'#2'p'#6'Height'#2#21#3'Top'#2#7#5'Width'#3'X'#1#7'Anchors'#11 + +#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineCo' + +'mplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'TabOrder'#2#0#4'Text' + +#6#17'edtRepositoryList'#0#0#9'TTreeView'#11'tvwMetadata'#4'Left'#2#11#6'Hei' + +'ght'#3#176#0#3'Top'#2'&'#5'Width'#3'+'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7 + +'akRight'#8'akBottom'#0#17'DefaultItemHeight'#2#18#12'Font.CharSet'#7#12'ANS' + +'I_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#243#9'Font.Name'#6 + +#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#8'ReadOnly'#9#8'TabOrder'#2#1#7 + +'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedN' + +'odes'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#17 + +'tvoShowSeparators'#11'tvoToolTips'#0#13'TreeLineColor'#7#6'clNavy'#0#0#7'TB' + +'utton'#7'Button1'#4'Left'#3#221#1#6'Height'#2#25#3'Top'#2#6#5'Width'#2'['#6 + +'Action'#7#16'actGetRepository'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'Borde' + +'rSpacing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#0#11'TActionList'#2'AL'#4'lef' + +'t'#2'H'#3'top'#3#208#1#0#7'TAction'#20'actGetRepositoryList'#7'Caption'#6#13 + +'Get Rep. List'#9'OnExecute'#7#27'actGetRepositoryListExecute'#0#0#7'TAction' + +#16'actGetRepository'#7'Caption'#6#14'Get Repository'#9'OnExecute'#7#23'actG' + +'etRepositoryExecute'#8'OnUpdate'#7#22'actGetRepositoryUpdate'#0#0#0#0 ]); diff --git a/wst/trunk/tests/metadata_browser/umain.pas b/wst/trunk/tests/metadata_browser/umain.pas index e8780389c..7c4af5ffc 100644 --- a/wst/trunk/tests/metadata_browser/umain.pas +++ b/wst/trunk/tests/metadata_browser/umain.pas @@ -45,6 +45,7 @@ uses base_service_intf, service_intf, soap_formatter, binary_formatter, synapse_http_protocol, //indy_http_protocol, ics_http_protocol, //ics_tcp_protocol, + library_protocol, metadata_service_proxy; { TfMain } @@ -93,8 +94,11 @@ begin Result := TWSTMetadataService_Proxy.Create( 'WSTMetadataService', s, - Format('http:Address=%s',[edtAddress.Text])// 'http:Address=http://127.0.0.1:8000/services/IWSTMetadataService' - ) as IWSTMetadataService;//'TCP:Address=127.0.0.1;Port=1234;target=Calculator' + Format('http:Address=%s',[edtAddress.Text]) + ) as IWSTMetadataService; +//lib:FileName=C:\Programmes\lazarus\wst\tests\library\obj\lib_server.dll;target=IWSTMetadataService +//'http:Address=http://127.0.0.1:8000/services/IWSTMetadataService' +//'TCP:Address=127.0.0.1;Port=1234;target=Calculator' end; procedure TfMain.LoadRepository(ARep: TWSTMtdRepository); @@ -158,6 +162,7 @@ initialization RegisterStdTypes(); SYNAPSE_RegisterHTTP_Transport(); + LIB_Register_Transport(); //ICS_RegisterHTTP_Transport(); //INDY_RegisterHTTP_Transport(); end. diff --git a/wst/trunk/ws_helper/ws_helper.lpi b/wst/trunk/ws_helper/ws_helper.lpi index d5a3145bb..5c2f5794d 100644 --- a/wst/trunk/ws_helper/ws_helper.lpi +++ b/wst/trunk/ws_helper/ws_helper.lpi @@ -257,15 +257,27 @@ + + + + + + + + + + + - +