summaryrefslogtreecommitdiff
path: root/lib/task.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/task.rb')
-rw-r--r--lib/task.rb37
1 files changed, 13 insertions, 24 deletions
diff --git a/lib/task.rb b/lib/task.rb
index 3a52dee..0562dc7 100644
--- a/lib/task.rb
+++ b/lib/task.rb
@@ -15,13 +15,11 @@ module OpenTox
pid = fork do
begin
result_uri = yield
- if URI.accessible?(result_uri)
- task.completed result_uri
- else
- not_found_error "\"#{result_uri}\" is not a valid result URI"
- end
+ task.completed result_uri
rescue
- task.error $!
+ RestClientWrapper.put(File.join(task.uri,'Error'),{:errorReport => $!.report.to_yaml})
+ task.kill
+ #raise $!
end
end
Process.detach(pid)
@@ -49,11 +47,13 @@ module OpenTox
end
def description
- metadata[RDF::DC.description]
+ pull
+ self.[](RDF::DC.description).uniq.first
end
def creator
- metadata[RDF::DC.creator]
+ pull
+ self.[](RDF::DC.creator).uniq.first
end
def cancel
@@ -66,16 +66,6 @@ module OpenTox
RestClientWrapper.put(File.join(@uri,'Completed'),{:resultURI => uri})
end
- def error error
- # TODO: switch task service to rdf
- #RestClientWrapper.put(File.join(@uri,'Error'),{:errorReport => error.report.to_rdfxml})
- # create report for non-runtime errors
- error.respond_to?(:reporti) ? report = error.report : report = OpenTox::ErrorReport.create(error)
- RestClientWrapper.put(File.join(@uri,'Error'),{:errorReport => report.to_yaml})
- kill
- raise error
- end
-
# waits for a task, unless time exceeds or state is no longer running
# @param [optional,Numeric] dur seconds pausing before checking again for completion
def wait(dur=0.3)
@@ -114,12 +104,11 @@ module OpenTox
res = RestClientWrapper.put(File.join(@uri,method.sub(/=/,'')),{})
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
- if response.empty?
- not_found_error "No #{method} metadata for #{@uri} "
- end
- return response
+ pull
+ response = self.[](RDF::OT[method])
+ response = self.[](RDF::OT1[method]) if response.empty? # API 1.1 compatibility
+ internal_server_error "No #{method} metadata for #{@uri} " if response.empty?
+ return response.uniq.first.to_s
end
rescue OpenTox::Error
raise $!