From b2525ef5c17ac7346d5c64877b543f17ad87df83 Mon Sep 17 00:00:00 2001 From: inoussa Date: Mon, 9 Nov 2009 09:58:51 +0000 Subject: [PATCH] Parse only _once_ any binding (wsdl). git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@999 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- wst/trunk/ws_helper/wsdl_parser.pas | 34 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/wst/trunk/ws_helper/wsdl_parser.pas b/wst/trunk/ws_helper/wsdl_parser.pas index 0ec3fdd05..6432f9557 100644 --- a/wst/trunk/ws_helper/wsdl_parser.pas +++ b/wst/trunk/ws_helper/wsdl_parser.pas @@ -943,23 +943,25 @@ begin if ExtractBindingQName(bindingName) then begin i := Pos(':',bindingName); bindingName := Copy(bindingName,( i + 1 ), MaxInt); - bindingNode := FindBindingNode(bindingName); - if Assigned(bindingNode) then begin - if ExtractTypeQName(bindingNode,typeName) then begin - i := Pos(':',typeName); - typeName := Copy(typeName,( i + 1 ), MaxInt); - typeNode := FindTypeNode(typeName); - if Assigned(typeNode) then begin - ExtractSoapBindingStyle(bindingNode,locWStrBuffer); - locSoapBindingStyle := locWStrBuffer; - if IsStrEmpty(locSoapBindingStyle) then - locSoapBindingStyle := s_document; - intfDef := ParsePortType(typeNode,bindingNode,locSoapBindingStyle); - bdng := SymbolTable.AddBinding(bindingName,intfDef); - bdng.Address := ExtractAddress(); - bdng.BindingStyle := StrToBindingStyle(locSoapBindingStyle); + if ( SymbolTable.FindBinding(bindingName) = nil ) then begin + bindingNode := FindBindingNode(bindingName); + if Assigned(bindingNode) then begin + if ExtractTypeQName(bindingNode,typeName) then begin + i := Pos(':',typeName); + typeName := Copy(typeName,( i + 1 ), MaxInt); + typeNode := FindTypeNode(typeName); + if Assigned(typeNode) then begin + ExtractSoapBindingStyle(bindingNode,locWStrBuffer); + locSoapBindingStyle := locWStrBuffer; + if IsStrEmpty(locSoapBindingStyle) then + locSoapBindingStyle := s_document; + intfDef := ParsePortType(typeNode,bindingNode,locSoapBindingStyle); + bdng := SymbolTable.AddBinding(bindingName,intfDef); + bdng.Address := ExtractAddress(); + bdng.BindingStyle := StrToBindingStyle(locSoapBindingStyle); + end; end; - end; + end; end; end; end;