]> source.dussan.org Git - sonarqube.git/commitdiff
Fix quality flaw in quality gate web services
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 16 Apr 2015 22:25:01 +0000 (00:25 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 17 Apr 2015 16:19:44 +0000 (18:19 +0200)
18 files changed:
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/BaseQGateWsAction.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesAppAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesCopyAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesCreateAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesCreateConditionAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesDeleteConditionAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesDeselectAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesDestroyAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesListAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesRenameAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesSearchAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesSelectAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesSetAsDefaultAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesShowAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesUnsetDefaultAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesUpdateConditionAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/QGatesWs.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/package-info.java

diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/BaseQGateWsAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/BaseQGateWsAction.java
new file mode 100644 (file)
index 0000000..73f69fa
--- /dev/null
@@ -0,0 +1,8 @@
+package org.sonar.server.qualitygate.ws;
+
+import org.sonar.server.ws.WsAction;
+
+public interface BaseQGateWsAction extends WsAction {
+
+  // Marker interface
+}
index 2e9b6b594ff7f3e10fe13c620e940ab8296ae3ad..825a7e22308959ccf6b6bd9ac2d93a22ad051c35 100644 (file)
@@ -23,7 +23,6 @@ import org.apache.commons.lang.BooleanUtils;
 import org.sonar.api.i18n.I18n;
 import org.sonar.api.measures.Metric;
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
@@ -32,7 +31,7 @@ import org.sonar.server.qualitygate.QualityGates;
 
 import java.util.Locale;
 
-public class QGatesAppAction implements RequestHandler {
+public class QGatesAppAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -46,7 +45,8 @@ public class QGatesAppAction implements RequestHandler {
     this.i18n = i18n;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     controller.createAction("app")
       .setInternal(true)
       .setDescription("Get initialization items for the admin UI. For internal use")
@@ -69,7 +69,7 @@ public class QGatesAppAction implements RequestHandler {
 
   private void addPeriods(JsonWriter writer) {
     writer.name("periods").beginArray();
-    for (int i=0; i < 3; i ++) {
+    for (int i = 0; i < 3; i++) {
       writer.beginObject().prop("key", (long) i + 1).prop("text", periods.label(i + 1)).endObject();
     }
     addProjectPeriod(4, writer);
@@ -80,12 +80,12 @@ public class QGatesAppAction implements RequestHandler {
   private void addProjectPeriod(int periodIndex, JsonWriter writer) {
     writer.beginObject().prop("key", periodIndex).prop("text",
       i18n.message(Locale.getDefault(), "quality_gates.project_period", "Period " + periodIndex, periodIndex)
-    ).endObject();
+      ).endObject();
   }
 
   private void addMetrics(JsonWriter writer) {
     writer.name("metrics").beginArray();
-    for (Metric metric: qualityGates.gateMetrics()) {
+    for (Metric metric : qualityGates.gateMetrics()) {
       writer.beginObject()
         .prop("id", metric.getId())
         .prop("key", metric.getKey())
@@ -93,10 +93,9 @@ public class QGatesAppAction implements RequestHandler {
         .prop("type", metric.getType().toString())
         .prop("domain", metric.getDomain())
         .prop("hidden", BooleanUtils.isNotFalse(metric.isHidden()))
-      .endObject();
+        .endObject();
     }
     writer.endArray();
   }
 
-
 }
index bef3d32a92bb5fcaa3b1710a1472b6240bb4b361..237513b2edbc95c853dddd54ced3088f266b4294 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.core.qualitygate.db.QualityGateDto;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesCopyAction implements RequestHandler {
+public class QGatesCopyAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -36,7 +35,8 @@ public class QGatesCopyAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("copy")
       .setDescription("Copy a Quality Gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
index c21e433c51f8c00b52ddf18b7c70810806efe0ec..c9c15aa0ffed527c72514cb890711efcabd69992 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.core.qualitygate.db.QualityGateDto;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesCreateAction implements RequestHandler {
+public class QGatesCreateAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -36,7 +35,8 @@ public class QGatesCreateAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("create")
       .setDescription("Create a Quality Gate. Require Administer Quality Profiles and Gates permission")
       .setSince("4.3")
index 053df9013421e2f77147768ba8da7e66c079671e..46bb19693f886022b5d5f5ff12f98cc656c1a63b 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesCreateConditionAction implements RequestHandler {
+public class QGatesCreateConditionAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesCreateConditionAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction createCondition = controller.createAction("create_condition")
       .setDescription("Add a new condition to a quality gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
@@ -60,8 +60,8 @@ public class QGatesCreateConditionAction implements RequestHandler {
         request.param(QGatesWs.PARAM_WARNING),
         request.param(QGatesWs.PARAM_ERROR),
         request.paramAsInt(QGatesWs.PARAM_PERIOD)
-      ), response.newJsonWriter()
-    ).close();
+        ), response.newJsonWriter()
+      ).close();
   }
 
 }
index ae806fde47f12fe5b9cce83cf9aaaaa24837cea3..79e5cbf6c957ac0fb87d3750e214ad9a88963e90 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesDeleteConditionAction implements RequestHandler {
+public class QGatesDeleteConditionAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesDeleteConditionAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction createCondition = controller.createAction("delete_condition")
       .setDescription("Delete a condition from a quality gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
index 436d87c4d15143cbf395b5c3d522fc4d22452113..24f3946612cba5c42eb58a6dfe33f2c769335672 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesDeselectAction implements RequestHandler {
+public class QGatesDeselectAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesDeselectAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("deselect")
       .setDescription("Remove the association of a project from a quality gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
index c67029ddc776fc0d9d353a3e77049788a82665f9..d48762807c7d99391badf22874b3a533f863d1d2 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesDestroyAction implements RequestHandler {
+public class QGatesDestroyAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesDestroyAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("destroy")
       .setDescription("Delete a Quality Gate. Require Administer Quality Profiles and Gates permission")
       .setSince("4.3")
index 98c95e70e34d7137eb9bb93669b5d7acc2bdb191..8d28a4bc5f29230dd2e2b70b94643c28017d2f07 100644 (file)
@@ -22,14 +22,13 @@ package org.sonar.server.qualitygate.ws;
 
 import com.google.common.io.Resources;
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.core.qualitygate.db.QualityGateDto;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesListAction implements RequestHandler {
+public class QGatesListAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -37,7 +36,8 @@ public class QGatesListAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     controller.createAction("list")
       .setDescription("Get a list of quality gates")
       .setSince("4.3")
index d0c0905fd7f29102e05c939ee4cf8869307b3603..a091fc252a6c5b1dcf72233df05c9c37e5b71274 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.core.qualitygate.db.QualityGateDto;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesRenameAction implements RequestHandler {
+public class QGatesRenameAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -36,7 +35,8 @@ public class QGatesRenameAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("rename")
       .setDescription("Rename a Quality Gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
index 35d1768348fdb6c832ee34060488c734b565f4a1..be456a36f8bce31c7274ea76f0c65702a3624b86 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.qualitygate.ws;
 
 import com.google.common.io.Resources;
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
@@ -30,7 +29,7 @@ import org.sonar.core.qualitygate.db.ProjectQgateAssociation;
 import org.sonar.core.qualitygate.db.ProjectQgateAssociationQuery;
 import org.sonar.server.qualitygate.QgateProjectFinder;
 
-public class QGatesSearchAction implements RequestHandler {
+public class QGatesSearchAction implements BaseQGateWsAction {
 
   private final QgateProjectFinder projectFinder;
 
@@ -38,7 +37,8 @@ public class QGatesSearchAction implements RequestHandler {
     this.projectFinder = projectFinder;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("search")
       .setDescription("Search for projects associated (or not) to a quality gate")
       .setSince("4.3")
index 678934b7cbe83cf216143f09893f2afb3a1dc601..27d0da8a1c995b91100ce1fb68a7b274934dc2ca 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesSelectAction implements RequestHandler {
+public class QGatesSelectAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesSelectAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("select")
       .setDescription("Associate a project to a quality gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
index 2d8b3b2785c3d75b071c9bb9b946079d0e21a0b7..3d60abb07dcb6c59c30f504bc2363e1e186f813c 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesSetAsDefaultAction implements RequestHandler {
+public class QGatesSetAsDefaultAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesSetAsDefaultAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("set_as_default")
       .setDescription("Set a quality gate as the default quality gate. Require Administer Quality Profiles and Gates permission")
       .setSince("4.3")
index 816589ed0a3ffa2cbad9e3b1ef49825767282709..18bdee9ecab80af80998d69c4e1e3f0ebd02c3b1 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.qualitygate.ws;
 
 import com.google.common.io.Resources;
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
@@ -35,7 +34,7 @@ import javax.annotation.Nullable;
 
 import java.util.Collection;
 
-public class QGatesShowAction implements RequestHandler {
+public class QGatesShowAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -43,7 +42,8 @@ public class QGatesShowAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("show")
       .setDescription("Display the details of a quality gate")
       .setSince("4.3")
index d796efcbeab711ce7b636c8ca93abe331b05e170..e497c3db78df64ae781c0f2628d1ba14a7331645 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesUnsetDefaultAction implements RequestHandler {
+public class QGatesUnsetDefaultAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesUnsetDefaultAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("unset_default")
       .setDescription("Unset a quality gate as the default quality gate. Require Administer Quality Profiles and Gates permission")
       .setSince("4.3")
index f9222d7f9ee3572c0c2f0b7797d629fb5c84ef6e..090d00eca3e57e5a9c70c6886dcda4004820bdc3 100644 (file)
 package org.sonar.server.qualitygate.ws;
 
 import org.sonar.api.server.ws.Request;
-import org.sonar.api.server.ws.RequestHandler;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.server.qualitygate.QualityGates;
 
-public class QGatesUpdateConditionAction implements RequestHandler {
+public class QGatesUpdateConditionAction implements BaseQGateWsAction {
 
   private final QualityGates qualityGates;
 
@@ -34,7 +33,8 @@ public class QGatesUpdateConditionAction implements RequestHandler {
     this.qualityGates = qualityGates;
   }
 
-  void define(WebService.NewController controller) {
+  @Override
+  public void define(WebService.NewController controller) {
     WebService.NewAction createCondition = controller.createAction("update_condition")
       .setDescription("Update a condition attached to a quality gate. Require Administer Quality Profiles and Gates permission")
       .setPost(true)
@@ -60,8 +60,8 @@ public class QGatesUpdateConditionAction implements RequestHandler {
         request.param(QGatesWs.PARAM_WARNING),
         request.param(QGatesWs.PARAM_ERROR),
         request.paramAsInt(QGatesWs.PARAM_PERIOD)
-      ), response.newJsonWriter()
-    ).close();
+        ), response.newJsonWriter()
+      ).close();
   }
 
 }
index 9ced94a130c3faab63e39bcba90cbcb0c40c57f4..3a47200d124d9c423cd78e4a803e321ae3597110 100644 (file)
@@ -42,46 +42,10 @@ public class QGatesWs implements WebService {
   static final String PARAM_PROJECT_ID = "projectId";
   static final String PARAM_ID = "id";
 
-  private final QGatesListAction listAction;
-  private final QGatesShowAction showAction;
-  private final QGatesSearchAction searchAction;
-
-  private final QGatesCreateAction createAction;
-  private final QGatesCopyAction copyAction;
-  private final QGatesSetAsDefaultAction setAsDefaultAction;
-  private final QGatesUnsetDefaultAction unsetAction;
-  private final QGatesDestroyAction destroyAction;
-  private final QGatesRenameAction renameAction;
-
-  private final QGatesCreateConditionAction createConditionAction;
-  private final QGatesUpdateConditionAction updateConditionAction;
-  private final QGatesDeleteConditionAction deleteConditionAction;
-
-  private final QGatesSelectAction selectAction;
-  private final QGatesDeselectAction deselectAction;
-
-  private final QGatesAppAction appAction;
-
-  public QGatesWs(QGatesListAction listAction, QGatesShowAction showAction, QGatesSearchAction searchAction,
-                  QGatesCreateAction createAction, QGatesCopyAction copyAction, QGatesDestroyAction destroyAction, QGatesRenameAction renameAction,
-                  QGatesSetAsDefaultAction setAsDefaultAction, QGatesUnsetDefaultAction unsetAction,
-                  QGatesCreateConditionAction createConditionAction, QGatesUpdateConditionAction updateConditionAction, QGatesDeleteConditionAction deleteConditionAction,
-                  QGatesSelectAction selectAction, QGatesDeselectAction deselectAction, QGatesAppAction appAction) {
-    this.listAction = listAction;
-    this.showAction = showAction;
-    this.searchAction = searchAction;
-    this.createAction = createAction;
-    this.destroyAction = destroyAction;
-    this.renameAction = renameAction;
-    this.unsetAction = unsetAction;
-    this.createConditionAction = createConditionAction;
-    this.updateConditionAction = updateConditionAction;
-    this.deleteConditionAction = deleteConditionAction;
-    this.selectAction = selectAction;
-    this.deselectAction = deselectAction;
-    this.copyAction = copyAction;
-    this.setAsDefaultAction = setAsDefaultAction;
-    this.appAction = appAction;
+  private final BaseQGateWsAction[] actions;
+
+  public QGatesWs(BaseQGateWsAction... actions) {
+    this.actions = actions;
   }
 
   @Override
@@ -90,25 +54,9 @@ public class QGatesWs implements WebService {
       .setSince("4.3")
       .setDescription("This service manages quality gates, including conditions and project association");
 
-    listAction.define(controller);
-    showAction.define(controller);
-    searchAction.define(controller);
-
-    createAction.define(controller);
-    renameAction.define(controller);
-    copyAction.define(controller);
-    destroyAction.define(controller);
-    setAsDefaultAction.define(controller);
-    unsetAction.define(controller);
-
-    createConditionAction.define(controller);
-    updateConditionAction.define(controller);
-    deleteConditionAction.define(controller);
-
-    selectAction.define(controller);
-    deselectAction.define(controller);
-
-    appAction.define(controller);
+    for (BaseQGateWsAction action : actions) {
+      action.define(controller);
+    }
 
     controller.done();
   }
index 516341842a7f77b5da32a48161e07f9ce01c3798..510db16190812d08791fc2f9e2ced9227d05afe7 100644 (file)
@@ -21,3 +21,4 @@
 package org.sonar.server.qualitygate.ws;
 
 import javax.annotation.ParametersAreNonnullByDefault;
+