soap4r_es 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wsdl2ruby.rb +140 -0
  3. data/bin/wsdl2ruby_rails.rb +140 -0
  4. data/bin/xsd2ruby.rb +92 -0
  5. data/lib/soap/attachment.rb +109 -0
  6. data/lib/soap/attrproxy.rb +35 -0
  7. data/lib/soap/baseData.rb +1095 -0
  8. data/lib/soap/element.rb +278 -0
  9. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  10. data/lib/soap/encodingstyle/handler.rb +121 -0
  11. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  12. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  13. data/lib/soap/filter/filterchain.rb +52 -0
  14. data/lib/soap/filter/handler.rb +32 -0
  15. data/lib/soap/filter/streamhandler.rb +30 -0
  16. data/lib/soap/filter.rb +14 -0
  17. data/lib/soap/generator.rb +299 -0
  18. data/lib/soap/header/handler.rb +64 -0
  19. data/lib/soap/header/handlerset.rb +78 -0
  20. data/lib/soap/header/mappinghandler.rb +48 -0
  21. data/lib/soap/header/simplehandler.rb +45 -0
  22. data/lib/soap/httpconfigloader.rb +140 -0
  23. data/lib/soap/mapping/encodedregistry.rb +541 -0
  24. data/lib/soap/mapping/factory.rb +389 -0
  25. data/lib/soap/mapping/literalregistry.rb +392 -0
  26. data/lib/soap/mapping/mapping.rb +577 -0
  27. data/lib/soap/mapping/registry.rb +297 -0
  28. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  29. data/lib/soap/mapping/schemadefinition.rb +171 -0
  30. data/lib/soap/mapping/typeMap.rb +107 -0
  31. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  32. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  33. data/lib/soap/mapping.rb +13 -0
  34. data/lib/soap/marshal.rb +60 -0
  35. data/lib/soap/mimemessage.rb +243 -0
  36. data/lib/soap/nestedexception.rb +43 -0
  37. data/lib/soap/netHttpClient.rb +242 -0
  38. data/lib/soap/ns.rb +39 -0
  39. data/lib/soap/parser.rb +253 -0
  40. data/lib/soap/processor.rb +67 -0
  41. data/lib/soap/property.rb +330 -0
  42. data/lib/soap/proxy.rb +15 -0
  43. data/lib/soap/rpc/cgistub.rb +249 -0
  44. data/lib/soap/rpc/driver.rb +222 -0
  45. data/lib/soap/rpc/element.rb +375 -0
  46. data/lib/soap/rpc/httpserver.rb +144 -0
  47. data/lib/soap/rpc/methodDef.rb +69 -0
  48. data/lib/soap/rpc/proxy.rb +573 -0
  49. data/lib/soap/rpc/router.rb +672 -0
  50. data/lib/soap/rpc/rpc.rb +26 -0
  51. data/lib/soap/rpc/soaplet.rb +201 -0
  52. data/lib/soap/rpc/standaloneServer.rb +44 -0
  53. data/lib/soap/soap.rb +163 -0
  54. data/lib/soap/streamHandler.rb +302 -0
  55. data/lib/soap/version.rb +12 -0
  56. data/lib/soap/wsdlDriver.rb +165 -0
  57. data/lib/wsdl/binding.rb +66 -0
  58. data/lib/wsdl/data.rb +65 -0
  59. data/lib/wsdl/definitions.rb +237 -0
  60. data/lib/wsdl/documentation.rb +33 -0
  61. data/lib/wsdl/import.rb +81 -0
  62. data/lib/wsdl/importer.rb +39 -0
  63. data/lib/wsdl/info.rb +51 -0
  64. data/lib/wsdl/message.rb +55 -0
  65. data/lib/wsdl/operation.rb +152 -0
  66. data/lib/wsdl/operationBinding.rb +241 -0
  67. data/lib/wsdl/param.rb +94 -0
  68. data/lib/wsdl/parser.rb +180 -0
  69. data/lib/wsdl/part.rb +53 -0
  70. data/lib/wsdl/port.rb +67 -0
  71. data/lib/wsdl/portType.rb +76 -0
  72. data/lib/wsdl/service.rb +62 -0
  73. data/lib/wsdl/soap/address.rb +41 -0
  74. data/lib/wsdl/soap/binding.rb +50 -0
  75. data/lib/wsdl/soap/body.rb +59 -0
  76. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  77. data/lib/wsdl/soap/classDefCreator.rb +529 -0
  78. data/lib/wsdl/soap/classDefCreatorSupport.rb +242 -0
  79. data/lib/wsdl/soap/classNameCreator.rb +57 -0
  80. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  81. data/lib/wsdl/soap/complexType.rb +174 -0
  82. data/lib/wsdl/soap/data.rb +43 -0
  83. data/lib/wsdl/soap/definitions.rb +201 -0
  84. data/lib/wsdl/soap/driverCreator.rb +121 -0
  85. data/lib/wsdl/soap/element.rb +34 -0
  86. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  87. data/lib/wsdl/soap/fault.rb +57 -0
  88. data/lib/wsdl/soap/header.rb +87 -0
  89. data/lib/wsdl/soap/headerfault.rb +57 -0
  90. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  91. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  92. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +380 -0
  93. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  94. data/lib/wsdl/soap/operation.rb +113 -0
  95. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  96. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  97. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  98. data/lib/wsdl/soap/wsdl2ruby.rb +249 -0
  99. data/lib/wsdl/types.rb +45 -0
  100. data/lib/wsdl/wsdl.rb +25 -0
  101. data/lib/wsdl/xmlSchema/all.rb +25 -0
  102. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  103. data/lib/wsdl/xmlSchema/any.rb +62 -0
  104. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  105. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  106. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  107. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  108. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  109. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  110. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  111. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  112. data/lib/wsdl/xmlSchema/content.rb +96 -0
  113. data/lib/wsdl/xmlSchema/data.rb +117 -0
  114. data/lib/wsdl/xmlSchema/element.rb +154 -0
  115. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  116. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  117. data/lib/wsdl/xmlSchema/group.rb +101 -0
  118. data/lib/wsdl/xmlSchema/import.rb +53 -0
  119. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  120. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  121. data/lib/wsdl/xmlSchema/include.rb +48 -0
  122. data/lib/wsdl/xmlSchema/length.rb +38 -0
  123. data/lib/wsdl/xmlSchema/list.rb +49 -0
  124. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  125. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  128. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  129. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  130. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  131. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  132. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  133. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  134. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  135. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  136. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  137. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  138. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  139. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  140. data/lib/wsdl/xmlSchema/union.rb +36 -0
  141. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  142. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  143. data/lib/wsdl/xmlSchema/xsd2ruby.rb +177 -0
  144. data/lib/xsd/charset.rb +190 -0
  145. data/lib/xsd/codegen/classdef.rb +230 -0
  146. data/lib/xsd/codegen/commentdef.rb +35 -0
  147. data/lib/xsd/codegen/gensupport.rb +277 -0
  148. data/lib/xsd/codegen/methoddef.rb +71 -0
  149. data/lib/xsd/codegen/moduledef.rb +209 -0
  150. data/lib/xsd/codegen.rb +13 -0
  151. data/lib/xsd/datatypes.rb +1465 -0
  152. data/lib/xsd/datatypes1999.rb +21 -0
  153. data/lib/xsd/iconvcharset.rb +33 -0
  154. data/lib/xsd/mapping.rb +69 -0
  155. data/lib/xsd/namedelements.rb +133 -0
  156. data/lib/xsd/ns.rb +183 -0
  157. data/lib/xsd/qname.rb +80 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +136 -0
  159. data/lib/xsd/xmlparser/nokogiriparser.rb +63 -0
  160. data/lib/xsd/xmlparser/ogaparser.rb +53 -0
  161. data/lib/xsd/xmlparser/oxparser.rb +97 -0
  162. data/lib/xsd/xmlparser/parser.rb +101 -0
  163. data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  164. data/lib/xsd/xmlparser.rb +81 -0
  165. metadata +240 -0
@@ -0,0 +1,297 @@
1
+ # encoding: UTF-8
2
+ # SOAP4R - Mapping registry.
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'soap/baseData'
11
+ require 'soap/mapping/mapping'
12
+
13
+
14
+ module SOAP
15
+
16
+
17
+ module Marshallable
18
+ # @@type_ns = Mapping::RubyCustomTypeNamespace
19
+ end
20
+
21
+
22
+ module Mapping
23
+
24
+
25
+ module MappedException; end
26
+
27
+
28
+ RubyTypeName = XSD::QName.new(RubyTypeInstanceNamespace, 'rubyType')
29
+ RubyExtendName = XSD::QName.new(RubyTypeInstanceNamespace, 'extends')
30
+ RubyIVarName = XSD::QName.new(RubyTypeInstanceNamespace, 'ivars')
31
+
32
+
33
+ # For anyType object: SOAP::Mapping::Object not ::Object
34
+ class Object
35
+ def initialize
36
+ @__xmlele_type = {}
37
+ @__xmlele = []
38
+ @__xmlattr = {}
39
+ end
40
+
41
+ def inspect
42
+ sprintf("#<%s:0x%x%s>", self.class.name, __id__,
43
+ @__xmlele.collect { |name, value| " #{name}=#{value.inspect}" }.join)
44
+ end
45
+
46
+ def __xmlattr
47
+ @__xmlattr
48
+ end
49
+
50
+ def __xmlele
51
+ @__xmlele
52
+ end
53
+
54
+ def [](qname)
55
+ qname = Mapping.to_qname(qname)
56
+ @__xmlele.each do |k, v|
57
+ return v if k == qname
58
+ end
59
+ # fallback
60
+ @__xmlele.each do |k, v|
61
+ return v if k.name == qname.name
62
+ end
63
+ nil
64
+ end
65
+
66
+ def []=(qname, value)
67
+ qname = Mapping.to_qname(qname)
68
+ found = false
69
+ @__xmlele.each do |pair|
70
+ if pair[0] == qname
71
+ found = true
72
+ pair[1] = value
73
+ end
74
+ end
75
+ unless found
76
+ __define_attr_accessor(qname)
77
+ @__xmlele << [qname, value]
78
+ end
79
+ @__xmlele_type[qname] = :single
80
+ end
81
+
82
+ def __add_xmlele_value(qname, value)
83
+ found = false
84
+ @__xmlele.map! do |k, v|
85
+ if k == qname
86
+ found = true
87
+ [k, __set_xmlele_value(k, v, value)]
88
+ else
89
+ [k, v]
90
+ end
91
+ end
92
+ unless found
93
+ __define_attr_accessor(qname)
94
+ @__xmlele << [qname, value]
95
+ @__xmlele_type[qname] = :single
96
+ end
97
+ value
98
+ end
99
+
100
+ def marshal_load(dumpobj)
101
+ __import(dumpobj)
102
+ end
103
+
104
+ private
105
+
106
+ # Mapping.define_attr_accessor calls define_method with proc and it exhausts
107
+ # much memory for each singleton Object. just instance_eval instead of it.
108
+ def __define_attr_accessor(qname)
109
+ # untaint depends GenSupport.safemethodname
110
+ name = Mapping.safemethodname(qname.name).untaint
111
+ # untaint depends on QName#dump
112
+ qnamedump = qname.dump.untaint
113
+ singleton = false
114
+ unless self.respond_to?(name)
115
+ singleton = true
116
+ instance_eval <<-EOS
117
+ def #{name}
118
+ self[#{qnamedump}]
119
+ end
120
+ EOS
121
+ end
122
+ unless self.respond_to?(name + "=")
123
+ singleton = true
124
+ instance_eval <<-EOS
125
+ def #{name}=(value)
126
+ self[#{qnamedump}] = value
127
+ end
128
+ EOS
129
+ end
130
+ if singleton && !self.respond_to?(:marshal_dump)
131
+ instance_eval <<-EOS
132
+ def marshal_dump
133
+ __export
134
+ end
135
+ EOS
136
+ end
137
+ end
138
+
139
+ def __set_xmlele_value(key, org, value)
140
+ case @__xmlele_type[key]
141
+ when :multi
142
+ org << value
143
+ org
144
+ when :single
145
+ @__xmlele_type[key] = :multi
146
+ [org, value]
147
+ else
148
+ raise RuntimeError.new("unknown type")
149
+ end
150
+ end
151
+
152
+ def __export
153
+ dumpobj = ::SOAP::Mapping::Object.new
154
+ dumpobj.__xmlele.replace(@__xmlele)
155
+ dumpobj.__xmlattr.replace(@__xmlattr)
156
+ dumpobj
157
+ end
158
+
159
+ def __import(dumpobj)
160
+ @__xmlele_type = {}
161
+ @__xmlele = []
162
+ @__xmlattr = {}
163
+ dumpobj.__xmlele.each do |qname, value|
164
+ __add_xmlele_value(qname, value)
165
+ end
166
+ @__xmlattr.replace(dumpobj.__xmlattr)
167
+ end
168
+ end
169
+
170
+
171
+ class MappingError < Error; end
172
+
173
+
174
+ module RegistrySupport
175
+ def initialize
176
+ super()
177
+ @class_schema_definition = {}
178
+ @class_elename_schema_definition = {}
179
+ @elename_schema_definition = {}
180
+ @type_schema_definition = {}
181
+ end
182
+
183
+ def register(definition)
184
+ obj_class = definition[:class]
185
+ definition = Mapping.create_schema_definition(obj_class, definition)
186
+ # give complexType definition a priority explicitly
187
+ if !@class_schema_definition[obj_class] or definition.type
188
+ @class_schema_definition[obj_class] = definition
189
+ end
190
+ if definition.elename and !definition.is_anonymous?
191
+ @class_elename_schema_definition[obj_class] = definition
192
+ @elename_schema_definition[definition.elename] = definition
193
+ end
194
+ if definition.type
195
+ @type_schema_definition[definition.type] = definition
196
+ end
197
+ end
198
+
199
+ def schema_definition_from_class(klass)
200
+ @class_schema_definition[klass] || Mapping.schema_definition_classdef(klass)
201
+ end
202
+
203
+ def elename_schema_definition_from_class(klass)
204
+ @class_elename_schema_definition[klass]
205
+ end
206
+
207
+ def schema_definition_from_elename(qname)
208
+ @elename_schema_definition[qname]
209
+ end
210
+
211
+ def schema_definition_from_type(type)
212
+ @type_schema_definition[type]
213
+ end
214
+
215
+ def find_node_definition(node)
216
+ name = schema_definition_from_type(node.type)
217
+ name ||= schema_definition_from_elename(node.elename)
218
+ name = find_schema_definition(node.elename.name) if !node.elename.blank? && name.blank?
219
+ name = find_schema_definition(node.type.name) if !node.type.blank? && name.blank?
220
+ name
221
+ end
222
+
223
+ def find_schema_definition(name)
224
+ return nil unless name
225
+ typestr = Mapping.safeconstname(name)
226
+ obj_class = Mapping.class_from_name(typestr)
227
+ if obj_class
228
+ schema_definition_from_class(obj_class)
229
+ end
230
+ end
231
+
232
+ def add_attributes2soap(obj, ele)
233
+ if definition = Mapping.schema_definition_classdef(obj.class)
234
+ add_definedattributes2soap(obj, ele, definition)
235
+ elsif obj.respond_to?(:__xmlattr)
236
+ obj.__xmlattr.each do |key, value|
237
+ ele.extraattr[key] = value
238
+ end
239
+ end
240
+ end
241
+
242
+ def add_definedattributes2soap(obj, ele, typedef)
243
+ if typedef.attributes
244
+ typedef.attributes.each do |qname, param|
245
+ value = get_xmlattr_value(obj, qname)
246
+ ele.extraattr[qname] = value unless value.nil?
247
+ end
248
+ end
249
+ end
250
+
251
+ def get_xmlattr_value(obj, qname)
252
+ attrname = 'xmlattr_' + qname.name
253
+ value = Mapping.get_attribute(obj, attrname)
254
+ if value.nil?
255
+ attrname = Mapping.safemethodname('xmlattr_' + qname.name)
256
+ value = Mapping.get_attribute(obj, attrname)
257
+ end
258
+ value
259
+ end
260
+
261
+ def base2soap(obj, type, qualified = nil)
262
+ return SOAPNil.new if obj.nil?
263
+ soap_obj = nil
264
+ if type <= XSD::XSDString
265
+ str = XSD::Charset.encoding_conv(obj.to_s, Mapping.external_ces,
266
+ XSD::Charset.encoding)
267
+ soap_obj = type.new(str)
268
+ else
269
+ soap_obj = type.new(obj)
270
+ end
271
+ soap_obj.qualified = qualified
272
+ soap_obj
273
+ end
274
+
275
+ def base2obj(value, klass)
276
+ v = if value.respond_to?(:data)
277
+ value.data
278
+ elsif value.respond_to?(:text)
279
+ value.text
280
+ else
281
+ nil
282
+ end
283
+ if value.is_a?(klass)
284
+ v
285
+ else
286
+ klass.to_data(v)
287
+ end
288
+ end
289
+
290
+ def is_stubobj_elements_for_array(vars)
291
+ vars.keys.size == 1 and vars.values[0].is_a?(::Array)
292
+ end
293
+ end
294
+
295
+
296
+ end
297
+ end