Changeset 1827
- Timestamp:
- 06/03/07 13:56:54 (1 year ago)
- Files:
-
- trunk/lib/soap/mapping/mapping.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (2 diffs)
- trunk/lib/wsdl/soap/classDefCreatorSupport.rb (modified) (6 diffs)
- trunk/lib/wsdl/soap/clientSkeltonCreator.rb (modified) (1 diff)
- trunk/lib/wsdl/soap/complexType.rb (modified) (4 diffs)
- trunk/lib/wsdl/soap/element.rb (modified) (1 diff)
- trunk/lib/wsdl/soap/servantSkeltonCreator.rb (modified) (2 diffs)
- trunk/lib/wsdl/xmlSchema/content.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/mapping.rb
r1824 r1827 437 437 default_ns ||= type.namespace if type 438 438 definition.elements = parse_schema_definition(schema_element, default_ns) 439 # needed?440 439 if klass < ::Array 441 440 definition.elements.set_array … … 459 458 element_definition = parse_schema_element_definition(ele, default_ns) 460 459 definition << element_definition 461 if element_definition.as_array?462 definition.set_array463 end464 460 end 465 461 definition trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1824 r1827 174 174 def complexobj2soapchildren_array(obj, ele, child_ele, allow_nil_value) 175 175 child = Mapping.get_attribute(obj, child_ele.name.name) 176 if child.nil? and obj. respond_to?(:each)176 if child.nil? and obj.is_a?(::Array) 177 177 child = obj 178 178 end … … 227 227 nil # intends no element 228 228 else 229 raise MappingError.new("nil not allowed: #{ele.name.name}") 229 warn("nil not allowed: #{ele.name.name}") 230 nil 230 231 end 231 232 end trunk/lib/wsdl/soap/classDefCreatorSupport.rb
r1824 r1827 37 37 end 38 38 39 def dump_method_signature(operation )39 def dump_method_signature(operation, element_definitions) 40 40 name = operation.name 41 41 input = operation.input … … 48 48 # 49 49 # ARGS 50 #{dump_inout_type(input ).chomp}50 #{dump_inout_type(input, element_definitions).chomp} 51 51 # 52 52 # RETURNS 53 #{dump_inout_type(output ).chomp}53 #{dump_inout_type(output, element_definitions).chomp} 54 54 # 55 55 __EOD__ … … 57 57 str <<<<__EOD__ 58 58 # RAISES 59 #{dump_fault_type(fault )}59 #{dump_fault_type(fault, element_definitions)} 60 60 # 61 61 __EOD__ … … 86 86 private 87 87 88 def dump_inout_type(param )88 def dump_inout_type(param, element_definitions) 89 89 if param 90 90 message = param.find_message … … 94 94 if part.type 95 95 typename = safeconstname(part.type.name) 96 params << add_at("# #{name}", "#{typename} - #{part.type}\n", 20) 96 qname = part.type 97 params << add_at("# #{name}", "#{typename} - #{qname}\n", 20) 97 98 elsif part.element 98 typename = safeconstname(part.element.name) 99 params << add_at("# #{name}", "#{typename} - #{part.element}\n", 20) 99 ele = element_definitions[part.element] 100 if ele.type 101 typename = safeconstname(ele.type.name) 102 qname = ele.type 103 else 104 typename = safeconstname(ele.name.name) 105 qname = ele.name 106 end 107 params << add_at("# #{name}", "#{typename} - #{qname}\n", 20) 100 108 end 101 109 end … … 129 137 end 130 138 131 def dump_fault_type(fault )139 def dump_fault_type(fault, element_definitions) 132 140 fault.collect { |ele| 133 dump_inout_type(ele ).chomp141 dump_inout_type(ele, element_definitions).chomp 134 142 }.join("\n") 135 143 end trunk/lib/wsdl/soap/clientSkeltonCreator.rb
r1824 r1827 62 62 63 63 __EOD__ 64 element_definitions = @definitions.collect_elements 64 65 @definitions.porttype(name).operations.each do |operation| 65 result << dump_method_signature(operation )66 result << dump_method_signature(operation, element_definitions) 66 67 result << dump_input_init(operation.input) << "\n" 67 68 result << dump_operation(operation) << "\n\n" trunk/lib/wsdl/soap/complexType.rb
r1824 r1827 24 24 :TYPE_STRUCT 25 25 elsif content 26 e = elements 27 if attributes.empty? and e.size == 1 and e[0].map_as_array? 26 if attributes.empty? and map_as_array? 28 27 if name == ::SOAP::Mapping::MapQName 29 28 :TYPE_MAP … … 108 107 end 109 108 end 110 if check_array_content109 if map_as_array? 111 110 return element_simpletype(elements[0]) 112 111 end … … 118 117 raise RuntimeError.new("Assert: not for array") 119 118 end 120 if check_array_content119 if map_as_array? 121 120 return nested_elements[0] 122 121 end … … 144 143 end 145 144 146 def check_array_content147 e = elements145 def map_as_array? 146 e = nested_elements 148 147 e.size == 1 and e[0].map_as_array? 149 148 end trunk/lib/wsdl/soap/element.rb
r1824 r1827 16 16 class Element < Info 17 17 def map_as_array? 18 maxoccurs.nil? or maxoccurs != 1 18 # parent sequence / choice may be marked as maxOccurs="unbounded" 19 maxoccurs.nil? or maxoccurs != 1 or (parent and parent.map_as_array?) 19 20 end 20 21 trunk/lib/wsdl/soap/servantSkeltonCreator.rb
r1824 r1827 55 55 class_name = create_class_name(name) 56 56 c = XSD::CodeGen::ClassDef.new(class_name) 57 element_definitions = @definitions.collect_elements 57 58 operations = @definitions.porttype(name).operations 58 59 operations.each do |operation| … … 67 68 EOD 68 69 end 69 m.comment = dump_method_signature(operation )70 m.comment = dump_method_signature(operation, element_definitions) 70 71 c.add_method(m) 71 72 end trunk/lib/wsdl/xmlSchema/content.rb
r1824 r1827 40 40 def choice? 41 41 false 42 end 43 44 def map_as_array? 45 maxoccurs.nil? or maxoccurs != 1 42 46 end 43 47