* lib/soap/streamHandler.rb: drop unused http parameters.

* lib/soap/encodingstyle/soapHandler.rb, lib/soap/mapping/factory.rb,
  lib/soap/mapping/mapping.rb, lib/soap/mapping/registry.rb,
  lib/wsdl/soap/complexType.rb: ApacheSOAP's map support was broken under WSDL
  dynanic client environment.  fixed.

* test/wsdl/raa/*: add tests.

* lib/xsd/datatypes.rb: dateTime precision bug fix (at least, I hope.)  bug of
  soap4r.  XSDDateTimeImple.to_time passed a Float to Time.local/Time.gm as an
  usec, and NUM2LONG(rb_num2long for Float) causes rounding error.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nahi 2003-11-28 05:53:16 +00:00
Родитель a017b0cc8a
Коммит 42bca643c3
18 изменённых файлов: 256 добавлений и 95 удалений

Просмотреть файл

@ -1,3 +1,21 @@
Fri Nov 28 14:41:52 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/soap/streamHandler.rb: drop unused http parameters.
* lib/soap/encodingstyle/soapHandler.rb, lib/soap/mapping/factory.rb,
lib/soap/mapping/mapping.rb, lib/soap/mapping/registry.rb,
lib/wsdl/soap/complexType.rb: ApacheSOAP's map support was broken
under WSDL dynanic client environment. fixed.
* test/wsdl/raa/*: add tests.
* lib/xsd/datatypes.rb: dateTime precision bug fix (at least, I hope.)
bug of soap4r. XSDDateTimeImple.to_time passed a Float to
Time.local/Time.gm as an usec, and NUM2LONG(rb_num2long for Float)
causes rounding error.
* test/soap/test_basetype.rb, test/xsd/test_xsd.rb: add tests.
Fri Nov 28 04:15:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (method_arity): used wrong Proc object. [ruby-talk:86504]

Просмотреть файл

@ -731,8 +731,9 @@ test/wsdl/axisArray/test_axisarray.rb
test/wsdl/emptycomplextype.wsdl
test/wsdl/raa/RAA.rb
test/wsdl/raa/README.txt
test/wsdl/raa/RAAServant.rb
test/wsdl/raa/RAAService.rb
test/wsdl/raa/raa.wsdl
test/wsdl/raa/server.rb
test/wsdl/raa/test_raa.rb
test/wsdl/test_emptycomplextype.rb
test/xsd/test_xmlschemaparser.rb

Просмотреть файл

@ -162,8 +162,6 @@ class SOAPHandler < Handler
o = SOAPReference.decode(elename, href)
@refpool << o
elsif @decode_typemap
# to parse multi-ref element with decode_tag_by_type.
# && (parent.node.class != SOAPBody || @is_first_top_ele)
o = decode_tag_by_wsdl(ns, elename, type, parent.node, arytype, extraattr)
else
o = decode_tag_by_type(ns, elename, type, parent.node, arytype, extraattr)
@ -333,6 +331,7 @@ private
def decode_tag_by_wsdl(ns, elename, typestr, parent, arytypestr, extraattr)
o = nil
# should branch by root attribute?
if parent.class == SOAPBody
if @is_first_top_ele
# Unqualified name is allowed here.
@ -363,11 +362,12 @@ private
extraattr)
end
# parent.definedtype is nil means the parent is SOAPUnknown. SOAPUnknown is
# generated by decode_tag_by_type when its type is anyType.
# parent.definedtype == nil means the parent is SOAPUnknown. SOAPUnknown
# is generated by decode_tag_by_type when its type is anyType.
parenttype = parent.definedtype || @decode_typemap[parent.type]
unless parenttype
raise EncodingStyleError.new("Unknown type '#{ parent.type }'.")
return decode_tag_by_type(ns, elename, typestr, parent, arytypestr,
extraattr)
end
definedtype_name = parenttype.child_type(elename)

Просмотреть файл

@ -356,14 +356,21 @@ class HashFactory_ < Factory
unless node.type == MapQName
return false
end
if node.key?('default')
if node.class == SOAPStruct and node.key?('default')
return false
end
obj = create_empty_object(obj_class)
mark_unmarshalled_obj(node, obj)
node.each do |key, value|
obj[Mapping._soap2obj(value['key'], map)] =
Mapping._soap2obj(value['value'], map)
if node.class == SOAPStruct
node.each do |key, value|
obj[Mapping._soap2obj(value['key'], map)] =
Mapping._soap2obj(value['value'], map)
end
else
node.each do |value|
obj[Mapping._soap2obj(value['key'], map)] =
Mapping._soap2obj(value['value'], map)
end
end
return true, obj
end

Просмотреть файл

@ -77,9 +77,10 @@ module Mapping
end
if detail.is_a?(Mapping::SOAPException)
begin
remote_backtrace = detail.to_e.backtrace
raise detail.to_e
rescue Exception => e2
detail.set_backtrace(e2)
e2.set_backtrace(remote_backtrace + e2.backtrace)
raise
end
else

Просмотреть файл

@ -34,11 +34,9 @@ RubyIVarName = XSD::QName.new(RubyTypeInstanceNamespace, 'ivars')
# Inner class to pass an exception.
class SOAPException; include Marshallable
attr_reader :excn_type_name, :message, :backtrace, :cause
attr_reader :excn_type_name, :cause
def initialize(e)
@excn_type_name = Mapping.name2elename(e.class.to_s)
@message = e.message
@backtrace = e.backtrace
@cause = e
end
@ -50,25 +48,15 @@ class SOAPException; include Marshallable
klass = Mapping.class_from_name(
Mapping.elename2name(@excn_type_name.to_s))
if klass.nil?
raise RuntimeError.new(@message)
raise RuntimeError.new(@cause.message)
end
unless klass <= ::Exception
raise NameError.new
end
obj = klass.new(@message)
obj = klass.new(@cause.message)
obj.extend(::SOAP::Mapping::MappedException)
obj
end
def set_backtrace(e)
e.set_backtrace(
if @backtrace.is_a?(Array)
@backtrace
else
[@backtrace.inspect]
end
)
end
end
@ -238,10 +226,12 @@ class Registry
[::String, ::SOAP::SOAPGMonth, BasetypeFactory],
[::String, ::SOAP::SOAPQName, BasetypeFactory],
[::Hash, ::SOAP::SOAPArray, HashFactory],
[::Hash, ::SOAP::SOAPStruct, HashFactory],
[::Array, ::SOAP::SOAPArray, ArrayFactory,
{:derived_class => true}],
[::Hash, ::SOAP::SOAPStruct, HashFactory],
[::SOAP::Mapping::SOAPException,
::SOAP::SOAPStruct, TypedStructFactory,
{:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],
@ -282,10 +272,12 @@ class Registry
[::String, ::SOAP::SOAPGMonth, BasetypeFactory],
[::String, ::SOAP::SOAPQName, BasetypeFactory],
[::Hash, ::SOAP::SOAPArray, HashFactory],
[::Hash, ::SOAP::SOAPStruct, HashFactory],
# Does not allow Array's subclass here.
[::Array, ::SOAP::SOAPArray, ArrayFactory],
[::Hash, ::SOAP::SOAPStruct, HashFactory],
[::SOAP::Mapping::SOAPException,
::SOAP::SOAPStruct, TypedStructFactory,
{:type => XSD::QName.new(RubyCustomTypeNamespace, "SOAPException")}],

Просмотреть файл

@ -82,9 +82,6 @@ public
attr_reader :client
NofRetry = 10 # [times]
ConnectTimeout = 20 # [sec]
SendTimeout = 60 # [sec]
ReceiveTimeout = 60 # [sec]
def initialize(endpoint_url, proxy = nil, charset = nil)
super(endpoint_url)
@ -93,9 +90,6 @@ public
@wiredump_dev = nil # Set an IO to get wiredump.
@wiredump_file_base = nil
@client = Client.new(@proxy, "SOAP4R/#{ Version }")
@client.session_manager.connect_timeout = ConnectTimeout
@client.session_manager.send_timeout = SendTimeout
@client.session_manager.receive_timeout = ReceiveTimeout
end
def inspect

Просмотреть файл

@ -48,13 +48,22 @@ class ComplexType < Info
end
def child_defined_complextype(name)
unless compoundtype == :TYPE_STRUCT
raise RuntimeError.new("Assert: not for struct")
end
unless ele = find_element(name)
if name.namespace.nil?
ele = find_element_by_name(name.name)
ele = nil
case compoundtype
when :TYPE_STRUCT
unless ele = find_element(name)
if name.namespace.nil?
ele = find_element_by_name(name.name)
end
end
when :TYPE_ARRAY
if content.elements.size == 1
ele = content.elements[0]
else
raise RuntimeError.new("Assert: must not reach.")
end
else
raise RuntimeError.new("Assert: Not implemented.")
end
unless ele
raise RuntimeError.new("Cannot find #{name} as a children of #{@name}.")
@ -83,10 +92,13 @@ class ComplexType < Info
private
def content_arytype
arytype = find_arytype
ns = arytype.namespace
name = arytype.name.sub(/\[(?:,)*\]$/, '')
XSD::QName.new(ns, name)
if arytype = find_arytype
ns = arytype.namespace
name = arytype.name.sub(/\[(?:,)*\]$/, '')
XSD::QName.new(ns, name)
else
nil
end
end
end

Просмотреть файл

@ -162,7 +162,6 @@ class XSDString < XSDAnySimpleType
def initialize(value = nil)
super()
@type = Type
@encoding = nil
set(value) if value
end
@ -254,6 +253,7 @@ private
end
@data = _to_s
@data.freeze
end
# 0.0 -> 0; right?
@ -440,6 +440,7 @@ private
@min = $7.to_i
@sec = $8 ? XSDDecimal.new($8) : 0
@data = _to_s
@data.freeze
end
def _to_s
@ -476,11 +477,11 @@ module XSDDateTimeImpl
begin
if @data.offset * SecInDay == Time.now.utc_offset
d = @data
usec = (d.sec_fraction * SecInDay * 1000000).to_f
usec = (d.sec_fraction * SecInDay * 1000000).round
Time.local(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
else
d = @data.newof
usec = (d.sec_fraction * SecInDay * 1000000).to_f
usec = (d.sec_fraction * SecInDay * 1000000).round
Time.gm(d.year, d.month, d.mday, d.hour, d.min, d.sec, usec)
end
rescue ArgumentError
@ -516,6 +517,7 @@ module XSDDateTimeImpl
end
def _set(t)
set_datetime_init(t)
if (t.is_a?(Date))
@data = t
elsif (t.is_a?(Time))
@ -541,11 +543,16 @@ class XSDDateTime < XSDAnySimpleType
def initialize(value = nil)
super()
@type = Type
@secfrac = nil
set(value) if value
end
private
def set_datetime_init(t)
@secfrac = nil
end
def set_str(t)
/^([+\-]?\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -568,6 +575,7 @@ private
zonestr = $8
@data = DateTime.civil(year, mon, mday, hour, min, sec, tz2of(zonestr))
@secfrac = secfrac
if secfrac
diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
@ -588,10 +596,11 @@ private
s = format('%.4d-%02d-%02dT%02d:%02d:%02d',
year, @data.mon, @data.mday, @data.hour, @data.min, @data.sec)
if @data.sec_fraction.nonzero?
fr = @data.sec_fraction * SecInDay
shiftsize = fr.denominator.to_s.size + 1
fr_s = (fr * (10 ** shiftsize)).to_i.to_s
s << '.' << '0' * (shiftsize - fr_s.size) << fr_s.sub(/0+$/, '')
if @secfrac
s << ".#{ @secfrac }"
else
s << sprintf("%.16f", (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '')
end
end
add_tz(s)
end
@ -604,11 +613,16 @@ class XSDTime < XSDAnySimpleType
def initialize(value = nil)
super()
@type = Type
@secfrac = nil
set(value) if value
end
private
def set_datetime_init(t)
@secfrac = nil
end
def set_str(t)
/^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -622,19 +636,22 @@ private
zonestr = $5
@data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr))
@secfrac = secfrac
if secfrac
@data += secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay
@data += diffday
end
end
def _to_s
s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec)
if @data.sec_fraction.nonzero?
fr = @data.sec_fraction * SecInDay
shiftsize = fr.denominator.to_s.size + 1
fr_s = (fr * (10 ** shiftsize)).to_i.to_s
s << '.' << '0' * (shiftsize - fr_s.size) << fr_s.sub(/0+$/, '')
if @secfrac
s << ".#{ @secfrac }"
else
s << sprintf("%.16f", (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '')
end
end
add_tz(s)
end
@ -652,6 +669,9 @@ class XSDDate < XSDAnySimpleType
private
def set_datetime_init(t)
end
def set_str(t)
/^([+\-]?\d{4,})-(\d\d)-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -688,6 +708,9 @@ class XSDGYearMonth < XSDAnySimpleType
private
def set_datetime_init(t)
end
def set_str(t)
/^([+\-]?\d{4,})-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -723,6 +746,9 @@ class XSDGYear < XSDAnySimpleType
private
def set_datetime_init(t)
end
def set_str(t)
/^([+\-]?\d{4,})(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -757,6 +783,9 @@ class XSDGMonthDay < XSDAnySimpleType
private
def set_datetime_init(t)
end
def set_str(t)
/^(\d\d)-(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -788,6 +817,9 @@ class XSDGDay < XSDAnySimpleType
private
def set_datetime_init(t)
end
def set_str(t)
/^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -818,6 +850,9 @@ class XSDGMonth < XSDAnySimpleType
private
def set_datetime_init(t)
end
def set_str(t)
/^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip
unless Regexp.last_match
@ -935,6 +970,7 @@ private
@prefix = $1
@localpart = $2
@data = _to_s
@data.freeze
end
def _to_s

Просмотреть файл

@ -38,6 +38,7 @@ AMAZON_WSDL = 'http://soap.amazon.com/schemas3/AmazonWebServices.wsdl'
amazon = SOAP::WSDLDriverFactory.new(AMAZON_WSDL).create_driver
p "WSDL loaded"
amazon.generate_explicit_type = true
amazon.mandatorycharset = 'utf-8' # AWS should fix this bug.
#amazon.wiredump_dev = STDERR
# Show sales rank.

Просмотреть файл

@ -369,7 +369,7 @@ module MarshalTestLib
class MyTime < Time; def initialize(v, *args) super(*args); @v = v; end end
def test_time
# once there was a bug caused by usec overflow. try a little harder.
10.times do
100.times do
t = Time.now
marshal_equal(t, t.usec.to_s)
end

Просмотреть файл

@ -351,6 +351,8 @@ class TestSOAP < Test::Unit::TestCase
"2002-12-31T23:59:59-00:01",
"2002-12-31T23:59:59-23:59",
"2002-12-31T23:59:59.00000000000000000001+13:30",
"2002-12-31T23:59:59.51375Z",
"2002-12-31T23:59:59.51345+12:34",
"-2002-05-18T16:52:20Z",
"-4711-12-31T23:59:59Z",
"-4713-01-01T12:00:00Z",
@ -414,6 +416,8 @@ class TestSOAP < Test::Unit::TestCase
"23:59:59-00:01",
"23:59:59-23:59",
"23:59:59.00000000000000000001+13:30",
"23:59:59.51375Z",
"23:59:59.51375+12:34",
"23:59:59+00:01",
]
targets.each do |str|

Просмотреть файл

@ -235,20 +235,9 @@ class StringArray < Array
end
# http://xml.apache.org/xml-soap
class Map
class Map < Array
# Contents type should be dumped here...
@@schema_type = "Map"
@@schema_ns = "http://xml.apache.org/xml-soap"
def item
@item
end
def item=(value)
@item = value
end
def initialize(item = nil)
@item = item
end
end

Просмотреть файл

@ -0,0 +1,99 @@
class RAABaseServicePortType
# SYNOPSIS
# getAllListings
#
# ARGS
# N/A
#
# RETURNS
# return StringArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}StringArray
#
# RAISES
# (undefined)
#
def getAllListings
#raise NotImplementedError.new
["ruby", "soap4r"]
end
# SYNOPSIS
# getProductTree
#
# ARGS
# N/A
#
# RETURNS
# return Map - {http://xml.apache.org/xml-soap}Map
#
# RAISES
# (undefined)
#
def getProductTree
raise NotImplementedError.new
end
# SYNOPSIS
# getInfoFromCategory(category)
#
# ARGS
# category Category - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}Category
#
# RETURNS
# return InfoArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}InfoArray
#
# RAISES
# (undefined)
#
def getInfoFromCategory(category)
raise NotImplementedError.new
end
# SYNOPSIS
# getModifiedInfoSince(timeInstant)
#
# ARGS
# timeInstant - {http://www.w3.org/2001/XMLSchema}dateTime
#
# RETURNS
# return InfoArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}InfoArray
#
# RAISES
# (undefined)
#
def getModifiedInfoSince(timeInstant)
raise NotImplementedError.new
end
# SYNOPSIS
# getInfoFromName(productName)
#
# ARGS
# productName - {http://www.w3.org/2001/XMLSchema}string
#
# RETURNS
# return Info - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}Info
#
# RAISES
# (undefined)
#
def getInfoFromName(productName)
raise NotImplementedError.new
end
# SYNOPSIS
# getInfoFromOwnerId(ownerId)
#
# ARGS
# ownerId - {http://www.w3.org/2001/XMLSchema}int
#
# RETURNS
# return InfoArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}InfoArray
#
# RAISES
# (undefined)
#
def getInfoFromOwnerId(ownerId)
raise NotImplementedError.new
end
end

Просмотреть файл

@ -1,6 +1,7 @@
#!/usr/bin/env ruby
require 'RAAServant.rb'
require 'soap/rpc/standaloneServer'
require 'RAA.rb'
class RAABaseServicePortType
MappingRegistry = SOAP::Mapping::Registry.new
@ -13,9 +14,9 @@ class RAABaseServicePortType
)
MappingRegistry.set(
Map,
::SOAP::SOAPStruct,
::SOAP::Mapping::Registry::TypedStructFactory,
{ :type => XSD::QName.new("http://xml.apache.org/xml-soap", "Map") }
::SOAP::SOAPArray,
::SOAP::Mapping::Registry::TypedArrayFactory,
{ :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "anyType") }
)
MappingRegistry.set(
Category,
@ -47,48 +48,39 @@ class RAABaseServicePortType
::SOAP::Mapping::Registry::TypedStructFactory,
{ :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Owner") }
)
Methods = [
["getAllListings", "getAllListings", [
["retval", "return",
[::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "string"]]],
"", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
[::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "string"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
["getProductTree", "getProductTree", [
["retval", "return",
[::SOAP::SOAPStruct, "http://xml.apache.org/xml-soap", "Map"]]],
"", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
[::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "anyType"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
["getInfoFromCategory", "getInfoFromCategory", [
["in", "category",
[::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category"]],
["retval", "return",
[::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
"", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
[::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
["getModifiedInfoSince", "getModifiedInfoSince", [
["in", "timeInstant",
[SOAP::SOAPDateTime]],
["retval", "return",
[::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
"", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
[::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
["getInfoFromName", "getInfoFromName", [
["in", "productName",
[SOAP::SOAPString]],
["retval", "return",
[::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
"", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
[::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
["getInfoFromOwnerId", "getInfoFromOwnerId", [
["in", "ownerId",
[SOAP::SOAPInt]],
["retval", "return",
[::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
"", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"]
[::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"]
]
def getAllListings
["ruby", "soap4r"]
end
end
class RAABaseServiceServer < SOAP::RPC::StandaloneServer
class App < SOAP::RPC::StandaloneServer
def initialize(*arg)
super
@ -102,3 +94,8 @@ class RAABaseServiceServer < SOAP::RPC::StandaloneServer
self.mapping_registry = RAABaseServicePortType::MappingRegistry
end
end
# Change listen port.
if $0 == __FILE__
App.new('app', nil, '0.0.0.0', 10080).start
end

Просмотреть файл

@ -1,4 +1,7 @@
server.rb: based on RAAService.rb which is generated with the following command;
RAAServant.rb: based on the file which is generated with the following command;
bin/wsdl2ruby.rb --wsdl raa.wsdl --servant_skelton --force
RAAService.rb: generated with the following command;
bin/wsdl2ruby.rb --wsdl raa.wsdl --standalone_server_stub --force
RAA.rb: generated with the following command;

Просмотреть файл

@ -18,9 +18,11 @@ class TestRAA < Test::Unit::TestCase
def setup_server
$:.push(DIR)
require File.join(DIR, 'server.rb')
require File.join(DIR, 'RAA.rb')
require File.join(DIR, 'RAAServant.rb')
require File.join(DIR, 'RAAService.rb')
$:.delete(DIR)
@server = RAABaseServiceServer.new('RAA server', nil, '0.0.0.0', Port)
@server = App.new('RAA server', nil, '0.0.0.0', Port)
@server.level = Logger::Severity::ERROR
@t = Thread.new {
Thread.current.abort_on_exception = true

Просмотреть файл

@ -384,6 +384,9 @@ class TestXSD < Test::Unit::TestCase
"2002-12-31T23:59:59-00:01",
"2002-12-31T23:59:59-23:59",
"2002-12-31T23:59:59.00000000000000000001+13:30",
"2002-12-31T23:59:59.5137Z",
"2002-12-31T23:59:59.51375Z", # 411/800
"2002-12-31T23:59:59.51375+12:34",
"-2002-05-18T16:52:20Z",
"-4713-01-01T12:00:00Z",
"-2002-12-31T23:59:59+00:01",
@ -445,6 +448,8 @@ class TestXSD < Test::Unit::TestCase
"23:59:59-00:01",
"23:59:59-23:59",
"23:59:59.00000000000000000001+13:30",
"23:59:59.51345Z",
"23:59:59.51345+12:34",
"23:59:59+00:01",
]
targets.each do |str|