From 6f26b4e5265c3f46343a90e0c7c722d32637c9c0 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 20 Jan 2014 16:57:35 +0100 Subject: [PATCH] SONAR-5010 refactor WebService#isApi() to isPrivate() Do not use naming convention on controller path. It prevents from mixing public and private actions on the same controller. --- .../org/sonar/api/server/ws/WebService.java | 17 ++++++++++++----- .../org/sonar/api/server/ws/WebServiceTest.java | 17 +++-------------- .../org/sonar/server/ws/ListingWebService.java | 3 ++- .../sonar/server/ws/ListingWebServiceTest.java | 2 +- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java index 94758d46d77..518eae3bf6c 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java @@ -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; } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/WebServiceTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/WebServiceTest.java index d962f6b4779..fad7b75a105 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/WebServiceTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/server/ws/WebServiceTest.java @@ -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 diff --git a/sonar-server/src/main/java/org/sonar/server/ws/ListingWebService.java b/sonar-server/src/main/java/org/sonar/server/ws/ListingWebService.java index 407d1dcc762..b1ffa0a1bd7 100644 --- a/sonar-server/src/main/java/org/sonar/server/ws/ListingWebService.java +++ b/sonar-server/src/main/java/org/sonar/server/ws/ListingWebService.java @@ -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); diff --git a/sonar-server/src/test/java/org/sonar/server/ws/ListingWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/ws/ListingWebServiceTest.java index 915f2edca5d..41aebdbf0b7 100644 --- a/sonar-server/src/test/java/org/sonar/server/ws/ListingWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/ws/ListingWebServiceTest.java @@ -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 -- 2.39.5