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 @@
+
+
+
+
+
+
+
+
+
+
+
-
+