soybean 1.0.0
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.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +38 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +44 -0
- data/VERSION +1 -0
- data/bin/soybean +22 -0
- data/bin/xsd2ruby +90 -0
- data/lib/soybean.rb +11 -0
- data/lib/soybean/actions/generate_classes.rb +33 -0
- data/soybean.gemspec +236 -0
- data/spec/soybean_spec.rb +5 -0
- data/spec/spec_helper.rb +12 -0
- data/vendor/soap4r/soap/attachment.rb +109 -0
- data/vendor/soap4r/soap/attrproxy.rb +35 -0
- data/vendor/soap4r/soap/base_data.rb +1095 -0
- data/vendor/soap4r/soap/element.rb +278 -0
- data/vendor/soap4r/soap/encodingstyle/asp_dot_net_handler.rb +208 -0
- data/vendor/soap4r/soap/encodingstyle/handler.rb +121 -0
- data/vendor/soap4r/soap/encodingstyle/literal_handler.rb +196 -0
- data/vendor/soap4r/soap/encodingstyle/soap_handler.rb +560 -0
- data/vendor/soap4r/soap/filter.rb +14 -0
- data/vendor/soap4r/soap/filter/filterchain.rb +52 -0
- data/vendor/soap4r/soap/filter/handler.rb +32 -0
- data/vendor/soap4r/soap/filter/streamhandler.rb +30 -0
- data/vendor/soap4r/soap/generator.rb +299 -0
- data/vendor/soap4r/soap/header/handler.rb +62 -0
- data/vendor/soap4r/soap/header/handlerset.rb +71 -0
- data/vendor/soap4r/soap/header/mappinghandler.rb +48 -0
- data/vendor/soap4r/soap/header/simplehandler.rb +45 -0
- data/vendor/soap4r/soap/httpconfigloader.rb +140 -0
- data/vendor/soap4r/soap/mapping.rb +13 -0
- data/vendor/soap4r/soap/mapping/encodedregistry.rb +539 -0
- data/vendor/soap4r/soap/mapping/factory.rb +389 -0
- data/vendor/soap4r/soap/mapping/literalregistry.rb +392 -0
- data/vendor/soap4r/soap/mapping/mapping.rb +577 -0
- data/vendor/soap4r/soap/mapping/registry.rb +296 -0
- data/vendor/soap4r/soap/mapping/rubytype_factory.rb +446 -0
- data/vendor/soap4r/soap/mapping/schemadefinition.rb +171 -0
- data/vendor/soap4r/soap/mapping/type_map.rb +107 -0
- data/vendor/soap4r/soap/mapping/wsdlencodedregistry.rb +212 -0
- data/vendor/soap4r/soap/mapping/wsdlliteralregistry.rb +249 -0
- data/vendor/soap4r/soap/marshal.rb +60 -0
- data/vendor/soap4r/soap/mimemessage.rb +243 -0
- data/vendor/soap4r/soap/nestedexception.rb +43 -0
- data/vendor/soap4r/soap/net_http_client.rb +242 -0
- data/vendor/soap4r/soap/ns.rb +39 -0
- data/vendor/soap4r/soap/parser.rb +253 -0
- data/vendor/soap4r/soap/processor.rb +67 -0
- data/vendor/soap4r/soap/property.rb +340 -0
- data/vendor/soap4r/soap/proxy.rb +15 -0
- data/vendor/soap4r/soap/rpc/cgistub.rb +248 -0
- data/vendor/soap4r/soap/rpc/driver.rb +222 -0
- data/vendor/soap4r/soap/rpc/element.rb +375 -0
- data/vendor/soap4r/soap/rpc/httpserver.rb +143 -0
- data/vendor/soap4r/soap/rpc/method_def.rb +69 -0
- data/vendor/soap4r/soap/rpc/proxy.rb +573 -0
- data/vendor/soap4r/soap/rpc/router.rb +663 -0
- data/vendor/soap4r/soap/rpc/rpc.rb +26 -0
- data/vendor/soap4r/soap/rpc/soaplet.rb +201 -0
- data/vendor/soap4r/soap/rpc/standalone_server.rb +44 -0
- data/vendor/soap4r/soap/soap.rb +154 -0
- data/vendor/soap4r/soap/stream_handler.rb +302 -0
- data/vendor/soap4r/soap/version.rb +9 -0
- data/vendor/soap4r/soap/wsdl_driver.rb +165 -0
- data/vendor/soap4r/wsdl/binding.rb +66 -0
- data/vendor/soap4r/wsdl/data.rb +65 -0
- data/vendor/soap4r/wsdl/definitions.rb +237 -0
- data/vendor/soap4r/wsdl/documentation.rb +33 -0
- data/vendor/soap4r/wsdl/import.rb +81 -0
- data/vendor/soap4r/wsdl/importer.rb +39 -0
- data/vendor/soap4r/wsdl/info.rb +51 -0
- data/vendor/soap4r/wsdl/message.rb +55 -0
- data/vendor/soap4r/wsdl/operation.rb +152 -0
- data/vendor/soap4r/wsdl/operation_binding.rb +241 -0
- data/vendor/soap4r/wsdl/param.rb +94 -0
- data/vendor/soap4r/wsdl/parser.rb +165 -0
- data/vendor/soap4r/wsdl/part.rb +53 -0
- data/vendor/soap4r/wsdl/port.rb +67 -0
- data/vendor/soap4r/wsdl/port_type.rb +76 -0
- data/vendor/soap4r/wsdl/service.rb +62 -0
- data/vendor/soap4r/wsdl/soap/address.rb +41 -0
- data/vendor/soap4r/wsdl/soap/binding.rb +50 -0
- data/vendor/soap4r/wsdl/soap/body.rb +59 -0
- data/vendor/soap4r/wsdl/soap/cgi_stub_creator.rb +93 -0
- data/vendor/soap4r/wsdl/soap/class_def_creator.rb +437 -0
- data/vendor/soap4r/wsdl/soap/class_def_creator_support.rb +241 -0
- data/vendor/soap4r/wsdl/soap/class_name_creator.rb +55 -0
- data/vendor/soap4r/wsdl/soap/client_skelton_creator.rb +107 -0
- data/vendor/soap4r/wsdl/soap/complex_type.rb +174 -0
- data/vendor/soap4r/wsdl/soap/data.rb +43 -0
- data/vendor/soap4r/wsdl/soap/definitions.rb +201 -0
- data/vendor/soap4r/wsdl/soap/driver_creator.rb +121 -0
- data/vendor/soap4r/wsdl/soap/element.rb +34 -0
- data/vendor/soap4r/wsdl/soap/encoded_mapping_registry_creator.rb +74 -0
- data/vendor/soap4r/wsdl/soap/fault.rb +57 -0
- data/vendor/soap4r/wsdl/soap/header.rb +87 -0
- data/vendor/soap4r/wsdl/soap/headerfault.rb +57 -0
- data/vendor/soap4r/wsdl/soap/literal_mapping_registry_creator.rb +116 -0
- data/vendor/soap4r/wsdl/soap/mapping_registry_creator.rb +59 -0
- data/vendor/soap4r/wsdl/soap/mapping_registry_creator_support.rb +377 -0
- data/vendor/soap4r/wsdl/soap/method_def_creator.rb +200 -0
- data/vendor/soap4r/wsdl/soap/operation.rb +113 -0
- data/vendor/soap4r/wsdl/soap/servant_skelton_creator.rb +92 -0
- data/vendor/soap4r/wsdl/soap/servlet_stub_creator.rb +105 -0
- data/vendor/soap4r/wsdl/soap/standalone_server_stub_creator.rb +101 -0
- data/vendor/soap4r/wsdl/soap/wsdl2ruby.rb +226 -0
- data/vendor/soap4r/wsdl/types.rb +45 -0
- data/vendor/soap4r/wsdl/wsdl.rb +25 -0
- data/vendor/soap4r/wsdl/xml_schema/all.rb +25 -0
- data/vendor/soap4r/wsdl/xml_schema/annotation.rb +35 -0
- data/vendor/soap4r/wsdl/xml_schema/any.rb +62 -0
- data/vendor/soap4r/wsdl/xml_schema/any_attribute.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/attribute.rb +105 -0
- data/vendor/soap4r/wsdl/xml_schema/attribute_group.rb +69 -0
- data/vendor/soap4r/wsdl/xml_schema/choice.rb +59 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_content.rb +98 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_extension.rb +120 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_restriction.rb +105 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_type.rb +194 -0
- data/vendor/soap4r/wsdl/xml_schema/content.rb +96 -0
- data/vendor/soap4r/wsdl/xml_schema/data.rb +117 -0
- data/vendor/soap4r/wsdl/xml_schema/element.rb +154 -0
- data/vendor/soap4r/wsdl/xml_schema/enumeration.rb +37 -0
- data/vendor/soap4r/wsdl/xml_schema/fractiondigits.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/group.rb +101 -0
- data/vendor/soap4r/wsdl/xml_schema/import.rb +54 -0
- data/vendor/soap4r/wsdl/xml_schema/import_handler.rb +46 -0
- data/vendor/soap4r/wsdl/xml_schema/importer.rb +103 -0
- data/vendor/soap4r/wsdl/xml_schema/include.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/length.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/list.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/maxexclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/maxinclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/maxlength.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/minexclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/mininclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/minlength.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/parser.rb +168 -0
- data/vendor/soap4r/wsdl/xml_schema/pattern.rb +37 -0
- data/vendor/soap4r/wsdl/xml_schema/ref.rb +34 -0
- data/vendor/soap4r/wsdl/xml_schema/schema.rb +179 -0
- data/vendor/soap4r/wsdl/xml_schema/sequence.rb +55 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_content.rb +70 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_extension.rb +63 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_restriction.rb +133 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_type.rb +88 -0
- data/vendor/soap4r/wsdl/xml_schema/totaldigits.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/union.rb +36 -0
- data/vendor/soap4r/wsdl/xml_schema/unique.rb +35 -0
- data/vendor/soap4r/wsdl/xml_schema/whitespace.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/xsd2ruby.rb +176 -0
- data/vendor/soap4r/xsd/charset.rb +190 -0
- data/vendor/soap4r/xsd/codegen.rb +13 -0
- data/vendor/soap4r/xsd/codegen/classdef.rb +209 -0
- data/vendor/soap4r/xsd/codegen/commentdef.rb +35 -0
- data/vendor/soap4r/xsd/codegen/gensupport.rb +277 -0
- data/vendor/soap4r/xsd/codegen/methoddef.rb +71 -0
- data/vendor/soap4r/xsd/codegen/moduledef.rb +209 -0
- data/vendor/soap4r/xsd/datatypes.rb +1466 -0
- data/vendor/soap4r/xsd/datatypes1999.rb +21 -0
- data/vendor/soap4r/xsd/iconvcharset.rb +34 -0
- data/vendor/soap4r/xsd/mapping.rb +69 -0
- data/vendor/soap4r/xsd/namedelements.rb +133 -0
- data/vendor/soap4r/xsd/ns.rb +183 -0
- data/vendor/soap4r/xsd/qname.rb +80 -0
- data/vendor/soap4r/xsd/xmlparser.rb +77 -0
- data/vendor/soap4r/xsd/xmlparser/libxmlparser.rb +116 -0
- data/vendor/soap4r/xsd/xmlparser/parser.rb +101 -0
- data/vendor/soap4r/xsd/xmlparser/rexmlparser.rb +59 -0
- data/vendor/soap4r/xsd/xmlparser/xmlparser.rb +51 -0
- data/vendor/soap4r/xsd/xmlparser/xmlscanner.rb +150 -0
- metadata +316 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL SOAP body definition.
|
|
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 'wsdl/info'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module WSDL
|
|
14
|
+
module SOAP
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Fault < Info
|
|
18
|
+
attr_reader :name # required
|
|
19
|
+
attr_reader :use # required
|
|
20
|
+
attr_reader :encodingstyle
|
|
21
|
+
attr_reader :namespace
|
|
22
|
+
|
|
23
|
+
def initialize
|
|
24
|
+
super
|
|
25
|
+
@name = nil
|
|
26
|
+
@use = nil
|
|
27
|
+
@encodingstyle = nil
|
|
28
|
+
@namespace = nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def targetnamespace
|
|
32
|
+
parent.targetnamespace
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def parse_element(element)
|
|
36
|
+
nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def parse_attr(attr, value)
|
|
40
|
+
case attr
|
|
41
|
+
when NameAttrName
|
|
42
|
+
@name = XSD::QName.new(targetnamespace, value.source)
|
|
43
|
+
when UseAttrName
|
|
44
|
+
@use = value.source
|
|
45
|
+
when EncodingStyleAttrName
|
|
46
|
+
@encodingstyle = value.source
|
|
47
|
+
when NamespaceAttrName
|
|
48
|
+
@namespace = value.source
|
|
49
|
+
else
|
|
50
|
+
nil
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL SOAP body definition.
|
|
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 'wsdl/info'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module WSDL
|
|
14
|
+
module SOAP
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Header < Info
|
|
18
|
+
attr_reader :headerfault
|
|
19
|
+
|
|
20
|
+
attr_reader :message # required
|
|
21
|
+
attr_reader :part # required
|
|
22
|
+
attr_reader :use # required
|
|
23
|
+
attr_reader :encodingstyle
|
|
24
|
+
attr_reader :namespace
|
|
25
|
+
|
|
26
|
+
def initialize
|
|
27
|
+
super
|
|
28
|
+
@message = nil
|
|
29
|
+
@part = nil
|
|
30
|
+
@use = nil
|
|
31
|
+
@encodingstyle = nil
|
|
32
|
+
@namespace = nil
|
|
33
|
+
@headerfault = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def targetnamespace
|
|
37
|
+
parent.targetnamespace
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def find_message
|
|
41
|
+
root.message(@message) or raise RuntimeError.new("#{@message} not found")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def find_part
|
|
45
|
+
find_message.parts.each do |part|
|
|
46
|
+
if part.name == @part
|
|
47
|
+
return part
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
raise RuntimeError.new("#{@part} not found")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def parse_element(element)
|
|
54
|
+
case element
|
|
55
|
+
when HeaderFaultName
|
|
56
|
+
o = WSDL::SOAP::HeaderFault.new
|
|
57
|
+
@headerfault = o
|
|
58
|
+
o
|
|
59
|
+
else
|
|
60
|
+
nil
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def parse_attr(attr, value)
|
|
65
|
+
case attr
|
|
66
|
+
when MessageAttrName
|
|
67
|
+
if value.namespace.nil?
|
|
68
|
+
value = XSD::QName.new(targetnamespace, value.source)
|
|
69
|
+
end
|
|
70
|
+
@message = value
|
|
71
|
+
when PartAttrName
|
|
72
|
+
@part = value.source
|
|
73
|
+
when UseAttrName
|
|
74
|
+
@use = value.source
|
|
75
|
+
when EncodingStyleAttrName
|
|
76
|
+
@encodingstyle = value.source
|
|
77
|
+
when NamespaceAttrName
|
|
78
|
+
@namespace = value.source
|
|
79
|
+
else
|
|
80
|
+
nil
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - WSDL SOAP body definition.
|
|
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 'wsdl/info'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module WSDL
|
|
14
|
+
module SOAP
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class HeaderFault < Info
|
|
18
|
+
attr_reader :message # required
|
|
19
|
+
attr_reader :part # required
|
|
20
|
+
attr_reader :use # required
|
|
21
|
+
attr_reader :encodingstyle
|
|
22
|
+
attr_reader :namespace
|
|
23
|
+
|
|
24
|
+
def initialize
|
|
25
|
+
super
|
|
26
|
+
@message = nil
|
|
27
|
+
@part = nil
|
|
28
|
+
@use = nil
|
|
29
|
+
@encodingstyle = nil
|
|
30
|
+
@namespace = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def parse_element(element)
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def parse_attr(attr, value)
|
|
38
|
+
case attr
|
|
39
|
+
when MessageAttrName
|
|
40
|
+
@message = value
|
|
41
|
+
when PartAttrName
|
|
42
|
+
@part = value.source
|
|
43
|
+
when UseAttrName
|
|
44
|
+
@use = value.source
|
|
45
|
+
when EncodingStyleAttrName
|
|
46
|
+
@encodingstyle = value.source
|
|
47
|
+
when NamespaceAttrName
|
|
48
|
+
@namespace = value.source
|
|
49
|
+
else
|
|
50
|
+
nil
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - Creating LiteralMappingRegistry code from WSDL.
|
|
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 'wsdl/info'
|
|
11
|
+
require 'wsdl/soap/mapping_registry_creator_support'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module WSDL
|
|
15
|
+
module SOAP
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class LiteralMappingRegistryCreator
|
|
19
|
+
include MappingRegistryCreatorSupport
|
|
20
|
+
|
|
21
|
+
def initialize(definitions, name_creator, modulepath, defined_const)
|
|
22
|
+
@definitions = definitions
|
|
23
|
+
@name_creator = name_creator
|
|
24
|
+
@modulepath = modulepath
|
|
25
|
+
@elements = definitions.collect_elements
|
|
26
|
+
@elements.uniq!
|
|
27
|
+
@attributes = definitions.collect_attributes
|
|
28
|
+
@attributes.uniq!
|
|
29
|
+
@simpletypes = definitions.collect_simpletypes
|
|
30
|
+
@simpletypes.uniq!
|
|
31
|
+
@complextypes = definitions.collect_complextypes
|
|
32
|
+
@complextypes.uniq!
|
|
33
|
+
@varname = nil
|
|
34
|
+
@defined_const = defined_const
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def dump(varname)
|
|
38
|
+
@varname = varname
|
|
39
|
+
result = ''
|
|
40
|
+
str = dump_complextype
|
|
41
|
+
unless str.empty?
|
|
42
|
+
result << "\n" unless result.empty?
|
|
43
|
+
result << str
|
|
44
|
+
end
|
|
45
|
+
str = dump_simpletype
|
|
46
|
+
unless str.empty?
|
|
47
|
+
result << "\n" unless result.empty?
|
|
48
|
+
result << str
|
|
49
|
+
end
|
|
50
|
+
str = dump_element
|
|
51
|
+
unless str.empty?
|
|
52
|
+
result << "\n" unless result.empty?
|
|
53
|
+
result << str
|
|
54
|
+
end
|
|
55
|
+
str = dump_attribute
|
|
56
|
+
unless str.empty?
|
|
57
|
+
result << "\n" unless result.empty?
|
|
58
|
+
result << str
|
|
59
|
+
end
|
|
60
|
+
result
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def dump_element
|
|
66
|
+
@elements.collect { |ele|
|
|
67
|
+
# has the definition different from the complexType of the same name
|
|
68
|
+
next if ele.type.nil? and @complextypes[ele.name]
|
|
69
|
+
dump_with_inner {
|
|
70
|
+
if typedef = ele.local_complextype
|
|
71
|
+
dump_complextypedef(@modulepath, ele.name, typedef)
|
|
72
|
+
elsif typedef = ele.local_simpletype
|
|
73
|
+
dump_simpletypedef(@modulepath, ele.name, typedef)
|
|
74
|
+
elsif ele.type
|
|
75
|
+
if typedef = @complextypes[ele.type]
|
|
76
|
+
dump_complextypedef(@modulepath, ele.type, typedef, ele.name)
|
|
77
|
+
elsif typedef = @simpletypes[ele.type]
|
|
78
|
+
dump_simpletypedef(@modulepath, ele.type, typedef, ele.name)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
}
|
|
82
|
+
}.compact.join("\n")
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def dump_attribute
|
|
86
|
+
@attributes.collect { |attr|
|
|
87
|
+
if attr.local_simpletype
|
|
88
|
+
dump_with_inner {
|
|
89
|
+
dump_simpletypedef(@modulepath, attr.name, attr.local_simpletype)
|
|
90
|
+
}
|
|
91
|
+
end
|
|
92
|
+
}.compact.join("\n")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def dump_simpletype
|
|
96
|
+
@simpletypes.collect { |type|
|
|
97
|
+
dump_with_inner {
|
|
98
|
+
dump_simpletypedef(@modulepath, type.name, type)
|
|
99
|
+
}
|
|
100
|
+
}.compact.join("\n")
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def dump_complextype
|
|
104
|
+
@complextypes.collect { |type|
|
|
105
|
+
unless type.abstract
|
|
106
|
+
dump_with_inner {
|
|
107
|
+
dump_complextypedef(@modulepath, type.name, type)
|
|
108
|
+
}
|
|
109
|
+
end
|
|
110
|
+
}.compact.join("\n")
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - Creating MappingRegistry code from WSDL.
|
|
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 'wsdl/info'
|
|
11
|
+
require 'wsdl/soap/class_def_creator_support'
|
|
12
|
+
require 'wsdl/soap/encoded_mapping_registry_creator'
|
|
13
|
+
require 'wsdl/soap/literal_mapping_registry_creator'
|
|
14
|
+
require 'xsd/codegen/moduledef.rb'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
module WSDL
|
|
18
|
+
module SOAP
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MappingRegistryCreator
|
|
22
|
+
include ClassDefCreatorSupport
|
|
23
|
+
|
|
24
|
+
attr_reader :definitions
|
|
25
|
+
|
|
26
|
+
def initialize(definitions, name_creator, modulepath = nil)
|
|
27
|
+
@definitions = definitions
|
|
28
|
+
@name_creator = name_creator
|
|
29
|
+
@modulepath = modulepath
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def dump
|
|
33
|
+
defined_const = {}
|
|
34
|
+
encoded_creator = EncodedMappingRegistryCreator.new(@definitions, @name_creator, @modulepath, defined_const)
|
|
35
|
+
literal_creator = LiteralMappingRegistryCreator.new(@definitions, @name_creator, @modulepath, defined_const)
|
|
36
|
+
wsdl_name = @definitions.name ? @definitions.name.name : 'default'
|
|
37
|
+
module_name = safeconstname(wsdl_name + 'MappingRegistry')
|
|
38
|
+
if @modulepath
|
|
39
|
+
module_name = [@modulepath, module_name].join('::')
|
|
40
|
+
end
|
|
41
|
+
m = XSD::CodeGen::ModuleDef.new(module_name)
|
|
42
|
+
m.def_require("soap/mapping")
|
|
43
|
+
varname = 'EncodedRegistry'
|
|
44
|
+
m.def_const(varname, '::SOAP::Mapping::EncodedRegistry.new')
|
|
45
|
+
m.def_code(encoded_creator.dump(varname))
|
|
46
|
+
varname = 'LiteralRegistry'
|
|
47
|
+
m.def_const(varname, '::SOAP::Mapping::LiteralRegistry.new')
|
|
48
|
+
m.def_code(literal_creator.dump(varname))
|
|
49
|
+
#
|
|
50
|
+
defined_const.each do |ns, tag|
|
|
51
|
+
m.def_const(tag, dq(ns))
|
|
52
|
+
end
|
|
53
|
+
m.dump
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# WSDL4R - Creating MappingRegistry support.
|
|
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 'wsdl/soap/class_def_creator_support'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module WSDL
|
|
14
|
+
module SOAP
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# requires @defined_const = {}, @dump_with_inner, @modulepath
|
|
18
|
+
module MappingRegistryCreatorSupport
|
|
19
|
+
include ClassDefCreatorSupport
|
|
20
|
+
include XSD::CodeGen
|
|
21
|
+
|
|
22
|
+
def dump_with_inner
|
|
23
|
+
@dump_with_inner = []
|
|
24
|
+
@dump_with_inner.unshift(yield)
|
|
25
|
+
@dump_with_inner.join("\n")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def dump_complextypedef(mpath, qname, typedef, as_element = nil, opt = {})
|
|
29
|
+
case typedef.compoundtype
|
|
30
|
+
when :TYPE_STRUCT, :TYPE_EMPTY
|
|
31
|
+
dump_complex_typemap(mpath, qname, typedef, as_element, opt)
|
|
32
|
+
when :TYPE_ARRAY
|
|
33
|
+
dump_array_typemap(mpath, qname, typedef, as_element, opt)
|
|
34
|
+
when :TYPE_SIMPLE
|
|
35
|
+
dump_simple_typemap(mpath, qname, typedef, as_element, opt)
|
|
36
|
+
when :TYPE_MAP
|
|
37
|
+
# mapped as a general Hash
|
|
38
|
+
nil
|
|
39
|
+
else
|
|
40
|
+
raise RuntimeError.new(
|
|
41
|
+
"unknown kind of complexContent: #{typedef.compoundtype}")
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def dump_array_typemap(mpath, qname, typedef, as_element, opt)
|
|
46
|
+
if typedef.find_soapenc_arytype
|
|
47
|
+
if opt[:encoded]
|
|
48
|
+
dump_encoded_array_typemap(mpath, qname, typedef, as_element, opt)
|
|
49
|
+
end
|
|
50
|
+
else
|
|
51
|
+
dump_literal_array_typemap(mpath, qname, typedef, as_element, opt)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def dump_complex_typemap(mpath, qname, typedef, as_element, opt)
|
|
56
|
+
var = {}
|
|
57
|
+
define_dump_class(var, mpath, qname, typedef, as_element, opt)
|
|
58
|
+
schema_ns = (var[:schema_name] || var[:schema_type]).namespace
|
|
59
|
+
if var[:schema_type] and typedef.base
|
|
60
|
+
var[:schema_basetype] = typedef.base
|
|
61
|
+
end
|
|
62
|
+
parentmodule = var[:class]
|
|
63
|
+
parsed_element =
|
|
64
|
+
parse_elements(typedef.elements, qname.namespace, parentmodule, opt)
|
|
65
|
+
if typedef.choice?
|
|
66
|
+
parsed_element.unshift(:choice)
|
|
67
|
+
end
|
|
68
|
+
var[:schema_element] = dump_schema_element_definition(parsed_element, 2)
|
|
69
|
+
unless typedef.attributes.empty?
|
|
70
|
+
var[:schema_attribute] = define_attribute(typedef.attributes)
|
|
71
|
+
end
|
|
72
|
+
assign_const(schema_ns, 'Ns')
|
|
73
|
+
dump_entry(@varname, var)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def dump_simple_typemap(mpath, qname, typedef, as_element, opt)
|
|
77
|
+
var = {}
|
|
78
|
+
define_dump_class(var, mpath, qname, typedef, as_element, opt)
|
|
79
|
+
schema_ns = (var[:schema_name] || var[:schema_type]).namespace
|
|
80
|
+
unless typedef.attributes.empty?
|
|
81
|
+
var[:schema_attribute] = define_attribute(typedef.attributes)
|
|
82
|
+
end
|
|
83
|
+
assign_const(schema_ns, 'Ns')
|
|
84
|
+
dump_entry(@varname, var)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def dump_schema_element_definition(definition, indent = 0)
|
|
88
|
+
return '[]' if definition.empty?
|
|
89
|
+
sp = ' ' * indent
|
|
90
|
+
if definition[0] == :choice
|
|
91
|
+
definition.shift
|
|
92
|
+
"[ :choice,\n" +
|
|
93
|
+
dump_schema_element(definition, indent + 2) + "\n" + sp + "]"
|
|
94
|
+
elsif definition[0].is_a?(::Array)
|
|
95
|
+
"[\n" +
|
|
96
|
+
dump_schema_element(definition, indent + 2) + "\n" + sp + "]"
|
|
97
|
+
else
|
|
98
|
+
varname, name, type, occurrence = definition
|
|
99
|
+
'[' + [
|
|
100
|
+
varname.dump,
|
|
101
|
+
dump_type(name, type),
|
|
102
|
+
dump_occurrence(occurrence)
|
|
103
|
+
].compact.join(', ') + ']'
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def dump_schema_element(schema_element, indent = 0)
|
|
108
|
+
sp = ' ' * indent
|
|
109
|
+
delimiter = ",\n" + sp
|
|
110
|
+
sp + schema_element.collect { |definition|
|
|
111
|
+
dump_schema_element_definition(definition, indent)
|
|
112
|
+
}.join(delimiter)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def dump_type(name, type)
|
|
116
|
+
if name
|
|
117
|
+
assign_const(name.namespace, 'Ns')
|
|
118
|
+
'[' + ndq(type) + ', ' + dqname(name) + ']'
|
|
119
|
+
else
|
|
120
|
+
ndq(type)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def dump_occurrence(occurrence)
|
|
125
|
+
if occurrence and occurrence != [1, 1] # default
|
|
126
|
+
minoccurs, maxoccurs = occurrence
|
|
127
|
+
maxoccurs ||= 'nil'
|
|
128
|
+
"[#{minoccurs}, #{maxoccurs}]"
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def parse_elements(elements, base_namespace, mpath, opt)
|
|
133
|
+
schema_element = []
|
|
134
|
+
any = false
|
|
135
|
+
elements.each do |element|
|
|
136
|
+
case element
|
|
137
|
+
when XMLSchema::Any
|
|
138
|
+
# only 1 <any/> is allowed for now.
|
|
139
|
+
raise RuntimeError.new("duplicated 'any'") if any
|
|
140
|
+
any = true
|
|
141
|
+
varname = 'any' # not used
|
|
142
|
+
eleqname = XSD::AnyTypeName
|
|
143
|
+
type = nil
|
|
144
|
+
occurrence = nil
|
|
145
|
+
schema_element << [varname, eleqname, type, occurrence]
|
|
146
|
+
when XMLSchema::Element
|
|
147
|
+
next if element.ref == SchemaName
|
|
148
|
+
typebase = @modulepath
|
|
149
|
+
if element.anonymous_type?
|
|
150
|
+
child_opt = {
|
|
151
|
+
:qualified => (element.elementform == 'qualified'),
|
|
152
|
+
:is_anonymous => true
|
|
153
|
+
}
|
|
154
|
+
@dump_with_inner << dump_complextypedef(mpath, element.name, element.local_complextype, nil, child_opt)
|
|
155
|
+
typebase = mpath
|
|
156
|
+
end
|
|
157
|
+
type = create_type_name(typebase, element)
|
|
158
|
+
name = name_element(element).name
|
|
159
|
+
varname = safevarname(name)
|
|
160
|
+
if element.map_as_array?
|
|
161
|
+
if type
|
|
162
|
+
type += '[]'
|
|
163
|
+
else
|
|
164
|
+
type = '[]'
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
# nil means @@schema_ns + varname
|
|
168
|
+
eleqname = element.name || element.ref
|
|
169
|
+
if eleqname && varname == name && eleqname.namespace == base_namespace
|
|
170
|
+
eleqname = nil
|
|
171
|
+
end
|
|
172
|
+
occurrence = [element.minoccurs, element.maxoccurs]
|
|
173
|
+
schema_element << [varname, eleqname, type, occurrence]
|
|
174
|
+
when WSDL::XMLSchema::Sequence
|
|
175
|
+
child_schema_element =
|
|
176
|
+
parse_elements(element.elements, base_namespace, mpath, opt)
|
|
177
|
+
schema_element << child_schema_element
|
|
178
|
+
when WSDL::XMLSchema::Choice
|
|
179
|
+
child_schema_element =
|
|
180
|
+
parse_elements(element.elements, base_namespace, mpath, opt)
|
|
181
|
+
if !element.map_as_array?
|
|
182
|
+
# choice + maxOccurs="unbounded" is treated just as 'all' now.
|
|
183
|
+
child_schema_element.unshift(:choice)
|
|
184
|
+
end
|
|
185
|
+
schema_element << child_schema_element
|
|
186
|
+
when WSDL::XMLSchema::Group
|
|
187
|
+
if element.content.nil?
|
|
188
|
+
warn("no group definition found: #{element}")
|
|
189
|
+
next
|
|
190
|
+
end
|
|
191
|
+
child_schema_element =
|
|
192
|
+
parse_elements(element.content.elements, base_namespace, mpath, opt)
|
|
193
|
+
schema_element.concat(child_schema_element)
|
|
194
|
+
else
|
|
195
|
+
raise RuntimeError.new("unknown type: #{element}")
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
schema_element
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def define_attribute(attributes)
|
|
202
|
+
schema_attribute = []
|
|
203
|
+
attributes.each do |attribute|
|
|
204
|
+
name = name_attribute(attribute)
|
|
205
|
+
if klass = attribute_basetype(attribute)
|
|
206
|
+
type = klass.name
|
|
207
|
+
else
|
|
208
|
+
warn("unresolved attribute type #{attribute.type} for #{name}")
|
|
209
|
+
type = nil
|
|
210
|
+
end
|
|
211
|
+
schema_attribute << [name, type]
|
|
212
|
+
end
|
|
213
|
+
"{\n " +
|
|
214
|
+
schema_attribute.collect { |name, type|
|
|
215
|
+
assign_const(name.namespace, 'Ns')
|
|
216
|
+
dqname(name) + ' => ' + ndq(type)
|
|
217
|
+
}.join(",\n ") +
|
|
218
|
+
"\n }"
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def dump_entry(regname, var)
|
|
222
|
+
"#{regname}.register(\n " +
|
|
223
|
+
[
|
|
224
|
+
dump_entry_item(var, :class),
|
|
225
|
+
dump_entry_item(var, :soap_class),
|
|
226
|
+
dump_entry_item(var, :schema_name, :qname),
|
|
227
|
+
dump_entry_item(var, :schema_type, :qname),
|
|
228
|
+
dump_entry_item(var, :is_anonymous),
|
|
229
|
+
dump_entry_item(var, :schema_basetype, :qname),
|
|
230
|
+
dump_entry_item(var, :schema_qualified),
|
|
231
|
+
dump_entry_item(var, :schema_element),
|
|
232
|
+
dump_entry_item(var, :schema_attribute)
|
|
233
|
+
].compact.join(",\n ") +
|
|
234
|
+
"\n)\n"
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def dump_entry_item(var, key, dump_type = :none)
|
|
238
|
+
if var.key?(key)
|
|
239
|
+
case dump_type
|
|
240
|
+
when :none
|
|
241
|
+
":#{key} => #{var[key]}"
|
|
242
|
+
when :string
|
|
243
|
+
if @defined_const.key?(var[key])
|
|
244
|
+
":#{key} => #{@defined_const[var[key]]}"
|
|
245
|
+
else
|
|
246
|
+
":#{key} => #{ndq(var[key])}"
|
|
247
|
+
end
|
|
248
|
+
when :qname
|
|
249
|
+
qname = var[key]
|
|
250
|
+
if @defined_const.key?(qname.namespace)
|
|
251
|
+
ns = @defined_const[qname.namespace]
|
|
252
|
+
else
|
|
253
|
+
ns = ndq(qname.namespace)
|
|
254
|
+
end
|
|
255
|
+
":#{key} => XSD::QName.new(#{ns}, #{ndq(qname.name)})"
|
|
256
|
+
else
|
|
257
|
+
raise "Unknown dump type: #{dump_type}"
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def dump_simpletypedef(mpath, qname, simpletype, as_element = nil, opt = {})
|
|
263
|
+
if simpletype.restriction
|
|
264
|
+
dump_simpletypedef_restriction(mpath, qname, simpletype, as_element, opt)
|
|
265
|
+
elsif simpletype.list
|
|
266
|
+
dump_simpletypedef_list(mpath, qname, simpletype, as_element, opt)
|
|
267
|
+
elsif simpletype.union
|
|
268
|
+
dump_simpletypedef_union(mpath, qname, simpletype, as_element, opt)
|
|
269
|
+
else
|
|
270
|
+
raise RuntimeError.new("unknown kind of simpletype: #{simpletype}")
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
def dump_simpletypedef_restriction(mpath, qname, typedef, as_element, opt)
|
|
275
|
+
restriction = typedef.restriction
|
|
276
|
+
unless restriction.enumeration?
|
|
277
|
+
# not supported. minlength?
|
|
278
|
+
return nil
|
|
279
|
+
end
|
|
280
|
+
var = {}
|
|
281
|
+
define_dump_class(var, mpath, qname, typedef, as_element, opt)
|
|
282
|
+
schema_ns = (var[:schema_name] || var[:schema_type]).namespace
|
|
283
|
+
assign_const(schema_ns, 'Ns')
|
|
284
|
+
dump_entry(@varname, var)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def dump_simpletypedef_list(mpath, qname, typedef, as_element, opt)
|
|
288
|
+
nil
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def dump_simpletypedef_union(mpath, qname, typedef, as_element, opt)
|
|
292
|
+
nil
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
DEFAULT_ITEM_NAME = XSD::QName.new(nil, 'item')
|
|
296
|
+
|
|
297
|
+
def dump_literal_array_typemap(mpath, qname, typedef, as_element, opt)
|
|
298
|
+
var = {}
|
|
299
|
+
define_dump_class(var, mpath, qname, typedef, as_element, opt)
|
|
300
|
+
schema_ns = (var[:schema_name] || var[:schema_type]).namespace
|
|
301
|
+
parsed_element =
|
|
302
|
+
parse_elements(typedef.elements, qname.namespace, var[:class], opt)
|
|
303
|
+
if parsed_element.empty?
|
|
304
|
+
parsed_element = [create_array_element_definition(typedef, mpath)]
|
|
305
|
+
end
|
|
306
|
+
var[:schema_element] = dump_schema_element_definition(parsed_element, 2)
|
|
307
|
+
assign_const(schema_ns, 'Ns')
|
|
308
|
+
dump_entry(@varname, var)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def dump_encoded_array_typemap(mpath, qname, typedef, as_element, opt)
|
|
312
|
+
arytype = typedef.find_arytype || XSD::AnyTypeName
|
|
313
|
+
type = XSD::QName.new(arytype.namespace, arytype.name.sub(/\[(?:,)*\]$/, ''))
|
|
314
|
+
return <<__EOD__
|
|
315
|
+
#{@varname}.set(
|
|
316
|
+
#{mapped_class_name(qname, mpath)},
|
|
317
|
+
::SOAP::SOAPArray,
|
|
318
|
+
::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
|
|
319
|
+
{ :type => #{dqname(type)} }
|
|
320
|
+
)
|
|
321
|
+
__EOD__
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
# used when "soapenc:arrayType" definition
|
|
325
|
+
def create_array_element_definition(typedef, mpath)
|
|
326
|
+
child_type = typedef.child_type
|
|
327
|
+
child_element = typedef.find_aryelement
|
|
328
|
+
if child_type == XSD::AnyTypeName
|
|
329
|
+
type = nil
|
|
330
|
+
elsif child_element
|
|
331
|
+
if klass = element_basetype(child_element)
|
|
332
|
+
type = klass.name
|
|
333
|
+
else
|
|
334
|
+
typename = child_element.type || child_element.name
|
|
335
|
+
type = mapped_class_name(typename, mpath)
|
|
336
|
+
end
|
|
337
|
+
elsif child_type
|
|
338
|
+
type = mapped_class_name(child_type, mpath)
|
|
339
|
+
else
|
|
340
|
+
type = nil
|
|
341
|
+
end
|
|
342
|
+
occurrence = [0, nil]
|
|
343
|
+
if child_element and child_element.name
|
|
344
|
+
if child_element.map_as_array?
|
|
345
|
+
type << '[]' if type
|
|
346
|
+
occurrence = [child_element.minoccurs, child_element.maxoccurs]
|
|
347
|
+
end
|
|
348
|
+
child_element_name = child_element.name
|
|
349
|
+
else
|
|
350
|
+
child_element_name = DEFAULT_ITEM_NAME
|
|
351
|
+
end
|
|
352
|
+
[child_element_name.name, child_element_name, type, occurrence]
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def define_dump_class(var, mpath, qname, typedef, as_element, opt)
|
|
356
|
+
var[:class] = mapped_class_name(qname, mpath)
|
|
357
|
+
if as_element
|
|
358
|
+
var[:schema_name] = as_element
|
|
359
|
+
schema_ns = as_element.namespace
|
|
360
|
+
elsif typedef.name.nil?
|
|
361
|
+
var[:schema_name] = qname
|
|
362
|
+
schema_ns = qname.namespace
|
|
363
|
+
else
|
|
364
|
+
var[:schema_type] = qname
|
|
365
|
+
schema_ns = qname.namespace
|
|
366
|
+
end
|
|
367
|
+
var[:is_anonymous] = opt[:is_anonymous] if opt.key?(:is_anonymous)
|
|
368
|
+
# true, false, or nil
|
|
369
|
+
if opt.key?(:qualified)
|
|
370
|
+
var[:schema_qualified] = opt[:qualified].to_s
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
end
|
|
377
|
+
end
|