]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3755 slight refactoring
authorSimon Brandhof <simon.brandhof@gmail.com>
Fri, 17 May 2013 05:44:31 +0000 (07:44 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Fri, 17 May 2013 05:44:31 +0000 (07:44 +0200)
sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java
sonar-server/src/main/java/org/sonar/server/issue/Result.java
sonar-server/src/main/webapp/WEB-INF/app/controllers/action_plans_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/controllers/api/action_plans_controller.rb

index ed12f8599911de06820b2919e7739f23228db92e..8a7c2ae3dc3ce9c97c30464cc9657f61746f2461 100644 (file)
@@ -142,7 +142,7 @@ public class InternalRubyIssueService implements ServerComponent {
 
     Result<ActionPlan> result = createActionPlanResult(parameters);
     if (result.ok()) {
-      result.setObject(actionPlanService.create(result.get()));
+      result.set(actionPlanService.create(result.get()));
     }
     return result;
   }
@@ -152,7 +152,7 @@ public class InternalRubyIssueService implements ServerComponent {
 
     DefaultActionPlan existingActionPlan = (DefaultActionPlan) actionPlanService.findByKey(key);
     if (existingActionPlan == null) {
-      Result<ActionPlan> result = new Result<ActionPlan>();
+      Result<ActionPlan> result = Result.of();
       result.addError("issues_action_plans.errors.action_plan_does_not_exists", key);
       return result;
     } else {
@@ -161,7 +161,7 @@ public class InternalRubyIssueService implements ServerComponent {
         DefaultActionPlan actionPlan = (DefaultActionPlan) result.get();
         actionPlan.setKey(existingActionPlan.key());
         actionPlan.setUserLogin(existingActionPlan.userLogin());
-        result.setObject(actionPlanService.update(actionPlan));
+        result.set(actionPlanService.update(actionPlan));
       }
       return result;
     }
@@ -171,7 +171,7 @@ public class InternalRubyIssueService implements ServerComponent {
     // TODO verify authorization
     Result<ActionPlan> result = createResultForExistingActionPlan(actionPlanKey);
     if (result.ok()) {
-      result.setObject(actionPlanService.setStatus(actionPlanKey, ActionPlan.STATUS_CLOSED));
+      result.set(actionPlanService.setStatus(actionPlanKey, ActionPlan.STATUS_CLOSED));
     }
     return result;
   }
@@ -180,7 +180,7 @@ public class InternalRubyIssueService implements ServerComponent {
     // TODO verify authorization
     Result<ActionPlan> result = createResultForExistingActionPlan(actionPlanKey);
     if (result.ok()) {
-      result.setObject(actionPlanService.setStatus(actionPlanKey, ActionPlan.STATUS_OPEN));
+      result.set(actionPlanService.setStatus(actionPlanKey, ActionPlan.STATUS_OPEN));
     }
     return result;
   }
@@ -201,7 +201,7 @@ public class InternalRubyIssueService implements ServerComponent {
 
   @VisibleForTesting
   Result<ActionPlan> createActionPlanResult(Map<String, String> parameters, @Nullable String oldName) {
-    Result<ActionPlan> result = new Result<ActionPlan>();
+    Result<ActionPlan> result = Result.of();
 
     String name = parameters.get("name");
     String description = parameters.get("description");
@@ -253,13 +253,13 @@ public class InternalRubyIssueService implements ServerComponent {
         .setDescription(description)
         .setUserLogin(UserSession.get().login())
         .setDeadLine(deadLine);
-      result.setObject(actionPlan);
+      result.set(actionPlan);
     }
     return result;
   }
 
   private Result<ActionPlan> createResultForExistingActionPlan(String actionPlanKey) {
-    Result<ActionPlan> result = new Result<ActionPlan>();
+    Result<ActionPlan> result = Result.of();
     if (findActionPlan(actionPlanKey) == null) {
       result.addError("issues_action_plans.errors.action_plan_does_not_exists", actionPlanKey);
     }
index e8a51948f911b93a6faa75401cf46279b06369dc..587114e8b3a85ea410259159b68aace00e2515a4 100644 (file)
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
-
 package org.sonar.server.issue;
 
+import javax.annotation.Nullable;
 import java.util.Arrays;
 import java.util.List;
 
 import static com.google.common.collect.Lists.newArrayList;
 
+/**
+ * @since 3.6
+ */
 public class Result<T> {
 
-  private T object;
-  private List<Message> errors;
+  private T object = null;
+  private List<Message> errors = newArrayList();
+  ;
+
+  private Result(@Nullable T object) {
+    this.object = object;
+  }
 
-  public Result() {
-    errors = newArrayList();
+  public static <T> Result<T> of(@Nullable T t) {
+    return new Result<T>(t);
   }
 
-  public Result(T object) {
-    this();
-    this.object = object;
+  public static <T> Result<T> of() {
+    return new Result<T>(null);
   }
 
-  public void setObject(T object){
+  public Result<T> set(@Nullable T object) {
     this.object = object;
+    return this;
   }
 
   public T get() {
     return object;
   }
 
-  public void addError(String text, Object... params){
+  public Result<T> addError(String text, Object... params) {
     Message message = new Message(text, params);
     errors.add(message);
+    return this;
   }
 
-  public List<Message> errors(){
+  public List<Message> errors() {
     return errors;
   }
 
-  public boolean ok(){
+  public boolean ok() {
     return errors.isEmpty();
   }
 
index 1ded3b557544917124fb1eda16b206b41565fbc1..557c4eabdb083341d405ecfdf337a5e1c587184c 100644 (file)
@@ -22,7 +22,6 @@ class ActionPlansController < ApplicationController
 
   SECTION=Navigation::SECTION_RESOURCE
   before_filter :load_resource
-  verify :method => :post, :only => [:save, :delete, :change_status], :redirect_to => {:action => :index}
 
   def index
     load_action_plans()
@@ -35,7 +34,8 @@ class ActionPlansController < ApplicationController
   end
 
   def save
-    @action_plan = ActionPlan.find params[:plan_id] unless params[:plan_id].blank?
+    verify_post_request
+    @action_plan = ActionPlan.find params[:plan_id] if params[:plan_id].present?
     unless @action_plan
       @action_plan = ActionPlan.new(
           :kee => Java::JavaUtil::UUID.randomUUID().toString(),
@@ -72,12 +72,14 @@ class ActionPlansController < ApplicationController
   end
 
   def delete
+    verify_post_request
     action_plan = ActionPlan.find params[:plan_id]
     action_plan.destroy
     redirect_to :action => 'index', :id => @resource.id
   end
 
   def change_status
+    verify_post_request
     action_plan = ActionPlan.find params[:plan_id]
     if action_plan
       action_plan.status = action_plan.open? ? ActionPlan::STATUS_CLOSED : ActionPlan::STATUS_OPEN
index bb8ed4d0afd271aa6062ddae22fc7fc67fb54e69..e0c67868374283ba172795b13db8fc0ade754ead 100644 (file)
@@ -20,8 +20,6 @@
 
 class Api::ActionPlansController < Api::ApiController
 
-  before_filter :admin_required, :only => [ :create, :delete, :update, :close, :open ]
-
   #
   # GET /api/action_plans/search?project=<project>
   #
@@ -44,8 +42,8 @@ class Api::ActionPlansController < Api::ApiController
   # POST /api/action_plans/create
   #
   # -- Mandatory parameters
-  # 'name' is the action plan name
-  # 'project' is the project key to link the action plan to
+  # 'name' is the name of the action plan
+  # 'project' is the key of the project to link the action plan to
   #
   # -- Optional parameters
   # 'description' is the plain-text description
@@ -56,6 +54,7 @@ class Api::ActionPlansController < Api::ApiController
   #
   def create
     verify_post_request
+    access_denied unless has_role?(:admin)
     require_parameters :project, :name
 
     result = Internal.issues.createActionPlan(params)
@@ -78,6 +77,7 @@ class Api::ActionPlansController < Api::ApiController
   #
   def delete
     verify_post_request
+    access_denied unless has_role?(:admin)
     require_parameters :key
 
     result = Internal.issues.deleteActionPlan(params[:key])
@@ -102,6 +102,7 @@ class Api::ActionPlansController < Api::ApiController
   #
   def update
     verify_post_request
+    access_denied unless has_role?(:admin)
     require_parameters :key
 
     result = Internal.issues.updateActionPlan(params[:key], params)
@@ -124,6 +125,7 @@ class Api::ActionPlansController < Api::ApiController
   #
   def close
     verify_post_request
+    access_denied unless has_role?(:admin)
     require_parameters :key
 
     result = Internal.issues.closeActionPlan(params[:key])
@@ -146,6 +148,7 @@ class Api::ActionPlansController < Api::ApiController
   #
   def open
     verify_post_request
+    access_denied unless has_role?(:admin)
     require_parameters :key
 
     result = Internal.issues.openActionPlan(params[:key])