Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/trunk/test/interopR2/base.rb

Revision 2006, 7.1 kB (checked in by nahi, 1 year ago)
  • update tests for the previous change ('in' -> :in)
  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1 require 'soap/soap'
2 require 'soap/mapping'
3
4
5 InterfaceNS = 'http://soapinterop.org/'
6 TypeNS = 'http://soapinterop.org/xsd'
7 ApacheNS = 'http://xml.apache.org/xml-soap'
8
9
10 module SOAPBuildersInterop
11 extend SOAP
12
13
14 MethodsBase = [
15   ['echoVoid'],
16   ['echoString',
17     [:in, 'inputString', nil], [:retval, 'return', nil]],
18   ['echoStringArray',
19     [:in, 'inputStringArray', nil], [:retval, 'return', nil]],
20   ['echoInteger',
21     [:in, 'inputInteger', nil], [:retval, 'return', nil]],
22   ['echoIntegerArray',
23     [:in, 'inputIntegerArray', nil], [:retval, 'return', nil]],
24   ['echoFloat',
25     [:in, 'inputFloat', nil], [:retval, 'return', nil]],
26   ['echoFloatArray',
27     [:in, 'inputFloatArray', nil], [:retval, 'return', nil]],
28   ['echoStruct',
29     [:in, 'inputStruct', nil], [:retval, 'return', nil]],
30   ['echoStructArray',
31     [:in, 'inputStructArray', nil], [:retval, 'return', nil]],
32   ['echoDate',
33     [:in, 'inputDate', nil], [:retval, 'return', nil]],
34   ['echoBase64',
35     [:in, 'inputBase64', nil], [:retval, 'return', nil]],
36   ['echoHexBinary',
37     [:in, 'inputHexBinary', nil], [:retval, 'return', nil]],
38   ['echoBoolean',
39     [:in, 'inputBoolean', nil], [:retval, 'return', nil]],
40   ['echoDecimal',
41     [:in, 'inputDecimal', nil], [:retval, 'return', nil]],
42   ['echoMap',
43     [:in, 'inputMap', nil], [:retval, 'return', nil]],
44   ['echoMapArray',
45     [:in, 'inputMapArray', nil], [:retval, 'return', nil]],
46
47   ['echoDouble',
48     [:in, 'inputDouble', nil], [:retval, 'return', nil]],
49   ['echoXSDDateTime',
50     [:in, 'inputXSDDateTime', nil], [:retval, 'return', nil]],
51   ['echoXSDDate',
52     [:in, 'inputXSDDate', nil], [:retval, 'return', nil]],
53   ['echoXSDTime',
54     [:in, 'inputXSDTime', nil], [:retval, 'return', nil]],
55 ]
56
57 MethodsGroupB = [
58   ['echoStructAsSimpleTypes',
59     [:in, 'inputStruct', nil], [:out, 'outputString', nil], [:out, 'outputInteger', nil], [:out, 'outputFloat', nil]],
60   ['echoSimpleTypesAsStruct',
61     [:in, 'inputString', nil], [:in, 'inputInteger', nil], [:in, 'inputFloat', nil], [:retval, 'return', nil]],
62   ['echo2DStringArray',
63     [:in, 'input2DStringArray', nil], [:retval, 'return', nil]],
64   ['echoNestedStruct',
65     [:in, 'inputStruct', nil], [:retval, 'return', nil]],
66   ['echoNestedArray',
67     [:in, 'inputStruct', nil], [:retval, 'return', nil]],
68 ]
69
70 MethodsPolyMorph = [
71   ['echoPolyMorph',
72     [:in, 'inputPolyMorph', nil], [:retval, 'return', nil]],
73   ['echoPolyMorphStruct',
74     [:in, 'inputPolyMorphStruct', nil], [:retval, 'return', nil]],
75   ['echoPolyMorphArray',
76     [:in, 'inputPolyMorphArray', nil], [:retval, 'return', nil]],
77 ]
78
79
80 module FloatSupport
81   def floatEquals( lhs, rhs )
82     lhsVar = lhs.is_a?( SOAP::SOAPFloat )? lhs.data : lhs
83     rhsVar = rhs.is_a?( SOAP::SOAPFloat )? rhs.data : rhs
84     lhsVar == rhsVar
85   end
86 end
87
88 class SOAPStruct
89   include SOAP::Marshallable
90   include FloatSupport
91
92   attr_accessor :varInt, :varFloat, :varString
93
94   def initialize( varInt, varFloat, varString )
95     @varInt = varInt
96     @varFloat = varFloat ? SOAP::SOAPFloat.new( varFloat ) : nil
97     @varString = varString
98   end
99
100   def ==( rhs )
101     r = if rhs.is_a?( self.class )
102         ( self.varInt == rhs.varInt &&
103         floatEquals( self.varFloat, rhs.varFloat ) &&
104         self.varString == rhs.varString )
105       else
106         false
107       end
108     r
109   end
110
111   def to_s
112     "#{ varInt }:#{ varFloat }:#{ varString }"
113   end
114 end
115
116
117 class SOAPStructStruct
118   include SOAP::Marshallable
119   include FloatSupport
120
121   attr_accessor :varInt, :varFloat, :varString, :varStruct
122
123   def initialize( varInt, varFloat, varString, varStruct = nil )
124     @varInt = varInt
125     @varFloat = varFloat ? SOAP::SOAPFloat.new( varFloat ) : nil
126     @varString = varString
127     @varStruct = varStruct
128   end
129
130   def ==( rhs )
131     r = if rhs.is_a?( self.class )
132         ( self.varInt == rhs.varInt &&
133         floatEquals( self.varFloat, rhs.varFloat ) &&
134         self.varString == rhs.varString &&
135         self.varStruct == rhs.varStruct )
136       else
137         false
138       end
139     r
140   end
141
142   def to_s
143     "#{ varInt }:#{ varFloat }:#{ varString }:#{ varStruct }"
144   end
145 end
146
147
148 class PolyMorphStruct
149   include SOAP::Marshallable
150
151   attr_reader :varA, :varB, :varC
152
153   def initialize( varA, varB, varC )
154     @varA = varA
155     @varB = varB
156     @varC = varC
157   end
158
159   def ==( rhs )
160     r = if rhs.is_a?( self.class )
161         ( self.varA == rhs.varA &&
162         self.varB == rhs.varB &&
163         self.varC == rhs.varC )
164       else
165         false
166       end
167     r
168   end
169
170   def to_s
171     "#{ varA }:#{ varB }:#{ varC }"
172   end
173 end
174
175
176 class SOAPArrayStruct
177   include SOAP::Marshallable
178   include FloatSupport
179
180   attr_accessor :varInt, :varFloat, :varString, :varArray
181
182   def initialize( varInt, varFloat, varString, varArray = nil )
183     @varInt = varInt
184     @varFloat = varFloat ? SOAP::SOAPFloat.new( varFloat ) : nil
185     @varString = varString
186     @varArray = varArray
187   end
188
189   def ==( rhs )
190     r = if rhs.is_a?( self.class )
191         ( self.varInt == rhs.varInt &&
192         floatEquals( self.varFloat, rhs.varFloat ) &&
193         self.varString == rhs.varString &&
194         self.varArray == rhs.varArray )
195       else
196         false
197       end
198     r
199   end
200
201   def to_s
202     "#{ varInt }:#{ varFloat }:#{ varString }:#{ varArray }"
203   end
204 end
205
206
207 class StringArray < Array; end
208 class IntArray < Array; end
209 class FloatArray < Array; end
210 class SOAPStructArray < Array; end
211 class SOAPMapArray < Array; end
212 class ArrayOfanyType < Array; end
213
214
215 MappingRegistry = SOAP::Mapping::Registry.new
216
217 MappingRegistry.set(
218   ::SOAPBuildersInterop::SOAPStruct,
219   ::SOAP::SOAPStruct,
220   ::SOAP::Mapping::Registry::TypedStructFactory,
221   { :type => XSD::QName.new( TypeNS, "SOAPStruct" ) }
222 )
223
224 MappingRegistry.set(
225   ::SOAPBuildersInterop::SOAPStructStruct,
226   ::SOAP::SOAPStruct,
227   ::SOAP::Mapping::Registry::TypedStructFactory,
228   { :type => XSD::QName.new( TypeNS, "SOAPStructStruct" ) }
229 )
230
231 MappingRegistry.set(
232   ::SOAPBuildersInterop::PolyMorphStruct,
233   ::SOAP::SOAPStruct,
234   ::SOAP::Mapping::Registry::TypedStructFactory,
235   { :type => XSD::QName.new( TypeNS, "PolyMorphStruct" ) }
236 )
237
238 MappingRegistry.set(
239   ::SOAPBuildersInterop::SOAPArrayStruct,
240   ::SOAP::SOAPStruct,
241   ::SOAP::Mapping::Registry::TypedStructFactory,
242   { :type => XSD::QName.new( TypeNS, "SOAPArrayStruct" ) }
243 )
244
245 MappingRegistry.set(
246   ::SOAPBuildersInterop::StringArray,
247   ::SOAP::SOAPArray,
248   ::SOAP::Mapping::Registry::TypedArrayFactory,
249   { :type => XSD::QName.new( XSD::Namespace, XSD::StringLiteral ) }
250 )
251
252 MappingRegistry.set(
253   ::SOAPBuildersInterop::IntArray,
254   ::SOAP::SOAPArray,
255   ::SOAP::Mapping::Registry::TypedArrayFactory,
256   { :type => XSD::QName.new( XSD::Namespace, XSD::IntLiteral ) }
257 )
258
259 MappingRegistry.set(
260   ::SOAPBuildersInterop::FloatArray,
261   ::SOAP::SOAPArray,
262   ::SOAP::Mapping::Registry::TypedArrayFactory,
263   { :type => XSD::QName.new( XSD::Namespace, XSD::FloatLiteral ) }
264 )
265
266 MappingRegistry.set(
267   ::SOAPBuildersInterop::SOAPStructArray,
268   ::SOAP::SOAPArray,
269   ::SOAP::Mapping::Registry::TypedArrayFactory,
270   { :type => XSD::QName.new( TypeNS, 'SOAPStruct' ) }
271 )
272
273 MappingRegistry.set(
274   ::SOAPBuildersInterop::SOAPMapArray,
275   ::SOAP::SOAPArray,
276   ::SOAP::Mapping::Registry::TypedArrayFactory,
277   { :type => XSD::QName.new( ApacheNS, 'Map' ) }
278 )
279
280 MappingRegistry.set(
281   ::SOAPBuildersInterop::ArrayOfanyType,
282   ::SOAP::SOAPArray,
283   ::SOAP::Mapping::Registry::TypedArrayFactory,
284   { :type => XSD::AnyTypeName }
285 )
286
287
288 end
Note: See TracBrowser for help on using the browser.