Do not use naming convention on controller path. It prevents from mixing public and private actions on the same controller.
return description;
}
- public boolean isApi() {
- return path.startsWith("api/");
- }
-
@CheckForNull
public String since() {
return since;
private final String key;
private String description, since;
private boolean post = false;
+ private boolean isPrivate = false;
private RequestHandler handler;
private NewAction(String key) {
return this;
}
+ public NewAction setPrivate(boolean b) {
+ this.isPrivate = b;
+ return this;
+ }
+
public NewAction setHandler(RequestHandler h) {
this.handler = h;
return this;
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) {
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);
}
return post;
}
+ public boolean isPrivate() {
+ return isPrivate;
+ }
+
public RequestHandler handler() {
return handler;
}
.setDescription("Create metric")
.setSince("4.1")
.setPost(true)
+ .setPrivate(true)
.setHandler(new RequestHandler() {
@Override
public void handle(Request request, Response response) {
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();
// 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();
// 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
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);
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");
assertThat(index.handler()).isNotNull();
assertThat(index.since()).isEqualTo("4.2");
assertThat(index.isPost()).isFalse();
+ assertThat(index.isPrivate()).isFalse();
}
@Test