From f6465c322aac301e7b7ca545e351f39fa6df70ad Mon Sep 17 00:00:00 2001 From: João M. M. da Silva + Paulo Meirelles Date: Tue, 14 Aug 2012 17:53:57 -0300 Subject: [PATCH] [Mezuro] refactoring Handling Exceptions --- plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb | 10 +++++++++- plugins/mezuro/lib/kalibro/configuration.rb | 18 +++--------------- plugins/mezuro/lib/kalibro/error.rb | 4 ---- plugins/mezuro/lib/kalibro/metric_configuration.rb | 6 +++++- plugins/mezuro/lib/kalibro/model.rb | 1 + plugins/mezuro/lib/kalibro/project.rb | 26 +++++++++++++++++++------- plugins/mezuro/test/unit/kalibro/configuration_test.rb | 4 +++- 7 files changed, 40 insertions(+), 29 deletions(-) diff --git a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb index 291a4a8..976c081 100644 --- a/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb +++ b/plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb @@ -1,7 +1,15 @@ class MezuroPluginProfileController < ProfileController append_view_path File.join(File.dirname(__FILE__) + '/../views') - + + rescue_from Exception do |exception| + message = URI.escape(CGI.escape(exception.message),'.') + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" + end + + def error_page + end + def project_state @content = profile.articles.find(params[:id]) project = @content.project diff --git a/plugins/mezuro/lib/kalibro/configuration.rb b/plugins/mezuro/lib/kalibro/configuration.rb index 2b72369..e3deff6 100644 --- a/plugins/mezuro/lib/kalibro/configuration.rb +++ b/plugins/mezuro/lib/kalibro/configuration.rb @@ -7,11 +7,7 @@ class Kalibro::Configuration < Kalibro::Model end def metric_configurations - if @metric_configuration != nil - @metric_configuration - else - [] - end + @metric_configuration.nil? ? [] : @metric_configuration end def metric_configurations=(metric_configurations) @@ -19,19 +15,11 @@ class Kalibro::Configuration < Kalibro::Model end def self.find_by_name(configuration_name) - begin - new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration] - rescue Exception - nil - end + new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration] end def self.all_names - begin - request("Configuration", :get_configuration_names)[:configuration_name] - rescue Exception - [] - end + request("Configuration", :get_configuration_names)[:configuration_name] end def update_attributes(attributes={}) diff --git a/plugins/mezuro/lib/kalibro/error.rb b/plugins/mezuro/lib/kalibro/error.rb index 2768b3d..3c7f95c 100644 --- a/plugins/mezuro/lib/kalibro/error.rb +++ b/plugins/mezuro/lib/kalibro/error.rb @@ -2,10 +2,6 @@ class Kalibro::Error < Kalibro::Model attr_accessor :error_class, :message, :stack_trace_element, :cause - def initialize(exception) - @message = exception.message - end - def stack_trace_element=(value) @stack_trace_element = Kalibro::StackTraceElement.to_objects_array value end diff --git a/plugins/mezuro/lib/kalibro/metric_configuration.rb b/plugins/mezuro/lib/kalibro/metric_configuration.rb index 6c1857d..cd76d93 100644 --- a/plugins/mezuro/lib/kalibro/metric_configuration.rb +++ b/plugins/mezuro/lib/kalibro/metric_configuration.rb @@ -49,10 +49,14 @@ class Kalibro::MetricConfiguration < Kalibro::Model end def destroy - self.class.request("MetricConfiguration", :remove_metric_configuration, { + begin + self.class.request("MetricConfiguration", :remove_metric_configuration, { :configuration_name => configuration_name, :metric_name=> metric.name }) + rescue Exception => exception + add_error exception + end end def to_hash diff --git a/plugins/mezuro/lib/kalibro/model.rb b/plugins/mezuro/lib/kalibro/model.rb index b48ebc1..630dabe 100644 --- a/plugins/mezuro/lib/kalibro/model.rb +++ b/plugins/mezuro/lib/kalibro/model.rb @@ -10,6 +10,7 @@ class Kalibro::Model def to_hash(options={}) hash = Hash.new excepts = !options[:except].nil? ? options[:except] : [] + excepts << :errors fields.each do |field| if(!excepts.include?(field)) field_value = send(field) diff --git a/plugins/mezuro/lib/kalibro/project.rb b/plugins/mezuro/lib/kalibro/project.rb index 5eef9a6..2d3a1a2 100644 --- a/plugins/mezuro/lib/kalibro/project.rb +++ b/plugins/mezuro/lib/kalibro/project.rb @@ -19,19 +19,31 @@ class Kalibro::Project < Kalibro::Model end def process_project(days = '0') - if days.to_i.zero? - self.class.request("Kalibro", :process_project, {:project_name => name}) - else - self.class.request("Kalibro", :process_periodically, {:project_name => name, :period_in_days => days}) - end + begin + if days.to_i.zero? + self.class.request("Kalibro", :process_project, {:project_name => name}) + else + self.class.request("Kalibro", :process_periodically, {:project_name => name, :period_in_days => days}) + end + rescue Exception => exception + add_error exception + end end def process_period - self.class.request("Kalibro", :get_process_period, {:project_name => name})[:period] + begin + self.class.request("Kalibro", :get_process_period, {:project_name => name})[:period] + rescue Exception => exception + add_error exception + end end def cancel_periodic_process - self.class.request("Kalibro", :cancel_periodic_process, {:project_name => name}) + begin + self.class.request("Kalibro", :cancel_periodic_process, {:project_name => name}) + rescue Exception => exception + add_error exception + end end end diff --git a/plugins/mezuro/test/unit/kalibro/configuration_test.rb b/plugins/mezuro/test/unit/kalibro/configuration_test.rb index 15f9074..72625aa 100644 --- a/plugins/mezuro/test/unit/kalibro/configuration_test.rb +++ b/plugins/mezuro/test/unit/kalibro/configuration_test.rb @@ -44,7 +44,9 @@ class ConfigurationTest < ActiveSupport::TestCase should 'return nil when configuration doesnt exist' do request_body = {:configuration_name => @configuration.name} Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, request_body).raises(Exception.new) - assert_nil Kalibro::Configuration.find_by_name(@configuration.name) + assert_raise Exception do + Kalibro::Configuration.find_by_name(@configuration.name) + end end should 'destroy configuration by name' do -- libgit2 0.21.2