Class WSDL::SOAP::Operation
In: lib/wsdl/soap/operation.rb
Parent: Info

Methods

Classes and Modules

Class WSDL::SOAP::Operation::OperationInfo

Attributes

soapaction  [R] 
style  [R] 

Public Class methods

[Source]

    # File lib/wsdl/soap/operation.rb, line 40
40:   def initialize
41:     super
42:     @soapaction = nil
43:     @style = nil
44:   end

Public Instance methods

[Source]

    # File lib/wsdl/soap/operation.rb, line 66
66:   def input_info
67:     name_info = parent.find_operation.input_info
68:     param_info(name_info, parent.input)
69:   end

[Source]

    # File lib/wsdl/soap/operation.rb, line 76
76:   def operation_style
77:     return @style if @style
78:     if parent_binding.soapbinding
79:       return parent_binding.soapbinding.style
80:     end
81:     nil
82:   end

[Source]

    # File lib/wsdl/soap/operation.rb, line 71
71:   def output_info
72:     name_info = parent.find_operation.output_info
73:     param_info(name_info, parent.output)
74:   end

[Source]

    # File lib/wsdl/soap/operation.rb, line 50
50:   def parse_attr(attr, value)
51:     case attr
52:     when StyleAttrName
53:       if ["document", "rpc"].include?(value.source)
54:         @style = value.source.intern
55:       else
56:         raise Parser::AttributeConstraintError.new(
57:           "Unexpected value #{ value }.")
58:       end
59:     when SOAPActionAttrName
60:       @soapaction = value.source
61:     else
62:       nil
63:     end
64:   end

[Source]

    # File lib/wsdl/soap/operation.rb, line 46
46:   def parse_element(element)
47:     nil
48:   end

Private Instance methods

[Source]

     # File lib/wsdl/soap/operation.rb, line 90
 90:   def param_info(name_info, param)
 91:     op_name = name_info.op_name
 92:     optype_name = name_info.optype_name
 93: 
 94:     soapheader = param.soapheader
 95:     headerparts = soapheader.collect { |item| item.find_part }
 96: 
 97:     soapbody = param.soapbody
 98:     if soapbody.encodingstyle and
 99:         soapbody.encodingstyle != ::SOAP::EncodingNamespace
100:       raise NotImplementedError.new(
101:         "EncodingStyle '#{ soapbody.encodingstyle }' not supported.")
102:     end
103:     if soapbody.namespace
104:       op_name = XSD::QName.new(soapbody.namespace, op_name.name)
105:     end
106:     if soapbody.parts
107:       target = soapbody.parts.split(/\s+/)
108:       bodyparts = name_info.parts.find_all { |part|
109:         target.include?(part.name)
110:       }
111:     else
112:       bodyparts = name_info.parts
113:     end
114: 
115:     faultpart = nil
116:     OperationInfo.new(operation_style, op_name, optype_name, headerparts, bodyparts, faultpart, parent.soapaction)
117:   end

[Source]

    # File lib/wsdl/soap/operation.rb, line 86
86:   def parent_binding
87:     parent.parent
88:   end

[Validate]