AWS XML-RPC FaultException


#1

Hi,
I needed to create a fault message in a XML-RPC ws. The only tip I’ve
found says to raise a FaultException giving the faultCode and the
faultString. But testing with the scaffold I get:
NoMethodError in UserController#invoke_submit

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.collect

Here’s the api implementation:

class UserController < ApplicationController
wsdl_service_name ‘User’
web_service_scaffold :invoke
def create(email, password, first_name, last_name, phone)

if first_name == "admin"
  raise XMLRPC::FaultException.new(3, "admin is not allowed...")
else
  return 0
end

end
end

In the development log looks like the raised exeption correctly builds
the answer:
Web Service Response: => #<XMLRPC::FaultException:
XMLRPC::FaultException>

<?xml version="1.0" ?>faultCode3faultStringadmin

is not
allowed…
Sending data

but then something happens and I have no clue.
Thanks,
Enrico

ps
this is the complete development log file:

Processing UserController#invoke_submit (for 127.0.0.1 at 2007-02-14
00:21:13) [POST]
Session ID: bf63f47951b57e90f2b11afaedb1d08a
Parameters: {“commit”=>“Invoke”, “protocol”=>“xmlrpc”,
“service”=>“user”, “action”=>“invoke_submit”, “method”=>“Create”,
“controller”=>“user”, “method_params”=>{“0”=>“a”, “1”=>“a”,
“2”=>“admin”, “3”=>“a”, “4”=>“a”}}

Web Service Request: Create(email=>“a”, password=>“a”,
first_name=>“admin”, last_name=>“a”, phone=>“a”) Entrypoint:
invoke_submit

<?xml version="1.0" ?>Createaaadminaa

XMLRPC::FaultException (admin is not allowed…):
.//app/controllers/user_controller.rb:8:in create' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/invocation.rb:141:inperform_invocation_without_interception’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/invocation.rb:135:in
perform_invocation' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/abstract.rb:42:inweb_service_filtered_invoke’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/abstract.rb:33:in
web_service_direct_invoke_without_controller' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/action_controller_dispatcher.rb:109:inweb_service_direct_invoke’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/abstract.rb:54:in
web_service_invoke' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/abstract.rb:21:ininvoke_web_service_request’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/action_controller_dispatcher.rb:55:in
dispatch_web_service_request' /usr/local/lib/ruby/1.8/benchmark.rb:293:inmeasure’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/dispatcher/action_controller_dispatcher.rb:53:in
dispatch_web_service_request' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/scaffolding.rb:83:ininvoke_submit’
/usr/local/lib/ruby/1.8/benchmark.rb:293:in measure' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/scaffolding.rb:67:ininvoke_submit’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:1095:in
perform_action_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:632:incall_filter’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:619:in
perform_action_without_benchmark' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:inperform_action_without_rescue’
/usr/local/lib/ruby/1.8/benchmark.rb:293:in measure' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:inperform_action_without_rescue’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:83:in
perform_action' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:430:inprocess_without_filters’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:624:in
process_without_session_management_support' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/session_management.rb:114:inprocess’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:330:in
process' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/dispatcher.rb:41:indispatch’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:113:in
handle_dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:79:inservice’
/usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:in service' /usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:inrun’
/usr/local/lib/ruby/1.8/webrick/server.rb:173:in start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:162:instart_thread’
/usr/local/lib/ruby/1.8/webrick/server.rb:95:in start' /usr/local/lib/ruby/1.8/webrick/server.rb:92:instart’
/usr/local/lib/ruby/1.8/webrick/server.rb:23:in start' /usr/local/lib/ruby/1.8/webrick/server.rb:82:instart’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:63:in
dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/servers/webrick.rb:59 /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in
require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:innew_constants_in’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in
require' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/server.rb:39 /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in
require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:innew_constants_in’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:in
`require’
script/server:3

Web Service Response: => #<XMLRPC::FaultException:
XMLRPC::FaultException>

<?xml version="1.0" ?>faultCode3faultStringadmin

is not
allowed…
Sending data

NoMethodError (You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.collect):
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:139:in
clean_backtrace' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:43:inlog_error’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/deprecation.rb:43:in
silence' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:37:inlog_error’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:25:in
rescue_action' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/scaffolding.rb:158:inhandle_invocation_exception’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/scaffolding.rb:86:in
invoke_submit' /usr/local/lib/ruby/1.8/benchmark.rb:293:inmeasure’
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.2.1/lib/action_web_service/scaffolding.rb:67:in
invoke_submit' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:1095:inperform_action_without_filters’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:632:in
call_filter' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:619:inperform_action_without_benchmark’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:in
perform_action_without_rescue' /usr/local/lib/ruby/1.8/benchmark.rb:293:inmeasure’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/benchmarking.rb:66:in
perform_action_without_rescue' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/rescue.rb:83:inperform_action’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:430:in
process_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/filters.rb:624:inprocess_without_session_management_support’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/session_management.rb:114:in
process' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/base.rb:330:inprocess’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/dispatcher.rb:41:in
dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:113:inhandle_dispatch’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:79:in
service' /usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:inservice’
/usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:in run' /usr/local/lib/ruby/1.8/webrick/server.rb:173:instart_thread’
/usr/local/lib/ruby/1.8/webrick/server.rb:162:in start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:95:instart’
/usr/local/lib/ruby/1.8/webrick/server.rb:92:in start' /usr/local/lib/ruby/1.8/webrick/server.rb:23:instart’
/usr/local/lib/ruby/1.8/webrick/server.rb:82:in start' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/webrick_server.rb:63:indispatch’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/servers/webrick.rb:59
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:in
new_constants_in' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/server.rb:39
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:343:in
new_constants_in' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/dependencies.rb:496:inrequire’
script/server:3

Rendering
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/templates/rescues/layout.rhtml
(500 Internal Error)


“Complete independence does not mean arrogant isolation or a superior
disdain for all help.”
-Mahatma Gandhi