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.
- checksums.yaml +7 -0
- data/bin/wsdl2ruby.rb +140 -0
- data/bin/wsdl2ruby_rails.rb +140 -0
- data/bin/xsd2ruby.rb +92 -0
- data/lib/soap/attachment.rb +109 -0
- data/lib/soap/attrproxy.rb +35 -0
- data/lib/soap/baseData.rb +1095 -0
- data/lib/soap/element.rb +278 -0
- data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
- data/lib/soap/encodingstyle/handler.rb +121 -0
- data/lib/soap/encodingstyle/literalHandler.rb +196 -0
- data/lib/soap/encodingstyle/soapHandler.rb +560 -0
- data/lib/soap/filter/filterchain.rb +52 -0
- data/lib/soap/filter/handler.rb +32 -0
- data/lib/soap/filter/streamhandler.rb +30 -0
- data/lib/soap/filter.rb +14 -0
- data/lib/soap/generator.rb +299 -0
- data/lib/soap/header/handler.rb +64 -0
- data/lib/soap/header/handlerset.rb +78 -0
- data/lib/soap/header/mappinghandler.rb +48 -0
- data/lib/soap/header/simplehandler.rb +45 -0
- data/lib/soap/httpconfigloader.rb +140 -0
- data/lib/soap/mapping/encodedregistry.rb +541 -0
- data/lib/soap/mapping/factory.rb +389 -0
- data/lib/soap/mapping/literalregistry.rb +392 -0
- data/lib/soap/mapping/mapping.rb +577 -0
- data/lib/soap/mapping/registry.rb +297 -0
- data/lib/soap/mapping/rubytypeFactory.rb +446 -0
- data/lib/soap/mapping/schemadefinition.rb +171 -0
- data/lib/soap/mapping/typeMap.rb +107 -0
- data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
- data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
- data/lib/soap/mapping.rb +13 -0
- data/lib/soap/marshal.rb +60 -0
- data/lib/soap/mimemessage.rb +243 -0
- data/lib/soap/nestedexception.rb +43 -0
- data/lib/soap/netHttpClient.rb +242 -0
- data/lib/soap/ns.rb +39 -0
- data/lib/soap/parser.rb +253 -0
- data/lib/soap/processor.rb +67 -0
- data/lib/soap/property.rb +330 -0
- data/lib/soap/proxy.rb +15 -0
- data/lib/soap/rpc/cgistub.rb +249 -0
- data/lib/soap/rpc/driver.rb +222 -0
- data/lib/soap/rpc/element.rb +375 -0
- data/lib/soap/rpc/httpserver.rb +144 -0
- data/lib/soap/rpc/methodDef.rb +69 -0
- data/lib/soap/rpc/proxy.rb +573 -0
- data/lib/soap/rpc/router.rb +672 -0
- data/lib/soap/rpc/rpc.rb +26 -0
- data/lib/soap/rpc/soaplet.rb +201 -0
- data/lib/soap/rpc/standaloneServer.rb +44 -0
- data/lib/soap/soap.rb +163 -0
- data/lib/soap/streamHandler.rb +302 -0
- data/lib/soap/version.rb +12 -0
- data/lib/soap/wsdlDriver.rb +165 -0
- data/lib/wsdl/binding.rb +66 -0
- data/lib/wsdl/data.rb +65 -0
- data/lib/wsdl/definitions.rb +237 -0
- data/lib/wsdl/documentation.rb +33 -0
- data/lib/wsdl/import.rb +81 -0
- data/lib/wsdl/importer.rb +39 -0
- data/lib/wsdl/info.rb +51 -0
- data/lib/wsdl/message.rb +55 -0
- data/lib/wsdl/operation.rb +152 -0
- data/lib/wsdl/operationBinding.rb +241 -0
- data/lib/wsdl/param.rb +94 -0
- data/lib/wsdl/parser.rb +180 -0
- data/lib/wsdl/part.rb +53 -0
- data/lib/wsdl/port.rb +67 -0
- data/lib/wsdl/portType.rb +76 -0
- data/lib/wsdl/service.rb +62 -0
- data/lib/wsdl/soap/address.rb +41 -0
- data/lib/wsdl/soap/binding.rb +50 -0
- data/lib/wsdl/soap/body.rb +59 -0
- data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
- data/lib/wsdl/soap/classDefCreator.rb +529 -0
- data/lib/wsdl/soap/classDefCreatorSupport.rb +242 -0
- data/lib/wsdl/soap/classNameCreator.rb +57 -0
- data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
- data/lib/wsdl/soap/complexType.rb +174 -0
- data/lib/wsdl/soap/data.rb +43 -0
- data/lib/wsdl/soap/definitions.rb +201 -0
- data/lib/wsdl/soap/driverCreator.rb +121 -0
- data/lib/wsdl/soap/element.rb +34 -0
- data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
- data/lib/wsdl/soap/fault.rb +57 -0
- data/lib/wsdl/soap/header.rb +87 -0
- data/lib/wsdl/soap/headerfault.rb +57 -0
- data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
- data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
- data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +380 -0
- data/lib/wsdl/soap/methodDefCreator.rb +200 -0
- data/lib/wsdl/soap/operation.rb +113 -0
- data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
- data/lib/wsdl/soap/servletStubCreator.rb +105 -0
- data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
- data/lib/wsdl/soap/wsdl2ruby.rb +249 -0
- data/lib/wsdl/types.rb +45 -0
- data/lib/wsdl/wsdl.rb +25 -0
- data/lib/wsdl/xmlSchema/all.rb +25 -0
- data/lib/wsdl/xmlSchema/annotation.rb +35 -0
- data/lib/wsdl/xmlSchema/any.rb +62 -0
- data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
- data/lib/wsdl/xmlSchema/attribute.rb +105 -0
- data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
- data/lib/wsdl/xmlSchema/choice.rb +59 -0
- data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
- data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
- data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
- data/lib/wsdl/xmlSchema/complexType.rb +194 -0
- data/lib/wsdl/xmlSchema/content.rb +96 -0
- data/lib/wsdl/xmlSchema/data.rb +117 -0
- data/lib/wsdl/xmlSchema/element.rb +154 -0
- data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
- data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
- data/lib/wsdl/xmlSchema/group.rb +101 -0
- data/lib/wsdl/xmlSchema/import.rb +53 -0
- data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
- data/lib/wsdl/xmlSchema/importer.rb +103 -0
- data/lib/wsdl/xmlSchema/include.rb +48 -0
- data/lib/wsdl/xmlSchema/length.rb +38 -0
- data/lib/wsdl/xmlSchema/list.rb +49 -0
- data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
- data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
- data/lib/wsdl/xmlSchema/minlength.rb +38 -0
- data/lib/wsdl/xmlSchema/parser.rb +168 -0
- data/lib/wsdl/xmlSchema/pattern.rb +37 -0
- data/lib/wsdl/xmlSchema/ref.rb +34 -0
- data/lib/wsdl/xmlSchema/schema.rb +179 -0
- data/lib/wsdl/xmlSchema/sequence.rb +55 -0
- data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
- data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
- data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
- data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
- data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
- data/lib/wsdl/xmlSchema/union.rb +36 -0
- data/lib/wsdl/xmlSchema/unique.rb +35 -0
- data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
- data/lib/wsdl/xmlSchema/xsd2ruby.rb +177 -0
- data/lib/xsd/charset.rb +190 -0
- data/lib/xsd/codegen/classdef.rb +230 -0
- data/lib/xsd/codegen/commentdef.rb +35 -0
- data/lib/xsd/codegen/gensupport.rb +277 -0
- data/lib/xsd/codegen/methoddef.rb +71 -0
- data/lib/xsd/codegen/moduledef.rb +209 -0
- data/lib/xsd/codegen.rb +13 -0
- data/lib/xsd/datatypes.rb +1465 -0
- data/lib/xsd/datatypes1999.rb +21 -0
- data/lib/xsd/iconvcharset.rb +33 -0
- data/lib/xsd/mapping.rb +69 -0
- data/lib/xsd/namedelements.rb +133 -0
- data/lib/xsd/ns.rb +183 -0
- data/lib/xsd/qname.rb +80 -0
- data/lib/xsd/xmlparser/libxmlparser.rb +136 -0
- data/lib/xsd/xmlparser/nokogiriparser.rb +63 -0
- data/lib/xsd/xmlparser/ogaparser.rb +53 -0
- data/lib/xsd/xmlparser/oxparser.rb +97 -0
- data/lib/xsd/xmlparser/parser.rb +101 -0
- data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
- data/lib/xsd/xmlparser.rb +81 -0
- 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
|