]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5010 refactor WebService#isApi() to isPrivate()
authorSimon Brandhof <simon.brandhof@gmail.com>
Mon, 20 Jan 2014 15:57:35 +0000 (16:57 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Mon, 20 Jan 2014 15:57:35 +0000 (16:57 +0100)
Do not use naming convention on controller path. It prevents from mixing public and private actions on the same controller.

sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java
sonar-plugin-api/src/test/java/org/sonar/api/server/ws/WebServiceTest.java
sonar-server/src/main/java/org/sonar/server/ws/ListingWebService.java
sonar-server/src/test/java/org/sonar/server/ws/ListingWebServiceTest.java

index 94758d46d77a4b1bf3c6121f7427bceafbd1bcff..518eae3bf6ca8ee47cda60c1ec31d0e7ee341332 100644 (file)
@@ -131,10 +131,6 @@ public interface WebService extends ServerExtension {
       return description;
     }
 
-    public boolean isApi() {
-      return path.startsWith("api/");
-    }
-
     @CheckForNull
     public String since() {
       return since;
@@ -155,6 +151,7 @@ public interface WebService extends ServerExtension {
     private final String key;
     private String description, since;
     private boolean post = false;
+    private boolean isPrivate = false;
     private RequestHandler handler;
 
     private NewAction(String key) {
@@ -176,6 +173,11 @@ public interface WebService extends ServerExtension {
       return this;
     }
 
+    public NewAction setPrivate(boolean b) {
+      this.isPrivate = b;
+      return this;
+    }
+
     public NewAction setHandler(RequestHandler h) {
       this.handler = h;
       return this;
@@ -184,7 +186,7 @@ public interface WebService extends ServerExtension {
 
   class Action {
     private final String key, path, description, since;
-    private final boolean post;
+    private final boolean post, isPrivate;
     private final RequestHandler handler;
 
     private Action(Controller controller, NewAction newAction) {
@@ -193,6 +195,7 @@ public interface WebService extends ServerExtension {
       this.description = newAction.description;
       this.since = StringUtils.defaultIfBlank(newAction.since, controller.since);
       this.post = newAction.post;
+      this.isPrivate = newAction.isPrivate;
       if (newAction.handler == null) {
         throw new IllegalStateException("RequestHandler is not set on action " + path);
       }
@@ -224,6 +227,10 @@ public interface WebService extends ServerExtension {
       return post;
     }
 
+    public boolean isPrivate() {
+      return isPrivate;
+    }
+
     public RequestHandler handler() {
       return handler;
     }
index d962f6b47790cd8e40e3a28dc228eab8c70e5379..fad7b75a10555c42d07eb5632c2bc5bd719c3d9f 100644 (file)
@@ -46,6 +46,7 @@ public class WebServiceTest {
         .setDescription("Create metric")
         .setSince("4.1")
         .setPost(true)
+        .setPrivate(true)
         .setHandler(new RequestHandler() {
           @Override
           public void handle(Request request, Response response) {
@@ -84,7 +85,6 @@ public class WebServiceTest {
     assertThat(controller.path()).isEqualTo("api/metric");
     assertThat(controller.description()).isEqualTo("Metrics");
     assertThat(controller.since()).isEqualTo("3.2");
-    assertThat(controller.isApi()).isTrue();
     assertThat(controller.actions()).hasSize(2);
     WebService.Action showAction = controller.action("show");
     assertThat(showAction).isNotNull();
@@ -94,6 +94,7 @@ public class WebServiceTest {
     // same as controller
     assertThat(showAction.since()).isEqualTo("3.2");
     assertThat(showAction.isPost()).isFalse();
+    assertThat(showAction.isPrivate()).isFalse();
     assertThat(showAction.path()).isEqualTo("api/metric/show");
     WebService.Action createAction = controller.action("create");
     assertThat(createAction).isNotNull();
@@ -102,19 +103,7 @@ public class WebServiceTest {
     // overrides controller version
     assertThat(createAction.since()).isEqualTo("4.1");
     assertThat(createAction.isPost()).isTrue();
-  }
-
-  @Test
-  public void non_api_ws() {
-    new WebService() {
-      @Override
-      public void define(Context context) {
-        NewController controller = context.newController("rule");
-        controller.newAction("index").setHandler(mock(RequestHandler.class));
-        controller.done();
-      }
-    }.define(context);
-    assertThat(context.controller("rule").isApi()).isFalse();
+    assertThat(createAction.isPrivate()).isTrue();
   }
 
   @Test
index 407d1dcc7628228df7e9a804e4e53ee955f2732c..b1ffa0a1bd7d8cd8b7a36d4a83ed7322516799a6 100644 (file)
@@ -40,7 +40,8 @@ public class ListingWebService implements WebService {
     NewController controller = context.newController("api/webservices")
       .setDescription("List web services")
       .setSince("4.2");
-    controller.newAction("index").setHandler(new RequestHandler() {
+    controller.newAction("index")
+      .setHandler(new RequestHandler() {
       @Override
       public void handle(Request request, Response response) {
         list(context.controllers(), response);
index 915f2edca5d0eb4189868b7c0efedce0f724dd7a..41aebdbf0b79b21ae00a2c70a2c82a5358775422 100644 (file)
@@ -37,7 +37,6 @@ public class ListingWebServiceTest {
     assertThat(controller.path()).isEqualTo("api/webservices");
     assertThat(controller.description()).isNotEmpty();
     assertThat(controller.since()).isEqualTo("4.2");
-    assertThat(controller.isApi()).isTrue();
     assertThat(controller.actions()).hasSize(1);
 
     WebService.Action index = controller.action("index");
@@ -46,6 +45,7 @@ public class ListingWebServiceTest {
     assertThat(index.handler()).isNotNull();
     assertThat(index.since()).isEqualTo("4.2");
     assertThat(index.isPost()).isFalse();
+    assertThat(index.isPrivate()).isFalse();
   }
 
   @Test