summaryrefslogtreecommitdiff
path: root/sample/soap/raa/iRAA.rb
diff options
context:
space:
mode:
Diffstat (limited to 'sample/soap/raa/iRAA.rb')
-rw-r--r--sample/soap/raa/iRAA.rb154
1 files changed, 154 insertions, 0 deletions
diff --git a/sample/soap/raa/iRAA.rb b/sample/soap/raa/iRAA.rb
new file mode 100644
index 0000000000..2b188fb887
--- /dev/null
+++ b/sample/soap/raa/iRAA.rb
@@ -0,0 +1,154 @@
+require 'soap/mapping'
+
+
+module RAA; extend SOAP
+
+
+InterfaceNS = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
+MappingRegistry = SOAP::Mapping::Registry.new
+
+Methods = [
+ ['getAllListings', ['retval', 'return']],
+ ['getProductTree', ['retval', 'return']],
+ ['getInfoFromCategory', ['in', 'category'], [ 'retval', 'return']],
+ ['getModifiedInfoSince', ['in', 'time'], [ 'retval', 'return']],
+ ['getInfoFromName', ['in', 'name'], ['retval', 'return']],
+]
+
+
+class Category
+ include SOAP::Marshallable
+
+ @@schema_type = 'Category'
+ @@schema_ns = InterfaceNS
+
+ attr_reader :major, :minor
+
+ def initialize(major, minor = nil)
+ @major = major
+ @minor = minor
+ end
+
+ def to_s
+ "#{ @major }/#{ @minor }"
+ end
+
+ def ==(rhs)
+ if @major != rhs.major
+ false
+ elsif !@minor or !rhs.minor
+ true
+ else
+ @minor == rhs.minor
+ end
+ end
+end
+
+MappingRegistry.set(
+ ::RAA::Category,
+ ::SOAP::SOAPStruct,
+ ::SOAP::Mapping::Registry::TypedStructFactory,
+ { :type => XSD::QName.new(InterfaceNS, "Category") }
+)
+
+class Product
+ include SOAP::Marshallable
+
+ @@schema_type = 'Product'
+ @@schema_ns = InterfaceNS
+
+ attr_reader :id, :name
+ attr_accessor :short_description, :version, :status, :homepage, :download, :license, :description
+
+ def initialize(name, short_description = nil, version = nil, status = nil, homepage = nil, download = nil, license = nil, description = nil)
+ @name = name
+ @short_description = short_description
+ @version = version
+ @status = status
+ @homepage = homepage
+ @download = download
+ @license = license
+ @description = description
+ end
+end
+
+MappingRegistry.set(
+ ::RAA::Product,
+ ::SOAP::SOAPStruct,
+ ::SOAP::Mapping::Registry::TypedStructFactory,
+ { :type => XSD::QName.new(InterfaceNS, "Product") }
+)
+
+class Owner
+ include SOAP::Marshallable
+
+ @@schema_type = 'Owner'
+ @@schema_ns = InterfaceNS
+
+ attr_reader :id
+ attr_accessor :email, :name
+
+ def initialize(email, name)
+ @email = email
+ @name = name
+ @id = "#{ @email }-#{ @name }"
+ end
+end
+
+MappingRegistry.set(
+ ::RAA::Owner,
+ ::SOAP::SOAPStruct,
+ ::SOAP::Mapping::Registry::TypedStructFactory,
+ { :type => XSD::QName.new(InterfaceNS, "Owner") }
+)
+
+class Info
+ include SOAP::Marshallable
+
+ @@schema_type = 'Info'
+ @@schema_ns = InterfaceNS
+
+ attr_accessor :category, :product, :owner, :updated, :created
+
+ def initialize(category = nil, product = nil, owner = nil, updated = nil, created = nil)
+ @category = category
+ @product = product
+ @owner = owner
+ @updated = updated
+ @created = created
+ end
+
+ def <=>(rhs)
+ @updated <=> rhs.updated
+ end
+
+ def eql?(rhs)
+ @product.name == rhs.product.name
+ end
+end
+
+MappingRegistry.set(
+ ::RAA::Info,
+ ::SOAP::SOAPStruct,
+ ::SOAP::Mapping::Registry::TypedStructFactory,
+ { :type => XSD::QName.new(InterfaceNS, "Info") }
+)
+
+class StringArray < Array; end
+MappingRegistry.set(
+ ::RAA::StringArray,
+ ::SOAP::SOAPArray,
+ ::SOAP::Mapping::Registry::TypedArrayFactory,
+ { :type => XSD::XSDString::Type }
+)
+
+class InfoArray < Array; end
+MappingRegistry.set(
+ ::RAA::InfoArray,
+ ::SOAP::SOAPArray,
+ ::SOAP::Mapping::Registry::TypedArrayFactory,
+ { :type => XSD::QName.new(InterfaceNS, 'Info') }
+)
+
+
+end