mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
"parts" attribute of soap:body element in WSDL.
        * lib/wsdl/xmlSchema/schema.rb: friendly warning message for
          simpleType element which is not supported for now.
        * test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
          files.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
			
			
This commit is contained in:
		
							parent
							
								
									11685dc1ee
								
							
						
					
					
						commit
						290034fde8
					
				
					 5 changed files with 40 additions and 6 deletions
				
			
		
							
								
								
									
										11
									
								
								ChangeLog
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								ChangeLog
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,14 @@
 | 
			
		|||
Sun Jan 18 20:00:16 2004  NAKAMURA, Hiroshi  <nakahiro@sarion.co.jp>
 | 
			
		||||
 | 
			
		||||
	* lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
 | 
			
		||||
	  "parts" attribute of soap:body element in WSDL.
 | 
			
		||||
 | 
			
		||||
	* lib/wsdl/xmlSchema/schema.rb: friendly warning message for
 | 
			
		||||
	  simpleType element which is not supported for now.
 | 
			
		||||
 | 
			
		||||
	* test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
 | 
			
		||||
	  files.
 | 
			
		||||
 | 
			
		||||
Sun Jan 18 16:46:48 2004  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* time.c (time_overflow_p): should return results.  [ruby-dev:22614]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								MANIFEST
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								MANIFEST
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -749,6 +749,7 @@ test/ruby/test_signal.rb
 | 
			
		|||
test/ruby/test_stringchar.rb
 | 
			
		||||
test/ruby/test_struct.rb
 | 
			
		||||
test/ruby/test_system.rb
 | 
			
		||||
test/ruby/test_time.rb
 | 
			
		||||
test/ruby/test_trace.rb
 | 
			
		||||
test/ruby/test_variable.rb
 | 
			
		||||
test/ruby/test_whileuntil.rb
 | 
			
		||||
| 
						 | 
				
			
			@ -821,6 +822,8 @@ test/wsdl/raa/RAAService.rb
 | 
			
		|||
test/wsdl/raa/README.txt
 | 
			
		||||
test/wsdl/raa/raa.wsdl
 | 
			
		||||
test/wsdl/raa/test_raa.rb
 | 
			
		||||
test/wsdl/soap/soapbodyparts.wsdl
 | 
			
		||||
test/wsdl/soap/test_soapbodyparts.rb
 | 
			
		||||
test/wsdl/test_emptycomplextype.rb
 | 
			
		||||
test/wsdl/test_fault.rb
 | 
			
		||||
test/xsd/noencoding.xml
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -206,11 +206,7 @@ class WSDLDriver
 | 
			
		|||
      log(DEBUG) { "call: parameters '#{ params.inspect }'." }
 | 
			
		||||
 | 
			
		||||
      op_info = @operations[method_name]
 | 
			
		||||
      parts_names = op_info.bodyparts.collect { |part| part.name }
 | 
			
		||||
      obj = create_method_obj(parts_names, params)
 | 
			
		||||
      method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.optype_name)
 | 
			
		||||
      method.elename = op_info.op_name
 | 
			
		||||
      method.type = XSD::QName.new	# Request should not be typed.
 | 
			
		||||
      method = create_method_struct(op_info, params)
 | 
			
		||||
      req_header = nil
 | 
			
		||||
      req_body = SOAPBody.new(method)
 | 
			
		||||
      req_env = SOAPEnvelope.new(req_header, req_body)
 | 
			
		||||
| 
						 | 
				
			
			@ -264,6 +260,24 @@ class WSDLDriver
 | 
			
		|||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
    def create_method_struct(op_info, params)
 | 
			
		||||
      parts_names = op_info.bodyparts.collect { |part| part.name }
 | 
			
		||||
      obj = create_method_obj(parts_names, params)
 | 
			
		||||
      method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.optype_name)
 | 
			
		||||
      if method.members.size != parts_names.size
 | 
			
		||||
	new_method = SOAPStruct.new
 | 
			
		||||
	method.each do |key, value|
 | 
			
		||||
	  if parts_names.include?(key)
 | 
			
		||||
	    new_method.add(key, value)
 | 
			
		||||
	  end
 | 
			
		||||
	end
 | 
			
		||||
	method = new_method
 | 
			
		||||
      end
 | 
			
		||||
      method.elename = op_info.op_name
 | 
			
		||||
      method.type = XSD::QName.new	# Request should not be typed.
 | 
			
		||||
      method
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def create_method_obj(names, params)
 | 
			
		||||
      o = Object.new
 | 
			
		||||
      for idx in 0 ... params.length
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,7 +104,10 @@ private
 | 
			
		|||
      op_name.namespace = soapbody.namespace
 | 
			
		||||
    end
 | 
			
		||||
    if soapbody.parts
 | 
			
		||||
      raise NotImplementedError.new("soap:body parts")
 | 
			
		||||
      target = soapbody.parts.split(/\s+/)
 | 
			
		||||
      bodyparts = name_info.parts.find_all { |part|
 | 
			
		||||
	target.include?(part.name)
 | 
			
		||||
      }
 | 
			
		||||
    else
 | 
			
		||||
      bodyparts = name_info.parts
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,9 @@ class Schema < Info
 | 
			
		|||
      o = ComplexType.new
 | 
			
		||||
      @complextypes << o
 | 
			
		||||
      o
 | 
			
		||||
    when SimpleTypeName
 | 
			
		||||
      STDERR.puts("Restriction of basetype with simpleType definition is ignored for now.")
 | 
			
		||||
      nil
 | 
			
		||||
    when ElementName
 | 
			
		||||
      o = Element.new
 | 
			
		||||
      @elements << o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue