summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2012-03-02 19:04:02 +0000
committerChristoph Helma <helma@in-silico.ch>2012-03-02 19:04:02 +0000
commita5f8c658ba87a00950766182966b65c65d5e2b66 (patch)
treef9dc0407178fa4a0c9a2c5a0de2add0b6883da55 /lib
parent53fe462b9c310bc84df50d058500772b7f3cbc3c (diff)
additional OpenTox errors, *_error methods in rest-client-wrapper
Diffstat (limited to 'lib')
-rw-r--r--lib/error.rb14
-rw-r--r--lib/rest-client-wrapper.rb10
-rw-r--r--lib/task.rb12
3 files changed, 21 insertions, 15 deletions
diff --git a/lib/error.rb b/lib/error.rb
index 8368404..29f4234 100644
--- a/lib/error.rb
+++ b/lib/error.rb
@@ -19,20 +19,28 @@ module OpenTox
end
end
- # create error classes dynamically
+ # OpenTox errors
{
"BadRequestError" => 400,
"NotAuthorizedError" => 401,
"NotFoundError" => 404,
"ServiceUnavailableError" => 503,
"TimeOutError" => 504,
+ "LockedError" => 423,
+ "NotImplementedError" => 501,
}.each do |klass,code|
+ # create error classes
c = Class.new Error do
define_method :initialize do |message|
super code, message
end
end
OpenTox.const_set klass,c
+
+ # define global methods for raising errors, eg. bad_request_error
+ Object.send(:define_method, klass.underscore.to_sym) do |message|
+ raise c.new message
+ end
end
# Errors received from RestClientWrapper calls
@@ -88,7 +96,7 @@ module OpenTox
# define to_ and self.from_ methods for various rdf formats
[:rdfxml,:ntriples].each do |format|
- define_singleton_method ("from_#{format}").to_sym do |rdf|
+ define_singleton_method "from_#{format}".to_sym do |rdf|
report = ErrorReport.new
RDF::Reader.for(format).new(rdf) do |reader|
reader.each_statement{ |statement| report.rdf << statement }
@@ -96,7 +104,7 @@ module OpenTox
report
end
- send :define_method, ("to_#{format}").to_sym do
+ send :define_method, "to_#{format}".to_sym do
rdfxml = RDF::Writer.for(format).buffer do |writer|
@rdf.each{|statement| writer << statement}
end
diff --git a/lib/rest-client-wrapper.rb b/lib/rest-client-wrapper.rb
index 17e1cd0..64c7d7e 100644
--- a/lib/rest-client-wrapper.rb
+++ b/lib/rest-client-wrapper.rb
@@ -28,14 +28,14 @@ module OpenTox
@request = RestClient::Request.new(args)
# check input
- raise OpenTox::BadRequestError.new "Invalid URI: '#{uri}'" unless URI.valid? uri
- raise OpenTox::BadRequestError.new "Unreachable URI: '#{uri}'" unless URI.accessible? uri
- raise OpenTox::BadRequestError.new "Headers are not a hash: #{headers.inspect}" unless headers==nil or headers.is_a?(Hash)
+ bad_request_error "Invalid URI: '#{uri}'" unless URI.valid? uri
+ bad_request_error "Unreachable URI: '#{uri}'" unless URI.accessible? uri
+ bad_request_error "Headers are not a hash: #{headers.inspect}" unless headers==nil or headers.is_a?(Hash)
# make sure that no header parameters are set in the payload
[:accept,:content_type,:subjectid].each do |header|
- raise OpenTox::BadRequestError.new "#{header} should be submitted in the headers" if payload and payload.is_a?(Hash) and payload[header]
+ bad_request_error "#{header} should be submitted in the headers" if payload and payload.is_a?(Hash) and payload[header]
end
- raise OpenTox::BadRequestError.new "waiting_task is not 'nil', OpenTox::SubTask or OpenTox::Task: #{waiting_task.class}" unless waiting_task.nil? or waiting_task.is_a?(OpenTox::Task) or waiting_task.is_a?(OpenTox::SubTask)
+ bad_request_error "waiting_task is not 'nil', OpenTox::SubTask or OpenTox::Task: #{waiting_task.class}" unless waiting_task.nil? or waiting_task.is_a?(OpenTox::Task) or waiting_task.is_a?(OpenTox::SubTask)
begin
diff --git a/lib/task.rb b/lib/task.rb
index f75f87d..d7ad539 100644
--- a/lib/task.rb
+++ b/lib/task.rb
@@ -17,8 +17,7 @@ module OpenTox
if URI.accessible?(result_uri)
task.completed result_uri
else
- raise NotFoundError.new "\"#{result_uri}\" is not a valid result URI"
- #task.error OpenTox::RestError.new :http_code => 404, :cause => "#{result_uri} is not a valid URI", :actor => params[:creator]
+ not_found_error "\"#{result_uri}\" is not a valid result URI"
end
rescue
task.error $!
@@ -62,8 +61,7 @@ module OpenTox
end
def completed(uri)
- #error OpenTox::RestError.new :http_code => 404, :cause => "\"#{uri}\" does not exist.", :actor => creator unless URI.accessible? uri
- raise NotFoundError.new "Result URI \"#{uri}\" does not exist." unless URI.accessible? uri
+ not_found_error "Result URI \"#{uri}\" does not exist." unless URI.accessible? uri
RestClientWrapper.put(File.join(@uri,'Completed'),{:resultURI => uri})
end
@@ -83,7 +81,7 @@ module OpenTox
due_to_time = Time.new + DEFAULT_TASK_MAX_DURATION
while running?
sleep dur
- raise TimeOutError.new "max wait time exceeded ("+DEFAULT_TASK_MAX_DURATION.to_s+"sec), task: '"+@uri.to_s+"'" if (Time.new > due_to_time)
+ time_out_error "max wait time exceeded ("+DEFAULT_TASK_MAX_DURATION.to_s+"sec), task: '"+@uri.to_s+"'" if (Time.new > due_to_time)
end
end
@@ -116,9 +114,9 @@ module OpenTox
super unless res.code == 200
else
response = metadata[RDF::OT[method]].to_s
- response = metadata[RDF::OT1[method]].to_s #if response.empty? # API 1.1 compatibility
+ response = metadata[RDF::OT1[method]].to_s if response.empty? # API 1.1 compatibility
if response.empty?
- raise NotFoundError.new "No #{method} metadata for #{@uri} "
+ not_found_error "No #{method} metadata for #{@uri} "
end
return response
end