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,5 +1,5 @@
1
+ ENV["RAILS_ENV"] = "test"
1
2
  $:.unshift(File.dirname(__FILE__) + '/../lib')
2
- $:.unshift(File.dirname(__FILE__) + '/../lib/action_web_service/vendor')
3
3
 
4
4
  require 'test/unit'
5
5
  require 'action_web_service'
data/test/api_test.rb CHANGED
@@ -35,13 +35,20 @@ class TC_API < Test::Unit::TestCase
35
35
  end
36
36
 
37
37
  def test_signature_canonicalization
38
- assert_equal({:expects=>nil, :returns=>nil}, API.api_methods[:void])
39
- assert_equal({:expects=>[String], :returns=>[String]}, API.api_methods[:expects_and_returns])
40
- assert_equal({:expects=>[Integer, TrueClass], :returns=>nil}, API.api_methods[:expects])
41
- assert_equal({:expects=>nil, :returns=>[Integer, [String]]}, API.api_methods[:returns])
42
- assert_equal({:expects=>[{:appkey=>Integer}, {:publish=>TrueClass}], :returns=>nil}, API.api_methods[:named_signature])
43
- assert_equal({:expects=>[Integer, String, TrueClass], :returns=>nil}, API.api_methods[:string_types])
44
- assert_equal({:expects=>[TrueClass, Integer, String], :returns=>nil}, API.api_methods[:class_types])
38
+ assert_equal(nil, API.api_methods[:void].expects)
39
+ assert_equal(nil, API.api_methods[:void].returns)
40
+ assert_equal([String], API.api_methods[:expects_and_returns].expects.map{|x| x.type_class})
41
+ assert_equal([String], API.api_methods[:expects_and_returns].returns.map{|x| x.type_class})
42
+ assert_equal([Integer, TrueClass], API.api_methods[:expects].expects.map{|x| x.type_class})
43
+ assert_equal(nil, API.api_methods[:expects].returns)
44
+ assert_equal(nil, API.api_methods[:returns].expects)
45
+ assert_equal([Integer, [String]], API.api_methods[:returns].returns.map{|x| x.array?? [x.element_type.type_class] : x.type_class})
46
+ assert_equal([[:appkey, Integer], [:publish, TrueClass]], API.api_methods[:named_signature].expects.map{|x| [x.name, x.type_class]})
47
+ assert_equal(nil, API.api_methods[:named_signature].returns)
48
+ assert_equal([Integer, String, TrueClass], API.api_methods[:string_types].expects.map{|x| x.type_class})
49
+ assert_equal(nil, API.api_methods[:string_types].returns)
50
+ assert_equal([TrueClass, Integer, String], API.api_methods[:class_types].expects.map{|x| x.type_class})
51
+ assert_equal(nil, API.api_methods[:class_types].returns)
45
52
  end
46
53
 
47
54
  def test_not_instantiable
@@ -66,4 +73,30 @@ class TC_API < Test::Unit::TestCase
66
73
  end
67
74
  end
68
75
  end
76
+
77
+ def test_parameter_names
78
+ method = API.api_methods[:named_signature]
79
+ assert_equal 0, method.expects_index_of(:appkey)
80
+ assert_equal 1, method.expects_index_of(:publish)
81
+ assert_equal 1, method.expects_index_of('publish')
82
+ assert_equal 0, method.expects_index_of('appkey')
83
+ assert_equal -1, method.expects_index_of('blah')
84
+ assert_equal -1, method.expects_index_of(:missing)
85
+ assert_equal -1, API.api_methods[:void].expects_index_of('test')
86
+ end
87
+
88
+ def test_parameter_hash
89
+ method = API.api_methods[:named_signature]
90
+ hash = method.expects_to_hash([5, false])
91
+ assert_equal({:appkey => 5, :publish => false}, hash)
92
+ end
93
+
94
+ def test_api_methods_compat
95
+ sig = API.api_methods[:named_signature][:expects]
96
+ assert_equal [{:appkey=>Integer}, {:publish=>TrueClass}], sig
97
+ end
98
+
99
+ def test_to_s
100
+ assert_equal 'void Expects(int param0, bool param1)', APITest::API.api_methods[:expects].to_s
101
+ end
69
102
  end
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ module CastingTest
4
+ class API < ActionWebService::API::Base
5
+ api_method :int, :expects => [:int]
6
+ api_method :str, :expects => [:string]
7
+ api_method :bool, :expects => [:bool]
8
+ api_method :float, :expects => [:float]
9
+ api_method :time, :expects => [:time]
10
+ api_method :datetime, :expects => [:datetime]
11
+ api_method :date, :expects => [:date]
12
+
13
+ api_method :int_array, :expects => [[:int]]
14
+ api_method :str_array, :expects => [[:string]]
15
+ api_method :bool_array, :expects => [[:bool]]
16
+ end
17
+ end
18
+
19
+ class TC_Casting < Test::Unit::TestCase
20
+ include CastingTest
21
+
22
+ def test_base_type_casting_valid
23
+ assert_equal 10000, cast_expects(:int, '10000')[0]
24
+ assert_equal '10000', cast_expects(:str, 10000)[0]
25
+ [1, '1', 'true', 'y', 'yes'].each do |val|
26
+ assert_equal true, cast_expects(:bool, val)[0]
27
+ end
28
+ [0, '0', 'false', 'n', 'no'].each do |val|
29
+ assert_equal false, cast_expects(:bool, val)[0]
30
+ end
31
+ assert_equal 3.14159, cast_expects(:float, '3.14159')[0]
32
+ now = Time.at(Time.now.tv_sec)
33
+ casted = cast_expects(:time, now.to_s)[0]
34
+ assert_equal now, casted
35
+ now = DateTime.now
36
+ assert_equal now.to_s, cast_expects(:datetime, now.to_s)[0].to_s
37
+ today = Date.today
38
+ assert_equal today, cast_expects(:date, today.to_s)[0]
39
+ end
40
+
41
+ def test_base_type_casting_invalid
42
+ assert_raises ArgumentError do
43
+ cast_expects(:int, 'this is not a number')
44
+ end
45
+ assert_raises ActionWebService::Casting::CastingError do
46
+ # neither true or false ;)
47
+ cast_expects(:bool, 'i always lie')
48
+ end
49
+ assert_raises ArgumentError do
50
+ cast_expects(:float, 'not a float')
51
+ end
52
+ assert_raises ArgumentError do
53
+ cast_expects(:time, '111111111111111111111111111111111')
54
+ end
55
+ assert_raises ArgumentError do
56
+ cast_expects(:datetime, '-1')
57
+ end
58
+ assert_raises ArgumentError do
59
+ cast_expects(:date, '')
60
+ end
61
+ end
62
+
63
+ def test_array_type_casting
64
+ assert_equal [1, 2, 3213992, 4], cast_expects(:int_array, ['1', '2', '3213992', '4'])[0]
65
+ assert_equal ['one', 'two', '5.0', '200', '', 'true'], cast_expects(:str_array, [:one, 'two', 5.0, 200, nil, true])[0]
66
+ assert_equal [true, false, true, true, false], cast_expects(:bool_array, ['1', nil, 'y', true, 'false'])[0]
67
+ end
68
+
69
+ def test_array_type_casting_failure
70
+ assert_raises ActionWebService::Casting::CastingError do
71
+ cast_expects(:bool_array, ['false', 'blahblah'])
72
+ end
73
+ assert_raises ArgumentError do
74
+ cast_expects(:int_array, ['1', '2.021', '4'])
75
+ end
76
+ end
77
+
78
+ private
79
+ def cast_expects(method_name, *args)
80
+ API.api_method_instance(method_name.to_sym).cast_expects([*args])
81
+ end
82
+ end
@@ -66,6 +66,9 @@ class TC_ClientSoap < Test::Unit::TestCase
66
66
  assert(@container.value_normal.nil?)
67
67
  assert_equal(5, @client.normal(5, 6))
68
68
  assert_equal([5, 6], @container.value_normal)
69
+ assert_equal(5, @client.normal("7", "8"))
70
+ assert_equal([7, 8], @container.value_normal)
71
+ assert_equal(5, @client.normal(true, false))
69
72
  end
70
73
 
71
74
  def test_array_return
@@ -15,6 +15,7 @@ module ClientXmlRpcTest
15
15
  @controller.process(test_request, response)
16
16
  res.header['content-type'] = 'text/xml'
17
17
  res.body = response.body
18
+ # puts res.body
18
19
  rescue Exception => e
19
20
  $stderr.puts e.message
20
21
  $stderr.puts e.backtrace.join("\n")
@@ -60,6 +61,9 @@ class TC_ClientXmlRpc < Test::Unit::TestCase
60
61
  assert(@container.value_normal.nil?)
61
62
  assert_equal(5, @client.normal(5, 6))
62
63
  assert_equal([5, 6], @container.value_normal)
64
+ assert_equal(5, @client.normal("7", "8"))
65
+ assert_equal([7, 8], @container.value_normal)
66
+ assert_equal(5, @client.normal(true, false))
63
67
  end
64
68
 
65
69
  def test_array_return
@@ -97,7 +101,7 @@ class TC_ClientXmlRpc < Test::Unit::TestCase
97
101
  end
98
102
 
99
103
  def test_invalid_signature
100
- assert_raises(ActionWebService::Client::ClientError) do
104
+ assert_raises(ArgumentError) do
101
105
  @client.normal
102
106
  end
103
107
  end
@@ -23,11 +23,11 @@ class TC_DispatcherActionControllerSoap < Test::Unit::TestCase
23
23
  include DispatcherCommonTests
24
24
 
25
25
  def setup
26
- @encoder = WS::Encoding::SoapRpcEncoding.new 'urn:ActionWebService'
27
- @marshaler = WS::Marshaling::SoapMarshaler.new 'urn:ActionWebService'
28
26
  @direct_controller = DirectController.new
29
27
  @delegated_controller = DelegatedController.new
30
28
  @virtual_controller = VirtualController.new
29
+ @layered_controller = LayeredController.new
30
+ @protocol = ActionWebService::Protocol::Soap::SoapProtocol.new
31
31
  end
32
32
 
33
33
  def test_wsdl_generation
@@ -60,6 +60,13 @@ class TC_DispatcherActionControllerSoap < Test::Unit::TestCase
60
60
  assert(BrokenAutoLoadController.web_service_api.nil?)
61
61
  end
62
62
 
63
+ def test_layered_dispatching
64
+ mt_cats = do_method_call(@layered_controller, 'mt.getCategories')
65
+ assert_equal(["mtCat1", "mtCat2"], mt_cats)
66
+ blogger_cats = do_method_call(@layered_controller, 'blogger.getCategories')
67
+ assert_equal(["bloggerCat1", "bloggerCat2"], blogger_cats)
68
+ end
69
+
63
70
  protected
64
71
  def exception_message(soap_fault_exception)
65
72
  soap_fault_exception.detail.cause.message
@@ -70,16 +77,6 @@ class TC_DispatcherActionControllerSoap < Test::Unit::TestCase
70
77
  obj.detail.cause.is_a?(Exception)
71
78
  end
72
79
 
73
- def create_ap_request(container, body, public_method_name, *args)
74
- test_request = ActionController::TestRequest.new
75
- test_request.request_parameters['action'] = service_name(container)
76
- test_request.env['REQUEST_METHOD'] = "POST"
77
- test_request.env['HTTP_CONTENT_TYPE'] = 'text/xml'
78
- test_request.env['HTTP_SOAPACTION'] = "/soap/#{service_name(container)}/#{public_method_name}"
79
- test_request.env['RAW_POST_DATA'] = body
80
- test_request
81
- end
82
-
83
80
  def service_name(container)
84
81
  container.is_a?(DelegatedController) ? 'test_service' : 'api'
85
82
  end
@@ -5,8 +5,7 @@ class TC_DispatcherActionControllerXmlRpc < Test::Unit::TestCase
5
5
  include DispatcherCommonTests
6
6
 
7
7
  def setup
8
- @encoder = WS::Encoding::XmlRpcEncoding.new
9
- @marshaler = WS::Marshaling::XmlRpcMarshaler.new
8
+ @protocol = ActionWebService::Protocol::XmlRpc::XmlRpcProtocol.new
10
9
  @direct_controller = DirectController.new
11
10
  @delegated_controller = DelegatedController.new
12
11
  @layered_controller = LayeredController.new
@@ -29,15 +28,6 @@ class TC_DispatcherActionControllerXmlRpc < Test::Unit::TestCase
29
28
  obj.is_a?(XMLRPC::FaultException)
30
29
  end
31
30
 
32
- def create_ap_request(container, body, public_method_name, *args)
33
- test_request = ActionController::TestRequest.new
34
- test_request.request_parameters['action'] = service_name(container)
35
- test_request.env['REQUEST_METHOD'] = "POST"
36
- test_request.env['HTTP_CONTENT_TYPE'] = 'text/xml'
37
- test_request.env['RAW_POST_DATA'] = body
38
- test_request
39
- end
40
-
41
31
  def service_name(container)
42
32
  container.is_a?(DelegatedController) ? 'test_service' : 'api'
43
33
  end
data/test/run CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'test/unit'
3
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
3
4
  args = Dir[File.join(File.dirname(__FILE__), '*_test.rb')] + Dir[File.join(File.dirname(__FILE__), 'ws/*_test.rb')]
4
5
  (r = Test::Unit::AutoRunner.new(true)).process_args(args)
5
6
  exit r.run
@@ -0,0 +1,67 @@
1
+ require File.dirname(__FILE__) + '/abstract_unit'
2
+
3
+ ActionController::Routing::Routes.draw do |map|
4
+ map.connect '', :controller => 'scaffolded'
5
+ end
6
+
7
+ class ScaffoldPerson < ActionWebService::Struct
8
+ member :id, :int
9
+ member :name, :string
10
+
11
+ def ==(other)
12
+ self.id == other.id && self.name == other.name
13
+ end
14
+ end
15
+
16
+ class ScaffoldedControllerTestAPI < ActionWebService::API::Base
17
+ api_method :hello, :expects => [{:integer=>:int}, :string], :returns => [:bool]
18
+ api_method :bye, :returns => [[ScaffoldPerson]]
19
+ end
20
+
21
+ class ScaffoldedController < ActionController::Base
22
+ web_service_api ScaffoldedControllerTestAPI
23
+ web_service_scaffold :scaffold_invoke
24
+
25
+ def hello(int, string)
26
+ 0
27
+ end
28
+
29
+ def bye
30
+ [ScaffoldPerson.new(:id => 1, :name => "leon"), ScaffoldPerson.new(:id => 2, :name => "paul")]
31
+ end
32
+
33
+ def rescue_action(e)
34
+ raise e
35
+ end
36
+ end
37
+
38
+ class ScaffoldedControllerTest < Test::Unit::TestCase
39
+ def setup
40
+ @controller = ScaffoldedController.new
41
+ @request = ActionController::TestRequest.new
42
+ @response = ActionController::TestResponse.new
43
+ end
44
+
45
+ def test_scaffold_invoke
46
+ get :scaffold_invoke
47
+ assert_rendered_file 'methods.rhtml'
48
+ end
49
+
50
+ def test_scaffold_invoke_method_params
51
+ get :scaffold_invoke_method_params, :service => 'scaffolded', :method => 'Hello'
52
+ assert_rendered_file 'parameters.rhtml'
53
+ end
54
+
55
+ def test_scaffold_invoke_submit_hello
56
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'Hello', :method_params => ['5', 'hello world']
57
+ assert_rendered_file 'result.rhtml'
58
+ assert_equal false, @controller.instance_eval{ @method_return_value }
59
+ end
60
+
61
+ def test_scaffold_invoke_submit_bye
62
+ post :scaffold_invoke_submit, :service => 'scaffolded', :method => 'Bye'
63
+ assert_rendered_file 'result.rhtml'
64
+ persons = [ScaffoldPerson.new(:id => 1, :name => "leon"), ScaffoldPerson.new(:id => 2, :name => "paul")]
65
+ assert_equal persons, @controller.instance_eval{ @method_return_value }
66
+ end
67
+ end
data/test/struct_test.rb CHANGED
@@ -11,30 +11,42 @@ module StructTest
11
11
  end
12
12
 
13
13
  class TC_Struct < Test::Unit::TestCase
14
+ include StructTest
15
+
16
+ def setup
17
+ @struct = Struct.new(:id => 5,
18
+ :name => 'hello',
19
+ :items => ['one', 'two'],
20
+ :deleted => true,
21
+ :emails => ['test@test.com'])
22
+ end
23
+
14
24
  def test_members
15
- assert_equal(5, StructTest::Struct.members.size)
16
- assert_equal(Integer, StructTest::Struct.members[:id])
17
- assert_equal(String, StructTest::Struct.members[:name])
18
- assert_equal([String], StructTest::Struct.members[:items])
19
- assert_equal(TrueClass, StructTest::Struct.members[:deleted])
20
- assert_equal([String], StructTest::Struct.members[:emails])
25
+ assert_equal(5, Struct.members.size)
26
+ assert_equal(Integer, Struct.members[:id].type_class)
27
+ assert_equal(String, Struct.members[:name].type_class)
28
+ assert_equal(String, Struct.members[:items].element_type.type_class)
29
+ assert_equal(TrueClass, Struct.members[:deleted].type_class)
30
+ assert_equal(String, Struct.members[:emails].element_type.type_class)
21
31
  end
22
32
 
23
33
  def test_initializer_and_lookup
24
- s = StructTest::Struct.new(:id => 5,
25
- :name => 'hello',
26
- :items => ['one', 'two'],
27
- :deleted => true,
28
- :emails => ['test@test.com'])
29
- assert_equal(5, s.id)
30
- assert_equal('hello', s.name)
31
- assert_equal(['one', 'two'], s.items)
32
- assert_equal(true, s.deleted)
33
- assert_equal(['test@test.com'], s.emails)
34
- assert_equal(5, s['id'])
35
- assert_equal('hello', s['name'])
36
- assert_equal(['one', 'two'], s['items'])
37
- assert_equal(true, s['deleted'])
38
- assert_equal(['test@test.com'], s['emails'])
34
+ assert_equal(5, @struct.id)
35
+ assert_equal('hello', @struct.name)
36
+ assert_equal(['one', 'two'], @struct.items)
37
+ assert_equal(true, @struct.deleted)
38
+ assert_equal(['test@test.com'], @struct.emails)
39
+ assert_equal(5, @struct['id'])
40
+ assert_equal('hello', @struct['name'])
41
+ assert_equal(['one', 'two'], @struct['items'])
42
+ assert_equal(true, @struct['deleted'])
43
+ assert_equal(['test@test.com'], @struct['emails'])
44
+ end
45
+
46
+ def test_each_pair
47
+ @struct.each_pair do |name, value|
48
+ assert_equal @struct.__send__(name), value
49
+ assert_equal @struct[name], value
50
+ end
39
51
  end
40
52
  end
@@ -65,7 +65,7 @@ class TestInvokeTest < Test::Unit::TestCase
65
65
  end
66
66
 
67
67
  def test_layered_add
68
- @protocol = :xmlrpc
68
+ @protocol = ActionWebService::Protocol::XmlRpc::XmlRpcProtocol.new
69
69
  @controller = TestInvokeLayeredController.new
70
70
  [:one, :two].each do |service|
71
71
  assert_equal nil, @controller.web_service_object(service).invoked
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.8
3
3
  specification_version: 1
4
4
  name: actionwebservice
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.6.2
7
- date: 2005-03-27
6
+ version: 0.7.0
7
+ date: 2005-04-19
8
8
  summary: Web service support for Action Pack.
9
9
  require_paths:
10
10
  - lib
@@ -55,9 +55,9 @@ files:
55
55
  - examples/metaWeblog/controllers/xmlrpc_controller.rb
56
56
  - lib/action_web_service
57
57
  - lib/action_web_service.rb
58
- - lib/action_web_service/api
59
58
  - lib/action_web_service/api.rb
60
59
  - lib/action_web_service/base.rb
60
+ - lib/action_web_service/casting.rb
61
61
  - lib/action_web_service/client
62
62
  - lib/action_web_service/client.rb
63
63
  - lib/action_web_service/container
@@ -67,11 +67,11 @@ files:
67
67
  - lib/action_web_service/invocation.rb
68
68
  - lib/action_web_service/protocol
69
69
  - lib/action_web_service/protocol.rb
70
+ - lib/action_web_service/scaffolding.rb
70
71
  - lib/action_web_service/struct.rb
71
72
  - lib/action_web_service/support
73
+ - lib/action_web_service/templates
72
74
  - lib/action_web_service/test_invoke.rb
73
- - lib/action_web_service/vendor
74
- - lib/action_web_service/api/base.rb
75
75
  - lib/action_web_service/client/base.rb
76
76
  - lib/action_web_service/client/soap_client.rb
77
77
  - lib/action_web_service/client/xmlrpc_client.rb
@@ -82,29 +82,24 @@ files:
82
82
  - lib/action_web_service/dispatcher/action_controller_dispatcher.rb
83
83
  - lib/action_web_service/protocol/abstract.rb
84
84
  - lib/action_web_service/protocol/discovery.rb
85
+ - lib/action_web_service/protocol/soap_protocol
85
86
  - lib/action_web_service/protocol/soap_protocol.rb
86
87
  - lib/action_web_service/protocol/xmlrpc_protocol.rb
88
+ - lib/action_web_service/protocol/soap_protocol/marshaler.rb
87
89
  - lib/action_web_service/support/class_inheritable_options.rb
88
- - lib/action_web_service/vendor/ws
89
- - lib/action_web_service/vendor/ws.rb
90
- - lib/action_web_service/vendor/ws/common.rb
91
- - lib/action_web_service/vendor/ws/encoding
92
- - lib/action_web_service/vendor/ws/encoding.rb
93
- - lib/action_web_service/vendor/ws/marshaling
94
- - lib/action_web_service/vendor/ws/marshaling.rb
95
- - lib/action_web_service/vendor/ws/types.rb
96
- - lib/action_web_service/vendor/ws/encoding/abstract.rb
97
- - lib/action_web_service/vendor/ws/encoding/soap_rpc_encoding.rb
98
- - lib/action_web_service/vendor/ws/encoding/xmlrpc_encoding.rb
99
- - lib/action_web_service/vendor/ws/marshaling/abstract.rb
100
- - lib/action_web_service/vendor/ws/marshaling/soap_marshaling.rb
101
- - lib/action_web_service/vendor/ws/marshaling/xmlrpc_marshaling.rb
90
+ - lib/action_web_service/support/signature_types.rb
91
+ - lib/action_web_service/templates/scaffolds
92
+ - lib/action_web_service/templates/scaffolds/layout.rhtml
93
+ - lib/action_web_service/templates/scaffolds/methods.rhtml
94
+ - lib/action_web_service/templates/scaffolds/parameters.rhtml
95
+ - lib/action_web_service/templates/scaffolds/result.rhtml
102
96
  - test/abstract_client.rb
103
97
  - test/abstract_dispatcher.rb
104
98
  - test/abstract_unit.rb
105
99
  - test/api_test.rb
106
100
  - test/apis
107
101
  - test/base_test.rb
102
+ - test/casting_test.rb
108
103
  - test/client_soap_test.rb
109
104
  - test/client_xmlrpc_test.rb
110
105
  - test/container_test.rb
@@ -113,19 +108,11 @@ files:
113
108
  - test/gencov
114
109
  - test/invocation_test.rb
115
110
  - test/run
111
+ - test/scaffolded_controller_test.rb
116
112
  - test/struct_test.rb
117
113
  - test/test_invoke_test.rb
118
- - test/ws
119
114
  - test/apis/auto_load_api.rb
120
115
  - test/apis/broken_auto_load_api.rb
121
- - test/ws/abstract_encoding.rb
122
- - test/ws/abstract_unit.rb
123
- - test/ws/gencov
124
- - test/ws/run
125
- - test/ws/soap_marshaling_test.rb
126
- - test/ws/soap_rpc_encoding_test.rb
127
- - test/ws/types_test.rb
128
- - test/ws/xmlrpc_encoding_test.rb
129
116
  test_files: []
130
117
  rdoc_options: []
131
118
  extra_rdoc_files: []
@@ -142,7 +129,7 @@ dependencies:
142
129
  -
143
130
  - "="
144
131
  - !ruby/object:Gem::Version
145
- version: 1.7.0
132
+ version: 1.8.0
146
133
  version:
147
134
  - !ruby/object:Gem::Dependency
148
135
  name: activerecord
@@ -152,7 +139,7 @@ dependencies:
152
139
  -
153
140
  - "="
154
141
  - !ruby/object:Gem::Version
155
- version: 1.9.1
142
+ version: 1.10.0
156
143
  version:
157
144
  - !ruby/object:Gem::Dependency
158
145
  name: activesupport
@@ -162,5 +149,5 @@ dependencies:
162
149
  -
163
150
  - "="
164
151
  - !ruby/object:Gem::Version
165
- version: 1.0.3
152
+ version: 1.0.4
166
153
  version: