}
public ComponentDto getProjectByUuidOrKey(DbSession dbSession, @Nullable String projectUuid, @Nullable String projectKey) {
- ComponentDto project = getByUuidOrKey(dbSession, projectUuid, projectKey);
+ ComponentDto project;
+ if (projectUuid != null) {
+ project = getIfPresentOrFail(dbClient.componentDao().selectByUuid(dbSession, projectUuid), String.format("Project id '%s' not found", projectUuid));
+ } else {
+ project = getIfPresentOrFail(dbClient.componentDao().selectByKey(dbSession, projectKey), String.format("Project key '%s' not found", projectKey));
+ }
checkIsProjectOrModule(project);
return project;
public void define(WebService.NewController context) {
WebService.NewAction action = context.createAction(ACTION)
.setDescription("Add permission to a group.<br /> " +
- "If the project id is provided, a project permission is created.<br />" +
+ "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
"The group name or group id must be provided. <br />" +
- "Requires 'Administer System' permission.")
+ "It requires administration permissions to access.")
.setSince("5.2")
.setPost(true)
.setHandler(this);
public void define(WebService.NewController context) {
WebService.NewAction action = context.createAction(ACTION)
.setDescription("Add permission to a user.<br /> " +
- "If the project id or project key is provided, a project permission is created.<br />" +
- "Requires 'Administer System' permission.")
+ "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br />" +
+ "It requires administration permissions to access.")
.setSince("5.2")
.setPost(true)
.setHandler(this);
private void checkPermissionParameter() {
if (_hasProject) {
if (!ComponentPermissions.ALL.contains(_permission)) {
- throw new BadRequestException(String.format("Value of parameter '%s' (%s) for project permissions must be one of %s.", PARAM_PERMISSION, _permission,
- PROJECT_PERMISSIONS_ONE_LINE));
+ throw new BadRequestException(String.format("The '%s' parameter for project permissions must be one of %s. '%s' was passed.", PARAM_PERMISSION,
+ PROJECT_PERMISSIONS_ONE_LINE, _permission));
}
} else if (!GlobalPermissions.ALL.contains(_permission)) {
- throw new BadRequestException(String.format("Value of parameter '%s' (%s) for global permissions must be one of: %s.", PARAM_PERMISSION, _permission,
- GLOBAL_PERMISSIONS_ONE_LINE));
+ throw new BadRequestException(String.format("The '%s' parameter for global permissions must be one of %s. '%s' was passed.", PARAM_PERMISSION, GLOBAL_PERMISSIONS_ONE_LINE,
+ _permission
+ ));
}
}
}
import com.google.common.base.Joiner;
import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableSortedSet;
import javax.annotation.Nullable;
import org.sonar.api.server.ws.WebService.NewAction;
import org.sonar.api.web.UserRole;
"</ul>",
GLOBAL_PERMISSIONS_ONE_LINE,
PROJECT_PERMISSIONS_ONE_LINE);
- private static final ImmutableSortedSet<Comparable<?>> POSSIBLE_PERMISSIONS = ImmutableSortedSet.naturalOrder()
- .addAll(GlobalPermissions.ALL)
- .addAll(ComponentPermissions.ALL)
- .build();
private final DbClient dbClient;
private final ComponentFinder componentFinder;
static void createPermissionParameter(NewAction action) {
action.createParam(PARAM_PERMISSION)
.setDescription(PERMISSION_PARAM_DESCRIPTION)
- .setRequired(true)
- .setPossibleValues(POSSIBLE_PERMISSIONS);
+ .setRequired(true);
}
static void createGroupNameParameter(NewAction action) {
@Override
public void define(WebService.NewController context) {
WebService.NewAction action = context.createAction(ACTION)
- .setDescription("Remove permission from a group.<br /> " +
+ .setDescription("Remove a permission from a group.<br /> " +
+ "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
"The group id or group name must be provided, not both.<br />" +
- "If the project id or project key is provided, a project permission is removed.<br />" +
- "Requires 'Administer System' permission.")
+ "It requires administration permissions to access.")
.setSince("5.2")
.setPost(true)
.setHandler(this);
public void define(WebService.NewController context) {
WebService.NewAction action = context.createAction(ACTION)
.setDescription("Remove permission from a user.<br /> " +
- "If the project id or project key is provided, a project permission is removed.<br />" +
- "Requires 'Administer System' permission.")
+ "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
+ "It requires administration permissions to access.")
.setSince("5.2")
.setPost(true)
.setHandler(this);
public void define(WebService.NewController context) {
context.createAction("search_global_permissions")
.setDescription("List global permissions. <br />" +
- "Requires 'Administer System' permission.")
+ "It requires administration permissions to access.")
.setResponseExample(getClass().getResource("search_global_permissions-example.json"))
.setSince("5.2")
.setHandler(this);
.setDescription(String.format("Lists the users that have been granted the specified permission as individual users rather than through group affiliation. <br />" +
"This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
"If the query parameter '%s' is specified, the '%s' parameter is forced to '%s'.<br />" +
- "It requires administration permissions to access.<br /> ",
+ "It requires administration permissions to access.<br />",
Param.TEXT_QUERY, Param.SELECTED, SelectionMode.ALL.value()))
.addPagingParams(100)
.addSearchQuery("stas", "names")
@Test
public void IAE_is_raised_when_key_param_is_not_provided() throws Exception {
expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("Parameter 'key' is missing");
invalidRequest.execute();
}
@Test
public void IAE_is_raised_when_key_param_is_not_provided() throws Exception {
expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("Parameter 'key' is missing");
underTest.handle(invalidRequest, response);
}
@Test
public void IAE_is_raised_when_key_param_is_not_provided() throws Exception {
expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("Parameter 'key' is missing");
underTest.handle(invalidRequest, response);
}
ServletResponse response = new ServletResponse();
engine.execute(request, response, "api/system", "print");
- assertThat(response.stream().outputAsString()).isEqualTo("{\"errors\":[{\"msg\":\"Parameter 'message' is missing\"}]}");
+ assertThat(response.stream().outputAsString()).isEqualTo("{\"errors\":[{\"msg\":\"The 'message' parameter is missing\"}]}");
}
@Test
public String mandatoryParam(String key) {
String value = param(key);
if (value == null) {
- throw new IllegalArgumentException(String.format("Parameter '%s' is missing", key));
+ throw new IllegalArgumentException(String.format("The '%s' parameter is missing", key));
}
return value;
}
public List<String> mandatoryParamAsStrings(String key) {
List<String> values = paramAsStrings(key);
if (values == null) {
- throw new IllegalArgumentException(String.format("Parameter '%s' is missing", key));
+ throw new IllegalArgumentException(String.format("The '%s' parameter is missing", key));
}
return values;
}
request.mandatoryParam("required_param");
fail();
} catch (IllegalArgumentException e) {
- assertThat(e).hasMessage("Parameter 'required_param' is missing");
+ assertThat(e).hasMessage("The 'required_param' parameter is missing");
}
}
try {
request.mandatoryParamAsStrings("a_required_string");
} catch (IllegalArgumentException e) {
- assertThat(e).hasMessage("Parameter 'a_required_string' is missing");
+ assertThat(e).hasMessage("The 'a_required_string' parameter is missing");
}
request.setParam("a_required_string", "foo,bar");