actionwebservice 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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: