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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8de22f59107d2bc83bd6e7a7be373d269f740519
4
+ data.tar.gz: 778de52a65096b3fa246c5531cda3831959669e2
5
+ SHA512:
6
+ metadata.gz: 331e5124f059a2db5f92b8fa6882fdc9f173440108899dfd6e7afc45902804465f6bfb181ed6dcc79d1c163a6168f47304fea144741fd5859cbf6f7e101c625c
7
+ data.tar.gz: 5166cb9c2af29c58178b9b45130da76b75a840907175e55132d360e409c5fe3e9f7ca00d7b72ec3b5ed898183abc43f64bf4916355dc0cf4f84644e54b7d2442
data/bin/wsdl2ruby.rb ADDED
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ $:.unshift File.join(File.dirname(__FILE__),'../lib') if ENV['DEBUG_SOAP4R']
4
+
5
+ require 'getoptlong'
6
+ require 'logger'
7
+ require 'logger-application' unless defined?(Logger::Application)
8
+ require 'wsdl/soap/wsdl2ruby'
9
+
10
+
11
+ class WSDL2RubyApp < Logger::Application
12
+ private
13
+
14
+ OptSet = [
15
+ ['--wsdl','-w', GetoptLong::REQUIRED_ARGUMENT],
16
+ ['--module_path','-m', GetoptLong::REQUIRED_ARGUMENT],
17
+ ['--type','-t', GetoptLong::REQUIRED_ARGUMENT],
18
+ ['--classdef','-e', GetoptLong::OPTIONAL_ARGUMENT],
19
+ ['--mapping_registry','-r', GetoptLong::NO_ARGUMENT],
20
+ ['--client_skelton','-c', GetoptLong::OPTIONAL_ARGUMENT],
21
+ ['--servant_skelton','-s', GetoptLong::OPTIONAL_ARGUMENT],
22
+ ['--cgi_stub','-g', GetoptLong::OPTIONAL_ARGUMENT],
23
+ ['--servlet_stub','-l', GetoptLong::OPTIONAL_ARGUMENT],
24
+ ['--standalone_server_stub','-a', GetoptLong::OPTIONAL_ARGUMENT],
25
+ ['--driver','-d', GetoptLong::OPTIONAL_ARGUMENT],
26
+ ['--drivername_postfix','-n', GetoptLong::REQUIRED_ARGUMENT],
27
+ ['--force','-f', GetoptLong::NO_ARGUMENT],
28
+ ['--quiet','-q', GetoptLong::NO_ARGUMENT],
29
+ ]
30
+
31
+ def initialize
32
+ super('app')
33
+ STDERR.sync = true
34
+ self.level = Logger::FATAL
35
+ end
36
+
37
+ def run
38
+ @worker = WSDL::SOAP::WSDL2Ruby.new
39
+ @worker.logger = @log
40
+ location, opt = parse_opt(GetoptLong.new(*OptSet))
41
+ usage_exit unless location
42
+ @worker.location = location
43
+ if opt['quiet']
44
+ self.level = Logger::FATAL
45
+ else
46
+ self.level = Logger::INFO
47
+ end
48
+ @worker.opt.update(opt)
49
+ @worker.run
50
+ 0
51
+ end
52
+
53
+ def usage_exit
54
+ puts <<__EOU__
55
+ Usage: #{ $0 } --wsdl wsdl_location [options]
56
+ wsdl_location: filename or URL
57
+
58
+ Example:
59
+ For server side:
60
+ #{ $0 } --wsdl myapp.wsdl --type server
61
+ For client side:
62
+ #{ $0 } --wsdl myapp.wsdl --type client
63
+
64
+ Options:
65
+ --wsdl wsdl_location
66
+ --type server|client
67
+ --type server implies;
68
+ --classdef --mapping_registry --servant_skelton --standalone_server_stub
69
+ --type client implies;
70
+ --classdef --mapping_registry --client_skelton --driver
71
+ --classdef [filenameprefix]
72
+ --mapping_registry
73
+ --client_skelton [servicename]
74
+ --servant_skelton [porttypename]
75
+ --cgi_stub [servicename]
76
+ --servlet_stub [servicename]
77
+ --standalone_server_stub [servicename]
78
+ --driver [porttypename]
79
+ --drivername_postfix driver_classname_postfix
80
+ --module_path Module::Path::Name
81
+ --force
82
+ --quiet
83
+
84
+ Terminology:
85
+ Client <-> Driver <-(SOAP)-> Stub <-> Servant
86
+
87
+ Driver and Stub: Automatically generated
88
+ Client and Servant: Skelton generated (you should change)
89
+ __EOU__
90
+ exit 1
91
+ end
92
+
93
+ def parse_opt(getoptlong)
94
+ opt = {}
95
+ wsdl = nil
96
+ begin
97
+ getoptlong.each do |name, arg|
98
+ case name
99
+ when "--wsdl"
100
+ wsdl = arg
101
+ when "--module_path"
102
+ opt['module_path'] = arg
103
+ when "--type"
104
+ case arg
105
+ when "server"
106
+ opt['classdef'] ||= nil
107
+ opt['mapping_registry'] ||= nil
108
+ opt['servant_skelton'] ||= nil
109
+ opt['standalone_server_stub'] ||= nil
110
+ when "client"
111
+ opt['classdef'] ||= nil
112
+ opt['mapping_registry'] ||= nil
113
+ opt['driver'] ||= nil
114
+ opt['client_skelton'] ||= nil
115
+ else
116
+ raise ArgumentError.new("Unknown type #{ arg }")
117
+ end
118
+ when "--classdef", "--mapping_registry",
119
+ "--client_skelton", "--servant_skelton",
120
+ "--cgi_stub", "--servlet_stub", "--standalone_server_stub",
121
+ "--driver"
122
+ opt[name.sub(/^--/, '')] = arg.empty? ? nil : arg
123
+ when "--drivername_postfix"
124
+ opt['drivername_postfix'] = arg
125
+ when "--force"
126
+ opt['force'] = true
127
+ when "--quiet"
128
+ opt['quiet'] = true
129
+ else
130
+ raise ArgumentError.new("Unknown type #{ arg }")
131
+ end
132
+ end
133
+ rescue
134
+ usage_exit
135
+ end
136
+ return wsdl, opt
137
+ end
138
+ end
139
+
140
+ WSDL2RubyApp.new.start
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ $:.unshift File.join(File.dirname(__FILE__),'../lib') if ENV['DEBUG_SOAP4R']
4
+
5
+ require 'getoptlong'
6
+ require 'logger'
7
+ require 'logger-application' unless defined?(Logger::Application)
8
+ require 'wsdl/soap/wsdl2ruby'
9
+
10
+
11
+ class WSDL2RubyRailsApp < Logger::Application
12
+ private
13
+
14
+ OptSet = [
15
+ ['--wsdl','-w', GetoptLong::REQUIRED_ARGUMENT],
16
+ ['--module_path','-m', GetoptLong::REQUIRED_ARGUMENT],
17
+ ['--type','-t', GetoptLong::REQUIRED_ARGUMENT],
18
+ ['--classdef','-e', GetoptLong::OPTIONAL_ARGUMENT],
19
+ ['--mapping_registry','-r', GetoptLong::NO_ARGUMENT],
20
+ ['--client_skelton','-c', GetoptLong::OPTIONAL_ARGUMENT],
21
+ ['--servant_skelton','-s', GetoptLong::OPTIONAL_ARGUMENT],
22
+ ['--cgi_stub','-g', GetoptLong::OPTIONAL_ARGUMENT],
23
+ ['--servlet_stub','-l', GetoptLong::OPTIONAL_ARGUMENT],
24
+ ['--standalone_server_stub','-a', GetoptLong::OPTIONAL_ARGUMENT],
25
+ ['--driver','-d', GetoptLong::OPTIONAL_ARGUMENT],
26
+ ['--drivername_postfix','-n', GetoptLong::REQUIRED_ARGUMENT],
27
+ ['--force','-f', GetoptLong::NO_ARGUMENT],
28
+ ['--quiet','-q', GetoptLong::NO_ARGUMENT],
29
+ ]
30
+
31
+ def initialize
32
+ super('app')
33
+ STDERR.sync = true
34
+ self.level = Logger::FATAL
35
+ end
36
+
37
+ def run
38
+ @worker = WSDL::SOAP::WSDL2Ruby.new
39
+ @worker.logger = @log
40
+ location, opt = parse_opt(GetoptLong.new(*OptSet))
41
+ usage_exit unless location
42
+ @worker.location = location
43
+ if opt['quiet']
44
+ self.level = Logger::FATAL
45
+ else
46
+ self.level = Logger::INFO
47
+ end
48
+ @worker.opt.update(opt)
49
+ @worker.run
50
+ 0
51
+ end
52
+
53
+ def usage_exit
54
+ puts <<__EOU__
55
+ Usage: #{ $0 } --wsdl wsdl_location [options]
56
+ wsdl_location: filename or URL
57
+
58
+ Example:
59
+ For server side:
60
+ #{ $0 } --wsdl myapp.wsdl --type server
61
+ For client side:
62
+ #{ $0 } --wsdl myapp.wsdl --type client
63
+
64
+ Options:
65
+ --wsdl wsdl_location
66
+ --type server|client
67
+ --type server implies;
68
+ --classdef --mapping_registry --servant_skelton --standalone_server_stub
69
+ --type client implies;
70
+ --classdef --mapping_registry --client_skelton --driver
71
+ --classdef [filenameprefix]
72
+ --mapping_registry
73
+ --client_skelton [servicename]
74
+ --servant_skelton [porttypename]
75
+ --cgi_stub [servicename]
76
+ --servlet_stub [servicename]
77
+ --standalone_server_stub [servicename]
78
+ --driver [porttypename]
79
+ --drivername_postfix driver_classname_postfix
80
+ --module_path Module::Path::Name
81
+ --force
82
+ --quiet
83
+
84
+ Terminology:
85
+ Client <-> Driver <-(SOAP)-> Stub <-> Servant
86
+
87
+ Driver and Stub: Automatically generated
88
+ Client and Servant: Skelton generated (you should change)
89
+ __EOU__
90
+ exit 1
91
+ end
92
+
93
+ def parse_opt(getoptlong)
94
+ opt = {}
95
+ wsdl = nil
96
+ begin
97
+ getoptlong.each do |name, arg|
98
+ case name
99
+ when "--wsdl"
100
+ wsdl = arg
101
+ when "--module_path"
102
+ opt['module_path'] = arg
103
+ when "--type"
104
+ case arg
105
+ when "server"
106
+ opt['classdef'] ||= nil
107
+ opt['mapping_registry'] ||= nil
108
+ opt['servant_skelton'] ||= nil
109
+ opt['standalone_server_stub'] ||= nil
110
+ when "client"
111
+ opt['classdef'] ||= nil
112
+ opt['mapping_registry'] ||= nil
113
+ opt['driver'] ||= nil
114
+ opt['client_skelton'] ||= nil
115
+ else
116
+ raise ArgumentError.new("Unknown type #{ arg }")
117
+ end
118
+ when "--classdef", "--mapping_registry",
119
+ "--client_skelton", "--servant_skelton",
120
+ "--cgi_stub", "--servlet_stub", "--standalone_server_stub",
121
+ "--driver"
122
+ opt[name.sub(/^--/, '')] = arg.empty? ? nil : arg
123
+ when "--drivername_postfix"
124
+ opt['drivername_postfix'] = arg
125
+ when "--force"
126
+ opt['force'] = true
127
+ when "--quiet"
128
+ opt['quiet'] = true
129
+ else
130
+ raise ArgumentError.new("Unknown type #{ arg }")
131
+ end
132
+ end
133
+ rescue
134
+ usage_exit
135
+ end
136
+ return wsdl, opt
137
+ end
138
+ end
139
+
140
+ WSDL2RubyRailsApp.new.start
data/bin/xsd2ruby.rb ADDED
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ $:.unshift File.join(File.dirname(__FILE__),'../lib') if ENV['DEBUG_SOAP4R']
4
+
5
+ require 'getoptlong'
6
+ require 'logger'
7
+ require 'logger-application' unless defined?(Logger::Application)
8
+ require 'wsdl/xmlSchema/xsd2ruby'
9
+
10
+ class XSD2RubyApp < Logger::Application
11
+ private
12
+
13
+ OptSet = [
14
+ ['--xsd','-x', GetoptLong::REQUIRED_ARGUMENT],
15
+ ['--module_path','-m', GetoptLong::REQUIRED_ARGUMENT],
16
+ ['--classdef','-e', GetoptLong::OPTIONAL_ARGUMENT],
17
+ ['--mapping_registry','-r', GetoptLong::NO_ARGUMENT],
18
+ ['--mapper','-p', GetoptLong::NO_ARGUMENT],
19
+ ['--force','-f', GetoptLong::NO_ARGUMENT],
20
+ ['--quiet','-q', GetoptLong::NO_ARGUMENT],
21
+ ]
22
+
23
+ def initialize
24
+ super('app')
25
+ STDERR.sync = true
26
+ self.level = Logger::FATAL
27
+ end
28
+
29
+ def run
30
+ @worker = WSDL::XMLSchema::XSD2Ruby.new
31
+ @worker.logger = @log
32
+ location, opt = parse_opt(GetoptLong.new(*OptSet))
33
+ usage_exit unless location
34
+ @worker.location = location
35
+ if opt['quiet']
36
+ self.level = Logger::FATAL
37
+ else
38
+ self.level = Logger::INFO
39
+ end
40
+ @worker.opt.update(opt)
41
+ @worker.run
42
+ 0
43
+ end
44
+
45
+ def usage_exit
46
+ puts <<__EOU__
47
+ Usage: #{ $0 } --xsd xsd_location [options]
48
+ xsd_location: filename or URL
49
+
50
+ Example:
51
+ #{ $0 } --xsd myapp.xsd --classdef foo
52
+
53
+ Options:
54
+ --xsd xsd_location
55
+ --classdef [filenameprefix]
56
+ --mapping_registry
57
+ --mapper
58
+ --module_path [Module::Path::Name]
59
+ --force
60
+ --quiet
61
+ __EOU__
62
+ exit 1
63
+ end
64
+
65
+ def parse_opt(getoptlong)
66
+ opt = {}
67
+ xsd = nil
68
+ begin
69
+ getoptlong.each do |name, arg|
70
+ case name
71
+ when "--xsd"
72
+ xsd = arg
73
+ when "--module_path"
74
+ opt['module_path'] = arg
75
+ when "--classdef", "--mapping_registry", "--mapper"
76
+ opt[name.sub(/^--/, '')] = arg.empty? ? nil : arg
77
+ when "--force"
78
+ opt['force'] = true
79
+ when "--quiet"
80
+ opt['quiet'] = true
81
+ else
82
+ raise ArgumentError.new("Unknown type #{ arg }")
83
+ end
84
+ end
85
+ rescue
86
+ usage_exit
87
+ end
88
+ return xsd, opt
89
+ end
90
+ end
91
+
92
+ XSD2RubyApp.new.start
@@ -0,0 +1,109 @@
1
+ # encoding: UTF-8
2
+ # soap/attachment.rb: SOAP4R - SwA implementation.
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'
12
+
13
+
14
+ module SOAP
15
+
16
+
17
+ class SOAPAttachment < SOAPExternalReference
18
+ attr_reader :data
19
+
20
+ def initialize(value)
21
+ super()
22
+ @data = value
23
+ end
24
+
25
+ private
26
+
27
+ def external_contentid
28
+ @data.contentid
29
+ end
30
+ end
31
+
32
+
33
+ class Attachment
34
+ attr_reader :io
35
+ attr_accessor :contenttype
36
+
37
+ def initialize(string_or_readable = nil)
38
+ @string_or_readable = string_or_readable
39
+ @contenttype = "application/octet-stream"
40
+ @contentid = nil
41
+ @content = nil
42
+ end
43
+
44
+ def contentid
45
+ @contentid ||= Attachment.contentid(self)
46
+ end
47
+
48
+ def contentid=(contentid)
49
+ @contentid = contentid
50
+ end
51
+
52
+ def mime_contentid
53
+ '<' + contentid + '>'
54
+ end
55
+
56
+ def content
57
+ if @content == nil and @string_or_readable != nil
58
+ @content = @string_or_readable.respond_to?(:read) ?
59
+ @string_or_readable.read : @string_or_readable
60
+ end
61
+ @content
62
+ end
63
+
64
+ def to_s
65
+ content
66
+ end
67
+
68
+ def write(out)
69
+ out.write(content)
70
+ end
71
+
72
+ def save(filename)
73
+ File.open(filename, "wb") do |f|
74
+ write(f)
75
+ end
76
+ end
77
+
78
+ def self.contentid(obj)
79
+ # this needs to be fixed
80
+ [obj.__id__.to_s, Process.pid.to_s].join('.')
81
+ end
82
+
83
+ def self.mime_contentid(obj)
84
+ '<' + contentid(obj) + '>'
85
+ end
86
+ end
87
+
88
+
89
+ module Mapping
90
+ class AttachmentFactory < SOAP::Mapping::Factory
91
+ def obj2soap(soap_class, obj, info, map)
92
+ soap_obj = soap_class.new(obj)
93
+ mark_marshalled_obj(obj, soap_obj)
94
+ soap_obj
95
+ end
96
+
97
+ def soap2obj(obj_class, node, info, map)
98
+ obj = node.data
99
+ mark_unmarshalled_obj(node, obj)
100
+ return true, obj
101
+ end
102
+ end
103
+
104
+ DefaultRegistry.add(::SOAP::Attachment, ::SOAP::SOAPAttachment,
105
+ AttachmentFactory.new, nil)
106
+ end
107
+
108
+
109
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: UTF-8
2
+ # SOAP4R - attribute proxy interface.
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
+ module SOAP
11
+
12
+
13
+ module AttrProxy
14
+ def self.included(klass)
15
+ klass.extend(AttrProxyClassSupport)
16
+ end
17
+
18
+ module AttrProxyClassSupport
19
+ def attr_proxy(symbol, assignable = false)
20
+ name = symbol.to_s
21
+ define_method(name) {
22
+ attrproxy.__send__(name)
23
+ }
24
+ if assignable
25
+ aname = name + '='
26
+ define_method(aname) { |rhs|
27
+ attrproxy.__send__(aname, rhs)
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+
35
+ end