actionwebservice 0.6.2 → 0.7.0

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 (58) hide show
  1. data/CHANGELOG +21 -0
  2. data/README +50 -6
  3. data/Rakefile +9 -9
  4. data/TODO +6 -6
  5. data/lib/action_web_service.rb +4 -3
  6. data/lib/action_web_service/api.rb +248 -1
  7. data/lib/action_web_service/casting.rb +111 -0
  8. data/lib/action_web_service/client/soap_client.rb +17 -33
  9. data/lib/action_web_service/client/xmlrpc_client.rb +10 -34
  10. data/lib/action_web_service/container/delegated_container.rb +1 -1
  11. data/lib/action_web_service/dispatcher/abstract.rb +52 -72
  12. data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +71 -55
  13. data/lib/action_web_service/protocol/abstract.rb +82 -3
  14. data/lib/action_web_service/protocol/discovery.rb +2 -2
  15. data/lib/action_web_service/protocol/soap_protocol.rb +95 -22
  16. data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +197 -0
  17. data/lib/action_web_service/protocol/xmlrpc_protocol.rb +56 -24
  18. data/lib/action_web_service/scaffolding.rb +237 -0
  19. data/lib/action_web_service/struct.rb +17 -4
  20. data/lib/action_web_service/support/signature_types.rb +194 -0
  21. data/lib/action_web_service/templates/scaffolds/layout.rhtml +65 -0
  22. data/lib/action_web_service/templates/scaffolds/methods.rhtml +6 -0
  23. data/lib/action_web_service/templates/scaffolds/parameters.rhtml +28 -0
  24. data/lib/action_web_service/templates/scaffolds/result.rhtml +30 -0
  25. data/lib/action_web_service/test_invoke.rb +23 -42
  26. data/test/abstract_dispatcher.rb +102 -48
  27. data/test/abstract_unit.rb +1 -1
  28. data/test/api_test.rb +40 -7
  29. data/test/casting_test.rb +82 -0
  30. data/test/client_soap_test.rb +3 -0
  31. data/test/client_xmlrpc_test.rb +5 -1
  32. data/test/dispatcher_action_controller_soap_test.rb +9 -12
  33. data/test/dispatcher_action_controller_xmlrpc_test.rb +1 -11
  34. data/test/run +1 -0
  35. data/test/scaffolded_controller_test.rb +67 -0
  36. data/test/struct_test.rb +33 -21
  37. data/test/test_invoke_test.rb +1 -1
  38. metadata +18 -31
  39. data/lib/action_web_service/api/base.rb +0 -135
  40. data/lib/action_web_service/vendor/ws.rb +0 -4
  41. data/lib/action_web_service/vendor/ws/common.rb +0 -8
  42. data/lib/action_web_service/vendor/ws/encoding.rb +0 -3
  43. data/lib/action_web_service/vendor/ws/encoding/abstract.rb +0 -26
  44. data/lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb +0 -90
  45. data/lib/action_web_service/vendor/ws/encoding/xmlrpc_encoding.rb +0 -53
  46. data/lib/action_web_service/vendor/ws/marshaling.rb +0 -3
  47. data/lib/action_web_service/vendor/ws/marshaling/abstract.rb +0 -17
  48. data/lib/action_web_service/vendor/ws/marshaling/soap_marshaling.rb +0 -277
  49. data/lib/action_web_service/vendor/ws/marshaling/xmlrpc_marshaling.rb +0 -116
  50. data/lib/action_web_service/vendor/ws/types.rb +0 -165
  51. data/test/ws/abstract_encoding.rb +0 -68
  52. data/test/ws/abstract_unit.rb +0 -13
  53. data/test/ws/gencov +0 -3
  54. data/test/ws/run +0 -5
  55. data/test/ws/soap_marshaling_test.rb +0 -91
  56. data/test/ws/soap_rpc_encoding_test.rb +0 -47
  57. data/test/ws/types_test.rb +0 -43
  58. data/test/ws/xmlrpc_encoding_test.rb +0 -34
@@ -1,47 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_encoding'
2
- require 'time'
3
-
4
- class SoapRpcEncodingTest < Test::Unit::TestCase
5
- include EncodingTest
6
-
7
- def test_setup
8
- @encoder = WS::Encoding::SoapRpcEncoding.new
9
- @marshaler = WS::Marshaling::SoapMarshaler.new
10
- end
11
-
12
- def test_call_encoding_and_decoding
13
- obj = encode_rpc_call('DecodeMe', @call_signature, @call_params)
14
- method_name, decoded_params = decode_rpc_call(obj)
15
- params = decoded_params.map{|x| @marshaler.unmarshal(x).value}
16
- assert_equal(method_name, 'DecodeMe')
17
- assert_equal(@call_params[0..3], params[0..3])
18
- # XXX: DateTime not marshaled correctly yet
19
- assert_equal(@call_params[5..-1], params[5..-1])
20
- end
21
-
22
- def test_response_encoding_and_decoding_simple
23
- obj = encode_rpc_response('DecodeMe', @response_signature, @response_param)
24
- method_name, return_value = decode_rpc_response(obj)
25
- return_value = @marshaler.unmarshal(return_value).value
26
- assert_equal('DecodeMe', method_name)
27
- assert_equal(@response_param, return_value)
28
- end
29
-
30
- def test_response_encoding_and_decoding_struct
31
- struct = Nested::StructClass.new
32
- obj = encode_rpc_response('DecodeMe', [Nested::StructClass], struct)
33
- method_name, return_value = decode_rpc_response(obj)
34
- return_value = @marshaler.unmarshal(return_value).value
35
- assert_equal('DecodeMe', method_name)
36
- assert_equal(struct, return_value)
37
- end
38
-
39
- def test_response_encoding_and_decoding_array
40
- struct = Nested::StructClass.new
41
- obj = encode_rpc_response('DecodeMe', [[Nested::StructClass]], [struct])
42
- method_name, return_value = decode_rpc_response(obj)
43
- return_value = @marshaler.unmarshal(return_value).value
44
- assert_equal('DecodeMe', method_name)
45
- assert_equal([struct], return_value)
46
- end
47
- end
@@ -1,43 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_unit'
2
-
3
- class TypesTest < Test::Unit::TestCase
4
- include WS
5
-
6
- def setup
7
- @caster = BaseTypeCaster.new
8
- end
9
-
10
- def test_base_types
11
- assert_equal(:int, BaseTypes.canonical_type_name(:integer))
12
- assert_equal(:int, BaseTypes.canonical_type_name(:fixnum))
13
- assert_equal(Integer, BaseTypes.type_name_to_class(:bignum))
14
- assert_equal(Date, BaseTypes.type_name_to_class(:date))
15
- assert_equal(Time, BaseTypes.type_name_to_class(:timestamp))
16
- assert_equal(TrueClass, BaseTypes.type_name_to_class(:bool))
17
- assert_equal(:int, BaseTypes.class_to_type_name(Bignum))
18
- assert_equal(:bool, BaseTypes.class_to_type_name(FalseClass))
19
- assert_equal(Integer, BaseTypes.canonical_type_class(Fixnum))
20
- assert_raises(TypeError) do
21
- BaseTypes.canonical_type_name(:fake)
22
- end
23
- end
24
-
25
- def test_casting
26
- assert_equal(5, @caster.cast("5", Fixnum))
27
- assert_equal('50.0', @caster.cast(50.0, String))
28
- assert_equal(true, @caster.cast('true', FalseClass))
29
- assert_equal(false, @caster.cast('false', TrueClass))
30
- assert_equal(true, @caster.cast(1, FalseClass))
31
- assert_equal(false, @caster.cast(0, TrueClass))
32
- assert_raises(TypeError) do
33
- @caster.cast('yes', FalseClass)
34
- end
35
- assert_equal(3.14159, @caster.cast('3.14159', Float))
36
- now1 = Time.new
37
- now2 = @caster.cast("#{now1}", Time)
38
- assert_equal(now1.tv_sec, now2.tv_sec)
39
- date1 = Date.parse('2004-01-01')
40
- date2 = @caster.cast("#{date1}", Date)
41
- assert_equal(date1, date2)
42
- end
43
- end
@@ -1,34 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_encoding'
2
- require 'time'
3
-
4
- class XmlRpcEncodingTest < Test::Unit::TestCase
5
- include EncodingTest
6
-
7
- def test_setup
8
- @encoder = WS::Encoding::XmlRpcEncoding.new
9
- @marshaler = WS::Marshaling::XmlRpcMarshaler.new
10
- end
11
-
12
- def test_typed_call_encoding_and_decoding
13
- obj = encode_rpc_call('DecodeMe', @call_signature, @call_params)
14
- method_name, params = decode_rpc_call(obj)
15
- (0..(@call_signature.length-1)).each do |i|
16
- params[i] = @marshaler.typed_unmarshal(params[i], @call_signature[i]).value
17
- end
18
- assert_equal(method_name, 'DecodeMe')
19
- assert_equal(@call_params[0..3], params[0..3])
20
- assert_equal(@call_params[5..-1], params[5..-1])
21
- end
22
-
23
- def test_untyped_call_encoding_and_decoding
24
- obj = encode_rpc_call('DecodeMe', @call_signature, @call_params)
25
- method_name, params = decode_rpc_call(obj)
26
- (0..(@call_signature.length-1)).each do |i|
27
- params[i] = @marshaler.unmarshal(params[i]).value
28
- end
29
- assert_equal(method_name, 'DecodeMe')
30
- assert_equal(@call_params[0..3], params[0..3])
31
- assert_equal(@call_params[5].name, params[5]['name'])
32
- assert_equal(@call_params[5].version, params[5]['version'])
33
- end
34
- end