Browse Source

SONAR-11876 Remove ws deprecated in SonarQube 5.X

tags/7.8
Julien Lancelot 5 years ago
parent
commit
eb399b126d
48 changed files with 121 additions and 1155 deletions
  1. 19
    24
      server/sonar-server/src/main/java/org/sonar/server/ce/ws/ActivityAction.java
  2. 0
    1
      server/sonar-server/src/main/java/org/sonar/server/ce/ws/CeWsParameters.java
  3. 0
    1
      server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWsModule.java
  4. 0
    51
      server/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java
  5. 1
    4
      server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueQueryFactory.java
  6. 3
    13
      server/sonar-server/src/main/java/org/sonar/server/issue/ws/AssignAction.java
  7. 1
    5
      server/sonar-server/src/main/java/org/sonar/server/issue/ws/BulkChangeAction.java
  8. 3
    27
      server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java
  9. 0
    6
      server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java
  10. 0
    62
      server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java
  11. 0
    6
      server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java
  12. 3
    17
      server/sonar-server/src/main/java/org/sonar/server/rule/ws/UpdateAction.java
  13. 0
    54
      server/sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java
  14. 0
    23
      server/sonar-server/src/main/java/org/sonar/server/test/ws/package-info.java
  15. 19
    62
      server/sonar-server/src/main/java/org/sonar/server/user/ws/SearchAction.java
  16. 6
    6
      server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java
  17. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsModuleTest.java
  18. 0
    57
      server/sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java
  19. 6
    6
      server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueQueryFactoryTest.java
  20. 2
    17
      server/sonar-server/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java
  21. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java
  22. 2
    3
      server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionComponentsTest.java
  23. 3
    3
      server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionTest.java
  24. 0
    73
      server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java
  25. 1
    45
      server/sonar-server/src/test/java/org/sonar/server/rule/ws/UpdateActionTest.java
  26. 9
    0
      server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java
  27. 9
    0
      server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
  28. 18
    41
      server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java
  29. 9
    0
      server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java
  30. 0
    98
      server/sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java
  31. 0
    16
      sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java
  32. 0
    6
      sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java
  33. 0
    29
      sonar-ws/src/main/java/org/sonarqube/ws/client/ce/ActivityRequest.java
  34. 0
    2
      sonar-ws/src/main/java/org/sonarqube/ws/client/ce/CeService.java
  35. 0
    22
      sonar-ws/src/main/java/org/sonarqube/ws/client/issue/IssuesWsParameters.java
  36. 0
    21
      sonar-ws/src/main/java/org/sonarqube/ws/client/issues/AssignRequest.java
  37. 0
    14
      sonar-ws/src/main/java/org/sonarqube/ws/client/issues/BulkChangeRequest.java
  38. 1
    6
      sonar-ws/src/main/java/org/sonarqube/ws/client/issues/IssuesService.java
  39. 0
    42
      sonar-ws/src/main/java/org/sonarqube/ws/client/issues/SearchRequest.java
  40. 0
    71
      sonar-ws/src/main/java/org/sonarqube/ws/client/profiles/ProfilesService.java
  41. 0
    26
      sonar-ws/src/main/java/org/sonarqube/ws/client/profiles/package-info.java
  42. 0
    53
      sonar-ws/src/main/java/org/sonarqube/ws/client/resources/ResourcesService.java
  43. 0
    26
      sonar-ws/src/main/java/org/sonarqube/ws/client/resources/package-info.java
  44. 0
    15
      sonar-ws/src/main/java/org/sonarqube/ws/client/rules/CreateRequest.java
  45. 4
    9
      sonar-ws/src/main/java/org/sonarqube/ws/client/rules/RulesService.java
  46. 0
    62
      sonar-ws/src/main/java/org/sonarqube/ws/client/rules/UpdateRequest.java
  47. 0
    27
      sonar-ws/src/main/java/org/sonarqube/ws/client/users/SearchRequest.java
  48. 0
    1
      sonar-ws/src/main/java/org/sonarqube/ws/client/users/UsersService.java

+ 19
- 24
server/sonar-server/src/main/java/org/sonar/server/ce/ws/ActivityAction.java View File

@@ -55,14 +55,12 @@ import static java.lang.String.format;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static org.apache.commons.lang.StringUtils.defaultString;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
import static org.sonar.api.utils.DateUtils.parseEndingDateOrDateTime;
import static org.sonar.api.utils.DateUtils.parseStartingDateOrDateTime;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.db.Pagination.forPage;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_COMPONENT_ID;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_COMPONENT_QUERY;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_MAX_EXECUTED_AT;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_MIN_SUBMITTED_AT;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_ONLY_CURRENTS;
@@ -105,21 +103,12 @@ public class ActivityAction implements CeWsAction {
new Change("6.1", "field \"logs\" is deprecated and its value is always false"),
new Change("6.6", "fields \"branch\" and \"branchType\" added"),
new Change("7.1", "field \"pullRequest\" added"),
new Change("7.6", String.format("The use of module keys in parameters '%s' and '%s' is deprecated", TEXT_QUERY, PARAM_COMPONENT_QUERY)))
new Change("7.6", format("The use of module keys in parameters '%s' is deprecated", TEXT_QUERY)))
.setSince("5.2");

action.createParam(PARAM_COMPONENT_ID)
.setDescription("Id of the component (project) to filter on")
.setExampleValue(Uuids.UUID_EXAMPLE_03);
action.createParam(PARAM_COMPONENT_QUERY)
.setDescription(format("Limit search to: <ul>" +
"<li>component names that contain the supplied string</li>" +
"<li>component keys that are exactly the same as the supplied string</li>" +
"</ul>" +
"Must not be set together with %s.<br />" +
"Deprecated and replaced by '%s'", PARAM_COMPONENT_ID, TEXT_QUERY))
.setExampleValue("Apache")
.setDeprecatedSince("5.5");
action.createParam(TEXT_QUERY)
.setDescription(format("Limit search to: <ul>" +
"<li>component names that contain the supplied string</li>" +
@@ -152,10 +141,6 @@ public class ActivityAction implements CeWsAction {
action.createParam(PARAM_MAX_EXECUTED_AT)
.setDescription("Maximum date of end of task processing (inclusive)")
.setExampleValue("2017-10-19T13:00:00+0200");
action.createParam(Param.PAGE)
.setDescription("Deprecated parameter")
.setDeprecatedSince("5.5")
.setDeprecatedKey("pageIndex", "5.4");
action.createPageSize(100, MAX_PAGE_SIZE);
}

@@ -290,7 +275,7 @@ public class ActivityAction implements CeWsAction {
private static Request toSearchWsRequest(org.sonar.api.server.ws.Request request) {
Request activityWsRequest = new Request()
.setComponentId(request.param(PARAM_COMPONENT_ID))
.setQ(defaultString(request.param(TEXT_QUERY), request.param(PARAM_COMPONENT_QUERY)))
.setQ(request.param(TEXT_QUERY))
.setStatus(request.paramAsStrings(PARAM_STATUS))
.setType(request.param(PARAM_TYPE))
.setMinSubmittedAt(request.param(PARAM_MIN_SUBMITTED_AT))
@@ -299,7 +284,7 @@ public class ActivityAction implements CeWsAction {
.setPs(String.valueOf(request.mandatoryParamAsInt(Param.PAGE_SIZE)));

checkRequest(activityWsRequest.getComponentId() == null || activityWsRequest.getQ() == null, "%s and %s must not be set at the same time",
PARAM_COMPONENT_ID, PARAM_COMPONENT_QUERY);
PARAM_COMPONENT_ID, TEXT_QUERY);
return activityWsRequest;
}

@@ -314,14 +299,19 @@ public class ActivityAction implements CeWsAction {
private List<String> status;
private String type;

Request() {
// Nothing to do
}

/**
* Example value: "AU-TpxcA-iU5OvuD2FL0"
*/
private Request setComponentId(String componentId) {
private Request setComponentId(@Nullable String componentId) {
this.componentId = componentId;
return this;
}

@CheckForNull
private String getComponentId() {
return componentId;
}
@@ -329,11 +319,12 @@ public class ActivityAction implements CeWsAction {
/**
* Example value: "2017-10-19T13:00:00+0200"
*/
private Request setMaxExecutedAt(String maxExecutedAt) {
private Request setMaxExecutedAt(@Nullable String maxExecutedAt) {
this.maxExecutedAt = maxExecutedAt;
return this;
}

@CheckForNull
private String getMaxExecutedAt() {
return maxExecutedAt;
}
@@ -341,11 +332,12 @@ public class ActivityAction implements CeWsAction {
/**
* Example value: "2017-10-19T13:00:00+0200"
*/
private Request setMinSubmittedAt(String minSubmittedAt) {
private Request setMinSubmittedAt(@Nullable String minSubmittedAt) {
this.minSubmittedAt = minSubmittedAt;
return this;
}

@CheckForNull
private String getMinSubmittedAt() {
return minSubmittedAt;
}
@@ -383,11 +375,12 @@ public class ActivityAction implements CeWsAction {
/**
* Example value: "Apache"
*/
private Request setQ(String q) {
private Request setQ(@Nullable String q) {
this.q = q;
return this;
}

@CheckForNull
private String getQ() {
return q;
}
@@ -403,11 +396,12 @@ public class ActivityAction implements CeWsAction {
* <li>"IN_PROGRESS"</li>
* </ul>
*/
private Request setStatus(List<String> status) {
private Request setStatus(@Nullable List<String> status) {
this.status = status;
return this;
}

@CheckForNull
private List<String> getStatus() {
return status;
}
@@ -419,11 +413,12 @@ public class ActivityAction implements CeWsAction {
* <li>"REPORT"</li>
* </ul>
*/
private Request setType(String type) {
private Request setType(@Nullable String type) {
this.type = type;
return this;
}

@CheckForNull
private String getType() {
return type;
}

+ 0
- 1
server/sonar-server/src/main/java/org/sonar/server/ce/ws/CeWsParameters.java View File

@@ -26,7 +26,6 @@ public class CeWsParameters {
public static final String PARAM_COMPONENT_ID = "componentId";
public static final String DEPRECATED_PARAM_COMPONENT_KEY = "componentKey";
public static final String PARAM_COMPONENT = "component";
public static final String PARAM_COMPONENT_QUERY = "componentQuery";
public static final String PARAM_TYPE = "type";
public static final String PARAM_STATUS = "status";
public static final String PARAM_ONLY_CURRENTS = "onlyCurrents";

+ 0
- 1
server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentsWsModule.java View File

@@ -25,7 +25,6 @@ public class ComponentsWsModule extends Module {
@Override
protected void configureModule() {
add(
ResourcesWs.class,
ComponentsWs.class,
// actions
AppAction.class,

+ 0
- 51
server/sonar-server/src/main/java/org/sonar/server/component/ws/ResourcesWs.java View File

@@ -1,51 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.component.ws;

import org.sonar.api.server.ws.WebService;
import org.sonar.server.ws.RemovedWebServiceHandler;

public class ResourcesWs implements WebService {

@Override
public void define(Context context) {
NewController controller = context.createController("api/resources")
.setDescription("Removed since 6.3, please use api/components and api/measures instead")
.setSince("2.10");
defineIndexAction(controller);
controller.done();
}

private static void defineIndexAction(NewController controller) {
controller.createAction("index")
.setDescription("The web service is removed and you're invited to use the alternatives: " +
"<ul>" +
"<li>if you need one component without measures: api/components/show</li>" +
"<li>if you need one component with measures: api/measures/component</li>" +
"<li>if you need several components without measures: api/components/tree</li>" +
"<li>if you need several components with measures: api/measures/component_tree</li>" +
"</ul>")
.setSince("2.10")
.setDeprecatedSince("5.4")
.setHandler(RemovedWebServiceHandler.INSTANCE)
.setResponseExample(RemovedWebServiceHandler.INSTANCE.getResponseExample());
}

}

+ 1
- 4
server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueQueryFactory.java View File

@@ -67,9 +67,7 @@ import static org.sonar.core.util.stream.MoreCollectors.toHashSet;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_KEYS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_ROOTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_UUIDS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_CREATED_AFTER;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_CREATED_IN_LAST;
@@ -187,8 +185,7 @@ public class IssueQueryFactory {
boolean effectiveOnComponentOnly = false;

checkArgument(atMostOneNonNullElement(components, componentUuids, componentKeys, componentRootUuids, componentRoots),
"At most one of the following parameters can be provided: %s, %s, %s, %s, %s",
PARAM_COMPONENT_KEYS, PARAM_COMPONENT_UUIDS, PARAM_COMPONENTS, PARAM_COMPONENT_ROOTS, PARAM_COMPONENT_UUIDS);
"At most one of the following parameters can be provided: %s and %s", PARAM_COMPONENT_KEYS, PARAM_COMPONENT_UUIDS);

if (componentRootUuids != null) {
allComponents.addAll(getComponentsFromUuids(session, componentRootUuids));

+ 3
- 13
server/sonar-server/src/main/java/org/sonar/server/issue/ws/AssignAction.java View File

@@ -22,10 +22,8 @@ package org.sonar.server.issue.ws;
import com.google.common.base.Strings;
import com.google.common.io.Resources;
import java.util.Date;
import java.util.Optional;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.apache.commons.lang.BooleanUtils;
import org.sonar.api.rules.RuleType;
import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.Request;
@@ -56,7 +54,6 @@ import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ASSIGNEE;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ISSUE;

public class AssignAction implements IssuesWsAction {
private static final String DEPRECATED_PARAM_ME = "me";
private static final String ASSIGN_TO_ME_VALUE = "_me";

private final System2 system2;
@@ -97,10 +94,6 @@ public class AssignAction implements IssuesWsAction {
action.createParam(PARAM_ASSIGNEE)
.setDescription("Login of the assignee. When not set, it will unassign the issue. Use '%s' to assign to current user", ASSIGN_TO_ME_VALUE)
.setExampleValue("admin");
action.createParam(DEPRECATED_PARAM_ME)
.setDescription("(deprecated) Assign the issue to the logged-in user. Replaced by the parameter assignee=_me")
.setDeprecatedSince("5.2")
.setBooleanPossibleValues();
}

@Override
@@ -116,7 +109,7 @@ public class AssignAction implements IssuesWsAction {
try (DbSession dbSession = dbClient.openSession(false)) {
IssueDto issueDto = issueFinder.getByKey(dbSession, issueKey);
DefaultIssue issue = issueDto.toDefaultIssue();
checkArgument(issue.type() != RuleType.SECURITY_HOTSPOT,"It is not allowed to assign a security hotspot");
checkArgument(issue.type() != RuleType.SECURITY_HOTSPOT, "Assigning security hotspots is not allowed");
UserDto user = getUser(dbSession, login);
if (user != null) {
checkMembership(dbSession, issueDto, user);
@@ -132,10 +125,7 @@ public class AssignAction implements IssuesWsAction {
@CheckForNull
private String getAssignee(Request request) {
String assignee = emptyToNull(request.param(PARAM_ASSIGNEE));
if (ASSIGN_TO_ME_VALUE.equals(assignee) || BooleanUtils.isTrue(request.paramAsBoolean(DEPRECATED_PARAM_ME))) {
return userSession.getLogin();
}
return assignee;
return ASSIGN_TO_ME_VALUE.equals(assignee) ? userSession.getLogin() : assignee;
}

@CheckForNull
@@ -148,7 +138,7 @@ public class AssignAction implements IssuesWsAction {

private void checkMembership(DbSession dbSession, IssueDto issueDto, UserDto user) {
String projectUuid = requireNonNull(issueDto.getProjectUuid());
ComponentDto project = Optional.ofNullable(dbClient.componentDao().selectByUuid(dbSession, projectUuid).orElse(null))
ComponentDto project = dbClient.componentDao().selectByUuid(dbSession, projectUuid)
.orElseThrow(() -> new IllegalStateException(format("Unknown project %s", projectUuid)));
OrganizationDto organizationDto = dbClient.organizationDao().selectByUuid(dbSession, project.getOrganizationUuid())
.orElseThrow(() -> new IllegalStateException(format("Unknown organizationMember %s", project.getOrganizationUuid())));

+ 1
- 5
server/sonar-server/src/main/java/org/sonar/server/issue/ws/BulkChangeAction.java View File

@@ -55,8 +55,8 @@ import org.sonar.server.issue.Action;
import org.sonar.server.issue.AddTagsAction;
import org.sonar.server.issue.AssignAction;
import org.sonar.server.issue.IssueChangePostProcessor;
import org.sonar.server.issue.WebIssueStorage;
import org.sonar.server.issue.RemoveTagsAction;
import org.sonar.server.issue.WebIssueStorage;
import org.sonar.server.issue.notification.IssueChangeNotification;
import org.sonar.server.notification.NotificationManager;
import org.sonar.server.user.UserSession;
@@ -94,7 +94,6 @@ import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ASSIGN;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMMENT;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_DO_TRANSITION;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ISSUES;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PLAN;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_REMOVE_TAGS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_SEND_NOTIFICATIONS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_SET_SEVERITY;
@@ -155,9 +154,6 @@ public class BulkChangeAction implements IssuesWsAction {
.setPossibleValues(RuleType.names())
.setSince("5.5")
.setDeprecatedKey("set_type.type", "6.2");
action.createParam(PARAM_PLAN)
.setDescription("In 5.5, action plans are dropped. Has no effect. To plan the list of issues to a specific action plan (key), or unlink all the issues from an action plan")
.setDeprecatedSince("5.5");
action.createParam(PARAM_DO_TRANSITION)
.setDescription("Transition")
.setExampleValue(REOPEN)

+ 3
- 27
server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java View File

@@ -85,7 +85,6 @@ import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PULL_REQUEST_EXAMPLE_001;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.ACTION_SEARCH;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.DEPRECATED_PARAM_ACTION_PLANS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.DEPRECATED_PARAM_AUTHORS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.FACET_MODE;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.FACET_MODE_COUNT;
@@ -96,10 +95,7 @@ import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ASSIGNED;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ASSIGNEES;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_AUTHOR;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_BRANCH;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_KEYS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_ROOTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_ROOT_UUIDS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_UUIDS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_CREATED_AFTER;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_CREATED_AT;
@@ -117,7 +113,6 @@ import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_OWASP_TOP_1
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PROJECTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PROJECT_KEYS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PULL_REQUEST;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_REPORTERS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_RESOLUTIONS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_RESOLVED;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_RULES;
@@ -140,10 +135,8 @@ public class SearchAction implements IssuesWsAction, Startable {
PARAM_SEVERITIES,
PARAM_STATUSES,
PARAM_RESOLUTIONS,
DEPRECATED_PARAM_ACTION_PLANS,
PARAM_RULES,
PARAM_ASSIGNEES,
PARAM_REPORTERS,
DEPRECATED_PARAM_AUTHORS,
PARAM_AUTHOR,
PARAM_DIRECTORIES,
@@ -188,9 +181,9 @@ public class SearchAction implements IssuesWsAction, Startable {
.setHandler(this)
.setDescription(
"Search for issues.<br>" +
"At most one of the following parameters can be provided at the same time: %s, %s, %s, %s, %s.<br>" +
"At most one of the following parameters can be provided at the same time: %s and %s.<br>" +
"Requires the 'Browse' permission on the specified project(s).",
PARAM_COMPONENT_KEYS, PARAM_COMPONENT_UUIDS, PARAM_COMPONENTS, PARAM_COMPONENT_ROOT_UUIDS, PARAM_COMPONENT_ROOTS)
PARAM_COMPONENT_KEYS, PARAM_COMPONENT_UUIDS)
.setSince("3.6")
.setChangelog(
new Change("7.7", format("Value '%s' in parameter '%s' is deprecated, please use '%s' instead", DEPRECATED_PARAM_AUTHORS, FACETS, PARAM_AUTHOR)),
@@ -307,9 +300,7 @@ public class SearchAction implements IssuesWsAction, Startable {
private static void addComponentRelatedParams(WebService.NewAction action) {
action.createParam(PARAM_ON_COMPONENT_ONLY)
.setDescription("Return only issues at a component's level, not on its descendants (modules, directories, files, etc). " +
"This parameter is only considered when componentKeys or componentUuids is set. " +
"Using the deprecated componentRoots or componentRootUuids parameters will set this parameter to false. " +
"Using the deprecated components parameter will set this parameter to true.")
"This parameter is only considered when componentKeys or componentUuids is set.")
.setBooleanPossibleValues()
.setDefaultValue("false");

@@ -318,10 +309,6 @@ public class SearchAction implements IssuesWsAction, Startable {
"A component can be a portfolio, project, module, directory or file.")
.setExampleValue(KEY_PROJECT_EXAMPLE_001);

action.createParam(PARAM_COMPONENTS)
.setDeprecatedSince("5.1")
.setDescription("If used, will have the same meaning as componentKeys AND onComponentOnly=true.");

action.createParam(PARAM_COMPONENT_UUIDS)
.setDescription("To retrieve issues associated to a specific list of components their sub-components (comma-separated list of component IDs). " +
INTERNAL_PARAMETER_DISCLAIMER +
@@ -329,14 +316,6 @@ public class SearchAction implements IssuesWsAction, Startable {
.setDeprecatedSince("6.5")
.setExampleValue("584a89f2-8037-4f7b-b82c-8b45d2d63fb2");

action.createParam(PARAM_COMPONENT_ROOTS)
.setDeprecatedSince("5.1")
.setDescription("If used, will have the same meaning as componentKeys AND onComponentOnly=false.");

action.createParam(PARAM_COMPONENT_ROOT_UUIDS)
.setDeprecatedSince("5.1")
.setDescription("If used, will have the same meaning as componentUuids AND onComponentOnly=false.");

action.createParam(PARAM_PROJECTS)
.setDescription("To retrieve issues associated to a specific list of projects (comma-separated list of project keys). " +
INTERNAL_PARAMETER_DISCLAIMER +
@@ -532,10 +511,7 @@ public class SearchAction implements IssuesWsAction, Startable {
.setAssigneesUuid(getLogins(dbSession, request.paramAsStrings(PARAM_ASSIGNEES)))
.setAuthors(request.hasParam(PARAM_AUTHOR) ? request.multiParam(PARAM_AUTHOR) : request.paramAsStrings(DEPRECATED_PARAM_AUTHORS))
.setComponentKeys(request.paramAsStrings(PARAM_COMPONENT_KEYS))
.setComponentRootUuids(request.paramAsStrings(PARAM_COMPONENT_ROOT_UUIDS))
.setComponentRoots(request.paramAsStrings(PARAM_COMPONENT_ROOTS))
.setComponentUuids(request.paramAsStrings(PARAM_COMPONENT_UUIDS))
.setComponents(request.paramAsStrings(PARAM_COMPONENTS))
.setCreatedAfter(request.param(PARAM_CREATED_AFTER))
.setCreatedAt(request.param(PARAM_CREATED_AT))
.setCreatedBefore(request.param(PARAM_CREATED_BEFORE))

+ 0
- 6
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java View File

@@ -166,7 +166,6 @@ import org.sonar.server.qualityprofile.QProfileRulesImpl;
import org.sonar.server.qualityprofile.QProfileTreeImpl;
import org.sonar.server.qualityprofile.RuleActivator;
import org.sonar.server.qualityprofile.index.ActiveRuleIndexer;
import org.sonar.server.qualityprofile.ws.ProfilesWs;
import org.sonar.server.qualityprofile.ws.QProfilesWsModule;
import org.sonar.server.root.ws.RootWsModule;
import org.sonar.server.rule.CommonRuleDefinitionsImpl;
@@ -198,7 +197,6 @@ import org.sonar.server.startup.LogServerId;
import org.sonar.server.telemetry.TelemetryClient;
import org.sonar.server.telemetry.TelemetryDaemon;
import org.sonar.server.telemetry.TelemetryDataLoader;
import org.sonar.server.test.ws.TestsWs;
import org.sonar.server.text.MacroInterpreter;
import org.sonar.server.ui.DeprecatedViews;
import org.sonar.server.ui.PageDecorations;
@@ -288,7 +286,6 @@ public class PlatformLevel4 extends PlatformLevel {
XMLProfileSerializer.class,
AnnotationProfileParser.class,
QProfileComparison.class,
ProfilesWs.class,
QProfileTreeImpl.class,
QProfileRulesImpl.class,
RuleActivator.class,
@@ -471,9 +468,6 @@ public class PlatformLevel4 extends PlatformLevel {
NotificationWsModule.class,
EmailsWsModule.class,

// Tests
TestsWs.class,

// Settings
PersistentSettings.class,
PropertiesWs.class,

+ 0
- 62
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ProfilesWs.java View File

@@ -1,62 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.qualityprofile.ws;

import org.sonar.api.server.ws.WebService;
import org.sonar.server.ws.RemovedWebServiceHandler;

/**
* List of quality profiles WS implemented in Rails.
* New WS on quality profiles MUST be declared in {@link org.sonar.server.qualityprofile.ws.QProfilesWs}
*/
public class ProfilesWs implements WebService {

public static final String API_ENDPOINT = "api/profiles";

@Override
public void define(Context context) {
NewController controller = context.createController(API_ENDPOINT)
.setDescription("Removed since 6.3, please use api/qualityprofiles instead")
.setSince("4.4");
defineListAction(controller);
defineIndexAction(controller);
controller.done();
}

private static void defineIndexAction(NewController controller) {
controller.createAction("index")
.setDescription("Get a profile.<br/>" +
"The web service is removed and you're invited to use api/qualityprofiles/search instead")
.setSince("3.3")
.setDeprecatedSince("5.2")
.setHandler(RemovedWebServiceHandler.INSTANCE)
.setResponseExample(RemovedWebServiceHandler.INSTANCE.getResponseExample());
}

private static void defineListAction(NewController controller) {
controller.createAction("list")
.setDescription("Get a list of profiles.<br/>" +
"The web service is removed and you're invited to use api/qualityprofiles/search instead")
.setSince("3.3")
.setDeprecatedSince("5.2")
.setHandler(RemovedWebServiceHandler.INSTANCE)
.setResponseExample(RemovedWebServiceHandler.INSTANCE.getResponseExample());
}
}

+ 0
- 6
server/sonar-server/src/main/java/org/sonar/server/rule/ws/CreateAction.java View File

@@ -95,12 +95,6 @@ public class CreateAction implements RulesWsAction {
.setDescription("Key of the custom rule")
.setExampleValue("Todo_should_not_be_used");

action
.createParam("manual_key")
.setDescription("Manual rules are no more supported. This parameter is ignored")
.setExampleValue("Error_handling")
.setDeprecatedSince("5.5");

action
.createParam(PARAM_TEMPLATE_KEY)
.setDescription("Key of the template rule in order to create a custom rule (mandatory for custom rule)")

+ 3
- 17
server/sonar-server/src/main/java/org/sonar/server/rule/ws/UpdateAction.java View File

@@ -50,7 +50,6 @@ import static com.google.common.collect.Sets.newHashSet;
import static java.lang.String.format;
import static java.util.Collections.singletonList;
import static java.util.Optional.ofNullable;
import static org.apache.commons.lang.StringUtils.defaultIfEmpty;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.server.rule.ws.CreateAction.KEY_MAXIMUM_LENGTH;
import static org.sonar.server.rule.ws.CreateAction.NAME_MAXIMUM_LENGTH;
@@ -62,11 +61,8 @@ public class UpdateAction implements RulesWsAction {
public static final String PARAM_TAGS = "tags";
public static final String PARAM_MARKDOWN_NOTE = "markdown_note";
public static final String PARAM_REMEDIATION_FN_TYPE = "remediation_fn_type";
public static final String DEPRECATED_PARAM_REMEDIATION_FN_TYPE = "debt_remediation_fn_type";
public static final String PARAM_REMEDIATION_FN_BASE_EFFORT = "remediation_fn_base_effort";
public static final String DEPRECATED_PARAM_REMEDIATION_FN_OFFSET = "debt_remediation_fn_offset";
public static final String PARAM_REMEDIATION_FN_GAP_MULTIPLIER = "remediation_fy_gap_multiplier";
public static final String DEPRECATED_PARAM_REMEDIATION_FN_COEFF = "debt_remediation_fy_coeff";
public static final String PARAM_NAME = "name";
public static final String PARAM_DESCRIPTION = "markdown_description";
public static final String PARAM_SEVERITY = "severity";
@@ -124,26 +120,16 @@ public class UpdateAction implements RulesWsAction {
.setPossibleValues(DebtRemediationFunction.Type.values())
.setSince("5.5");

action.createParam(DEPRECATED_PARAM_REMEDIATION_FN_TYPE)
.setDeprecatedSince("5.5")
.setPossibleValues(DebtRemediationFunction.Type.values());

action.createParam(PARAM_REMEDIATION_FN_BASE_EFFORT)
.setDescription("Base effort of the remediation function of the rule")
.setExampleValue("1d")
.setSince("5.5");

action.createParam(DEPRECATED_PARAM_REMEDIATION_FN_OFFSET)
.setDeprecatedSince("5.5");

action.createParam(PARAM_REMEDIATION_FN_GAP_MULTIPLIER)
.setDescription("Gap multiplier of the remediation function of the rule")
.setExampleValue("3min")
.setSince("5.5");

action.createParam(DEPRECATED_PARAM_REMEDIATION_FN_COEFF)
.setDeprecatedSince("5.5");

action
.createParam(PARAM_NAME)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
@@ -251,15 +237,15 @@ public class UpdateAction implements RulesWsAction {
}

private static void readDebt(Request request, RuleUpdate update) {
String value = defaultIfEmpty(request.param(PARAM_REMEDIATION_FN_TYPE), request.param(DEPRECATED_PARAM_REMEDIATION_FN_TYPE));
String value = request.param(PARAM_REMEDIATION_FN_TYPE);
if (value != null) {
if (StringUtils.isBlank(value)) {
update.setDebtRemediationFunction(null);
} else {
DebtRemediationFunction fn = new DefaultDebtRemediationFunction(
DebtRemediationFunction.Type.valueOf(value),
defaultIfEmpty(request.param(PARAM_REMEDIATION_FN_GAP_MULTIPLIER), request.param(DEPRECATED_PARAM_REMEDIATION_FN_COEFF)),
defaultIfEmpty(request.param(PARAM_REMEDIATION_FN_BASE_EFFORT), request.param(DEPRECATED_PARAM_REMEDIATION_FN_OFFSET)));
request.param(PARAM_REMEDIATION_FN_GAP_MULTIPLIER),
request.param(PARAM_REMEDIATION_FN_BASE_EFFORT));
update.setDebtRemediationFunction(fn);
}
}

+ 0
- 54
server/sonar-server/src/main/java/org/sonar/server/test/ws/TestsWs.java View File

@@ -1,54 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.test.ws;

import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.WebService;
import org.sonar.server.ws.RemovedWebServiceHandler;

public class TestsWs implements WebService {

@Override
public void define(Context context) {
NewController controller = context.createController("api/tests")
.setSince("4.4")
.setDescription("Removed in 7.6");

controller.createAction("covered_files")
.setDescription("This web API is no longer supported")
.setSince("4.4")
.setDeprecatedSince("5.6")
.setChangelog(new Change("7.6", "This action has been removed"))
.setResponseExample(RemovedWebServiceHandler.INSTANCE.getResponseExample())
.setHandler(RemovedWebServiceHandler.INSTANCE);

controller
.createAction("list")
.setDescription("This web API is no longer supported")
.setSince("5.2")
.setDeprecatedSince("5.6")
.setChangelog(new Change("7.6", "This action has been removed"))
.setResponseExample(RemovedWebServiceHandler.INSTANCE.getResponseExample())
.setHandler(RemovedWebServiceHandler.INSTANCE);

controller.done();
}

}

+ 0
- 23
server/sonar-server/src/main/java/org/sonar/server/test/ws/package-info.java View File

@@ -1,23 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
@ParametersAreNonnullByDefault
package org.sonar.server.test.ws;

import javax.annotation.ParametersAreNonnullByDefault;

+ 19
- 62
server/sonar-server/src/main/java/org/sonar/server/user/ws/SearchAction.java View File

@@ -20,12 +20,10 @@
package org.sonar.server.user.ws;

import com.google.common.collect.Multimap;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.sonar.api.server.ws.Change;
@@ -50,7 +48,6 @@ import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.emptyToNull;
import static java.util.Optional.ofNullable;
import static org.sonar.api.server.ws.WebService.Param.FIELDS;
import static org.sonar.api.server.ws.WebService.Param.PAGE;
import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
@@ -58,16 +55,6 @@ import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.api.utils.Paging.forPageIndex;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.server.es.SearchOptions.MAX_LIMIT;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_ACTIVE;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_AVATAR;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_EMAIL;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_EXTERNAL_IDENTITY;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_EXTERNAL_PROVIDER;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_GROUPS;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_LOCAL;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_NAME;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_SCM_ACCOUNTS;
import static org.sonar.server.user.ws.UserJsonWriter.FIELD_TOKENS_COUNT;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
import static org.sonarqube.ws.Users.SearchWsResponse.Groups;
import static org.sonarqube.ws.Users.SearchWsResponse.ScmAccounts;
@@ -114,8 +101,6 @@ public class SearchAction implements UsersWsAction {
.setHandler(this)
.setResponseExample(getClass().getResource("search-example.json"));

action.createFieldsParam(UserJsonWriter.FIELDS)
.setDeprecatedSince("5.4");
action.addPagingParams(50, MAX_LIMIT);

action.createParam(TEXT_QUERY)
@@ -131,7 +116,6 @@ public class SearchAction implements UsersWsAction {

private Users.SearchWsResponse doHandle(SearchRequest request) {
SearchOptions options = new SearchOptions().setPage(request.getPage(), request.getPageSize());
List<String> fields = request.getPossibleFields();
SearchResult<UserDoc> result = userIndex.search(UserQuery.builder().setTextQuery(request.getQuery()).build(), options);
try (DbSession dbSession = dbClient.openSession(false)) {
List<String> logins = result.getDocs().stream().map(UserDoc::login).collect(toList());
@@ -139,14 +123,13 @@ public class SearchAction implements UsersWsAction {
List<UserDto> users = dbClient.userDao().selectByOrderedLogins(dbSession, logins);
Map<String, Integer> tokenCountsByLogin = dbClient.userTokenDao().countTokensByUsers(dbSession, users);
Paging paging = forPageIndex(request.getPage()).withPageSize(request.getPageSize()).andTotal((int) result.getTotal());
return buildResponse(users, groupsByLogin, tokenCountsByLogin, fields, paging);
return buildResponse(users, groupsByLogin, tokenCountsByLogin, paging);
}
}

private SearchWsResponse buildResponse(List<UserDto> users, Multimap<String, String> groupsByLogin, Map<String, Integer> tokenCountsByLogin,
@Nullable List<String> fields, Paging paging) {
private SearchWsResponse buildResponse(List<UserDto> users, Multimap<String, String> groupsByLogin, Map<String, Integer> tokenCountsByLogin, Paging paging) {
SearchWsResponse.Builder responseBuilder = newBuilder();
users.forEach(user -> responseBuilder.addUsers(towsUser(user, firstNonNull(tokenCountsByLogin.get(user.getUuid()), 0), groupsByLogin.get(user.getLogin()), fields)));
users.forEach(user -> responseBuilder.addUsers(towsUser(user, firstNonNull(tokenCountsByLogin.get(user.getUuid()), 0), groupsByLogin.get(user.getLogin()))));
responseBuilder.getPagingBuilder()
.setPageIndex(paging.pageIndex())
.setPageSize(paging.pageSize())
@@ -155,43 +138,30 @@ public class SearchAction implements UsersWsAction {
return responseBuilder.build();
}

private User towsUser(UserDto user, @Nullable Integer tokensCount, Collection<String> groups, @Nullable Collection<String> fields) {
User.Builder userBuilder = User.newBuilder()
.setLogin(user.getLogin());
setIfNeeded(FIELD_NAME, fields, user.getName(), userBuilder::setName);
private User towsUser(UserDto user, @Nullable Integer tokensCount, Collection<String> groups) {
User.Builder userBuilder = User.newBuilder().setLogin(user.getLogin());
ofNullable(user.getName()).ifPresent(userBuilder::setName);
if (userSession.isLoggedIn()) {
setIfNeeded(FIELD_AVATAR, fields, emptyToNull(user.getEmail()), u -> userBuilder.setAvatar(avatarResolver.create(user)));
setIfNeeded(FIELD_ACTIVE, fields, user.isActive(), userBuilder::setActive);
setIfNeeded(FIELD_LOCAL, fields, user.isLocal(), userBuilder::setLocal);
setIfNeeded(FIELD_EXTERNAL_PROVIDER, fields, user.getExternalIdentityProvider(), userBuilder::setExternalProvider);
setIfNeeded(isNeeded(FIELD_SCM_ACCOUNTS, fields) && !user.getScmAccountsAsList().isEmpty(), user.getScmAccountsAsList(),
scm -> userBuilder.setScmAccounts(ScmAccounts.newBuilder().addAllScmAccounts(scm)));
ofNullable(emptyToNull(user.getEmail())).ifPresent(u -> userBuilder.setAvatar(avatarResolver.create(user)));
userBuilder.setActive(user.isActive());
userBuilder.setLocal(user.isLocal());
ofNullable(user.getExternalIdentityProvider()).ifPresent(userBuilder::setExternalProvider);
if (!user.getScmAccountsAsList().isEmpty()) {
userBuilder.setScmAccounts(ScmAccounts.newBuilder().addAllScmAccounts(user.getScmAccountsAsList()));
}
}
if (userSession.isSystemAdministrator() || Objects.equals(userSession.getUuid(), user.getUuid())) {
setIfNeeded(FIELD_EMAIL, fields, user.getEmail(), userBuilder::setEmail);
setIfNeeded(isNeeded(FIELD_GROUPS, fields) && !groups.isEmpty(), groups,
g -> userBuilder.setGroups(Groups.newBuilder().addAllGroups(g)));
setIfNeeded(FIELD_EXTERNAL_IDENTITY, fields, user.getExternalLogin(), userBuilder::setExternalIdentity);
setIfNeeded(FIELD_TOKENS_COUNT, fields, tokensCount, userBuilder::setTokensCount);
ofNullable(user.getEmail()).ifPresent(userBuilder::setEmail);
if (!groups.isEmpty()) {
userBuilder.setGroups(Groups.newBuilder().addAllGroups(groups));
}
ofNullable(user.getExternalLogin()).ifPresent(userBuilder::setExternalIdentity);
ofNullable(tokensCount).ifPresent(userBuilder::setTokensCount);
ofNullable(user.getLastConnectionDate()).ifPresent(date -> userBuilder.setLastConnectionDate(formatDateTime(date)));
}
return userBuilder.build();
}

private static <PARAM> void setIfNeeded(String field, @Nullable Collection<String> fields, @Nullable PARAM parameter, Function<PARAM, ?> setter) {
setIfNeeded(isNeeded(field, fields), parameter, setter);
}

private static <PARAM> void setIfNeeded(boolean condition, @Nullable PARAM parameter, Function<PARAM, ?> setter) {
if (parameter != null && condition) {
setter.apply(parameter);
}
}

private static boolean isNeeded(String field, @Nullable Collection<String> fields) {
return fields == null || fields.isEmpty() || fields.contains(field);
}

private static SearchRequest toSearchRequest(Request request) {
int pageSize = request.mandatoryParamAsInt(PAGE_SIZE);
checkArgument(pageSize <= MAX_PAGE_SIZE, "The '%s' parameter must be less than %s", PAGE_SIZE, MAX_PAGE_SIZE);
@@ -199,7 +169,6 @@ public class SearchAction implements UsersWsAction {
.setQuery(request.param(TEXT_QUERY))
.setPage(request.mandatoryParamAsInt(PAGE))
.setPageSize(pageSize)
.setPossibleFields(request.paramAsStrings(FIELDS))
.build();
}

@@ -208,13 +177,11 @@ public class SearchAction implements UsersWsAction {
private final Integer page;
private final Integer pageSize;
private final String query;
private final List<String> possibleFields;

private SearchRequest(Builder builder) {
this.page = builder.page;
this.pageSize = builder.pageSize;
this.query = builder.query;
this.possibleFields = builder.additionalFields;
}

@CheckForNull
@@ -232,10 +199,6 @@ public class SearchAction implements UsersWsAction {
return query;
}

public List<String> getPossibleFields() {
return possibleFields;
}

public static Builder builder() {
return new Builder();
}
@@ -245,7 +208,6 @@ public class SearchAction implements UsersWsAction {
private Integer page;
private Integer pageSize;
private String query;
private List<String> additionalFields = new ArrayList<>();

private Builder() {
// enforce factory method use
@@ -266,11 +228,6 @@ public class SearchAction implements UsersWsAction {
return this;
}

public Builder setPossibleFields(List<String> possibleFields) {
this.additionalFields = possibleFields;
return this;
}

public SearchRequest build() {
return new SearchRequest(this);
}

+ 6
- 6
server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java View File

@@ -63,6 +63,7 @@ import static java.util.Collections.emptyList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import static org.mockito.Mockito.mock;
import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
import static org.sonar.api.utils.DateUtils.formatDate;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.db.ce.CeActivityDto.Status.FAILED;
@@ -74,7 +75,6 @@ import static org.sonar.db.ce.CeTaskCharacteristicDto.BRANCH_TYPE_KEY;
import static org.sonar.db.ce.CeTaskCharacteristicDto.PULL_REQUEST;
import static org.sonar.db.component.BranchType.LONG;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_COMPONENT_ID;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_COMPONENT_QUERY;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_MAX_EXECUTED_AT;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_MIN_SUBMITTED_AT;
import static org.sonar.server.ce.ws.CeWsParameters.PARAM_STATUS;
@@ -290,7 +290,7 @@ public class ActivityActionTest {
insertActivity("T2", zookeeper, SUCCESS);
insertActivity("T3", eclipse, SUCCESS);

ActivityResponse activityResponse = call(ws.newRequest().setParam(PARAM_COMPONENT_QUERY, "apac"));
ActivityResponse activityResponse = call(ws.newRequest().setParam(TEXT_QUERY, "apac"));

assertThat(activityResponse.getTasksList()).extracting("id").containsOnly("T1", "T2");
}
@@ -302,7 +302,7 @@ public class ActivityActionTest {
logInAsSystemAdministrator();
insertActivity("T2", apacheView, SUCCESS);

ActivityResponse activityResponse = call(ws.newRequest().setParam(PARAM_COMPONENT_QUERY, "apac"));
ActivityResponse activityResponse = call(ws.newRequest().setParam(TEXT_QUERY, "apac"));

assertThat(activityResponse.getTasksList()).extracting("id").containsOnly("T2");
}
@@ -314,7 +314,7 @@ public class ActivityActionTest {
logInAsSystemAdministrator();
insertActivity("T2", apacheApp, SUCCESS);

ActivityResponse activityResponse = call(ws.newRequest().setParam(PARAM_COMPONENT_QUERY, "apac"));
ActivityResponse activityResponse = call(ws.newRequest().setParam(TEXT_QUERY, "apac"));

assertThat(activityResponse.getTasksList()).extracting(Task::getId).containsOnly("T2");
}
@@ -459,11 +459,11 @@ public class ActivityActionTest {
@Test
public void fail_if_both_filters_on_component_id_and_name() {
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("componentId and componentQuery must not be set at the same time");
expectedException.expectMessage("componentId and q must not be set at the same time");

ws.newRequest()
.setParam("componentId", "ID1")
.setParam("componentQuery", "apache")
.setParam("q", "apache")
.setMediaType(MediaTypes.PROTOBUF)
.execute();
}

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentsWsModuleTest.java View File

@@ -30,6 +30,6 @@ public class ComponentsWsModuleTest {
public void verify_count_of_added_components() {
ComponentContainer container = new ComponentContainer();
new ComponentsWsModule().configure(container);
assertThat(container.size()).isEqualTo(COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER + 8);
assertThat(container.size()).isEqualTo(COMPONENTS_IN_EMPTY_COMPONENT_CONTAINER + 7);
}
}

+ 0
- 57
server/sonar-server/src/test/java/org/sonar/server/component/ws/ResourcesWsTest.java View File

@@ -1,57 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.component.ws;

import org.junit.Before;
import org.junit.Test;
import org.sonar.api.server.ws.WebService;
import org.sonar.server.ws.RemovedWebServiceHandler;
import org.sonar.server.ws.WsTester;

import static org.assertj.core.api.Assertions.assertThat;

public class ResourcesWsTest {

WebService.Controller controller;

@Before
public void setUp() {
WsTester tester = new WsTester(new ResourcesWs());
controller = tester.controller("api/resources");
}

@Test
public void define_controller() {
assertThat(controller).isNotNull();
assertThat(controller.since()).isEqualTo("2.10");
assertThat(controller.description()).isNotEmpty();
assertThat(controller.actions()).hasSize(1);
}

@Test
public void define_index_action() {
WebService.Action action = controller.action("index");
assertThat(action).isNotNull();
assertThat(action.handler()).isInstanceOf(RemovedWebServiceHandler.class);
assertThat(action.responseExampleAsString()).isNotEmpty();
assertThat(action.params()).isEmpty();
}

}

+ 6
- 6
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueQueryFactoryTest.java View File

@@ -212,11 +212,11 @@ public class IssueQueryFactoryTest {
@Test
public void fail_if_components_and_components_uuid_params_are_set_at_the_same_time() {
SearchRequest request = new SearchRequest()
.setComponentKeys(asList("foo"))
.setComponentUuids(asList("bar"));
.setComponentKeys(singletonList("foo"))
.setComponentUuids(singletonList("bar"));

expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("At most one of the following parameters can be provided: componentKeys, componentUuids, components, componentRoots, componentUuids");
expectedException.expectMessage("At most one of the following parameters can be provided: componentKeys and componentUuids");

underTest.create(request);
}
@@ -224,11 +224,11 @@ public class IssueQueryFactoryTest {
@Test
public void fail_if_both_componentRoots_and_componentRootUuids_params_are_set() {
SearchRequest request = new SearchRequest()
.setComponentRoots(asList("foo"))
.setComponentRootUuids(asList("bar"));
.setComponentRoots(singletonList("foo"))
.setComponentRootUuids(singletonList("bar"));

expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("At most one of the following parameters can be provided: componentKeys, componentUuids, components, componentRoots, componentUuids");
expectedException.expectMessage("At most one of the following parameters can be provided: componentKeys and componentUuids");

underTest.create(request);
}

+ 2
- 17
server/sonar-server/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java View File

@@ -38,9 +38,9 @@ import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.exceptions.UnauthorizedException;
import org.sonar.server.issue.IssueFieldsSetter;
import org.sonar.server.issue.IssueFinder;
import org.sonar.server.issue.WebIssueStorage;
import org.sonar.server.issue.IssueUpdater;
import org.sonar.server.issue.TestIssueChangePostProcessor;
import org.sonar.server.issue.WebIssueStorage;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.issue.index.IssueIteratorFactory;
import org.sonar.server.notification.NotificationManager;
@@ -123,21 +123,6 @@ public class AssignActionTest {
assertThat(issueChangePostProcessor.wasCalled()).isFalse();
}

@Test
public void assign_to_me_using_deprecated_me_param() {
IssueDto issue = newIssueWithBrowsePermission();

ws.newRequest()
.setParam("issue", issue.getKey())
.setParam("me", "true")
.execute();

checkIssueAssignee(issue.getKey(), CURRENT_USER_UUID);
Optional<IssueDto> optionalIssueDto = dbClient.issueDao().selectByKey(session, issue.getKey());
assertThat(optionalIssueDto).isPresent();
assertThat(optionalIssueDto.get().getAssigneeUuid()).isEqualTo(CURRENT_USER_UUID);
}

@Test
public void unassign() {
IssueDto issue = newIssueWithBrowsePermission();
@@ -205,7 +190,7 @@ public class AssignActionTest {
UserDto arthur = insertUser("arthur");

expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("It is not allowed to assign a security hotspot");
expectedException.expectMessage("Assigning security hotspots is not allowed");

ws.newRequest()
.setParam("issue", issueDto.getKey())

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java View File

@@ -649,7 +649,7 @@ public class BulkChangeActionTest {
assertThat(action.key()).isEqualTo("bulk_change");
assertThat(action.isPost()).isTrue();
assertThat(action.isInternal()).isFalse();
assertThat(action.params()).hasSize(10);
assertThat(action.params()).hasSize(9);
assertThat(action.responseExample()).isNotNull();
}


+ 2
- 3
server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionComponentsTest.java View File

@@ -75,7 +75,6 @@ import static org.sonar.db.component.ComponentTesting.newSubView;
import static org.sonar.db.component.ComponentTesting.newView;
import static org.sonar.db.issue.IssueTesting.newIssue;
import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_BRANCH;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_KEYS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_UUIDS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_DIRECTORIES;
@@ -289,12 +288,12 @@ public class SearchActionComponentsTest {
indexIssues();

ws.newRequest()
.setParam(PARAM_COMPONENTS, file.getDbKey())
.setParam(PARAM_COMPONENT_KEYS, file.getKey())
.execute()
.assertJson(this.getClass(), "search_by_file_key.json");

ws.newRequest()
.setParam(PARAM_COMPONENTS, unitTest.getDbKey())
.setParam(PARAM_COMPONENT_KEYS, unitTest.getKey())
.execute()
.assertJson(this.getClass(), "search_by_test_key.json");
}

+ 3
- 3
server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionTest.java View File

@@ -92,7 +92,7 @@ import static org.sonar.db.issue.IssueTesting.newDto;
import static org.sonar.server.tester.UserSessionRule.standalone;
import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_BRANCH;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_ADDITIONAL_FIELDS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_COMPONENT_KEYS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_CREATED_AFTER;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_HIDE_COMMENTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PAGE_INDEX;
@@ -430,7 +430,7 @@ public class SearchActionTest {
session.commit();
indexIssues();

ws.newRequest().setParam(PARAM_COMPONENTS, file.getDbKey()).execute()
ws.newRequest().setParam(PARAM_COMPONENT_KEYS, file.getKey()).execute()
.assertJson(this.getClass(), "apply_paging_with_one_component.json");
}

@@ -850,7 +850,7 @@ public class SearchActionTest {
assertThat(def.responseExampleAsString()).isNotEmpty();

assertThat(def.params()).extracting("key").containsExactlyInAnyOrder(
"additionalFields", "asc", "assigned", "assignees", "authors", "author", "componentKeys", "componentRootUuids", "componentRoots", "componentUuids", "components", "branch",
"additionalFields", "asc", "assigned", "assignees", "authors", "author", "componentKeys", "componentUuids", "branch",
"pullRequest", "organization",
"createdAfter", "createdAt", "createdBefore", "createdInLast", "directories", "facetMode", "facets", "fileUuids", "issues", "languages", "moduleUuids", "onComponentOnly",
"p", "projects", "ps", "resolutions", "resolved", "rules", "s", "severities", "sinceLeakPeriod",

+ 0
- 73
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProfilesWsTest.java View File

@@ -1,73 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.qualityprofile.ws;

import org.junit.Before;
import org.junit.Test;
import org.sonar.api.server.ws.WebService;
import org.sonar.server.ws.RemovedWebServiceHandler;
import org.sonar.server.ws.WsTester;

import static org.assertj.core.api.Assertions.assertThat;

public class ProfilesWsTest {

private WsTester ws;

@Before
public void setUp() {
ws = new WsTester(new ProfilesWs());
}

@Test
public void define_controller() {
WebService.Controller controller = controller();
assertThat(controller).isNotNull();
assertThat(controller.path()).isEqualTo("api/profiles");
assertThat(controller.description()).isNotEmpty();
assertThat(controller.actions()).hasSize(2);
}

@Test
public void define_index_action() {
WebService.Controller controller = ws.controller("api/profiles");

WebService.Action restoreProfiles = controller.action("index");
assertThat(restoreProfiles).isNotNull();
assertThat(restoreProfiles.handler()).isInstanceOf(RemovedWebServiceHandler.class);
assertThat(restoreProfiles.responseExampleAsString()).isNotEmpty();
assertThat(restoreProfiles.params()).isEmpty();
}

@Test
public void define_list_action() {
WebService.Controller controller = controller();

WebService.Action listProfiles = controller.action("list");
assertThat(listProfiles).isNotNull();
assertThat(listProfiles.handler()).isInstanceOf(RemovedWebServiceHandler.class);
assertThat(listProfiles.responseExampleAsString()).isNotEmpty();
assertThat(listProfiles.params()).isEmpty();
}

private WebService.Controller controller() {
return ws.controller("api/profiles");
}
}

+ 1
- 45
server/sonar-server/src/test/java/org/sonar/server/rule/ws/UpdateActionTest.java View File

@@ -32,7 +32,6 @@ import org.sonar.db.DbTester;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.rule.RuleMetadataDto;
import org.sonar.db.rule.RuleTesting;
import org.sonar.db.user.UserDto;
import org.sonar.server.es.EsClient;
import org.sonar.server.es.EsTester;
@@ -60,9 +59,6 @@ import static org.sonar.api.server.debt.DebtRemediationFunction.Type.LINEAR_OFFS
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.db.rule.RuleTesting.setSystemTags;
import static org.sonar.db.rule.RuleTesting.setTags;
import static org.sonar.server.rule.ws.UpdateAction.DEPRECATED_PARAM_REMEDIATION_FN_COEFF;
import static org.sonar.server.rule.ws.UpdateAction.DEPRECATED_PARAM_REMEDIATION_FN_OFFSET;
import static org.sonar.server.rule.ws.UpdateAction.DEPRECATED_PARAM_REMEDIATION_FN_TYPE;
import static org.sonar.server.rule.ws.UpdateAction.PARAM_KEY;
import static org.sonar.server.rule.ws.UpdateAction.PARAM_MARKDOWN_NOTE;
import static org.sonar.server.rule.ws.UpdateAction.PARAM_ORGANIZATION;
@@ -106,7 +102,7 @@ public class UpdateActionTest {
assertThat(ws.getDef().responseExampleAsString()).isNotNull();
assertThat(ws.getDef().description()).isNotNull();
}
@Test
public void update_custom_rule() {
logInAsQProfileAdministrator();
@@ -249,46 +245,6 @@ public class UpdateActionTest {
assertThat(metadataOfSpecificOrg.getRemediationBaseEffort()).isEqualTo(newEffort);
}

@Test
public void update_custom_rule_with_deprecated_remediation_function_parameters() {
logInAsQProfileAdministrator();

RuleDefinitionDto rule = RuleTesting.newRule()
.setDefRemediationFunction(LINEAR_OFFSET.toString())
.setDefRemediationGapMultiplier("10d")
.setDefRemediationBaseEffort("5min");
db.rules().insert(rule);

String newType = LINEAR_OFFSET.toString();
String newCoeff = "11d";
String newOffset = "6min";

Rules.UpdateResponse result = ws.newRequest().setMethod("POST")
.setParam(PARAM_KEY, rule.getKey().toString())
.setParam(DEPRECATED_PARAM_REMEDIATION_FN_TYPE, newType)
.setParam(DEPRECATED_PARAM_REMEDIATION_FN_COEFF, newCoeff)
.setParam(DEPRECATED_PARAM_REMEDIATION_FN_OFFSET, newOffset)
.executeProtobuf(Rules.UpdateResponse.class);

Rules.Rule updatedRule = result.getRule();
assertThat(updatedRule).isNotNull();

assertThat(updatedRule.getKey()).isEqualTo(rule.getKey().toString());
assertThat(updatedRule.getDefaultRemFnType()).isEqualTo(rule.getDefRemediationFunction());
assertThat(updatedRule.getDefaultRemFnGapMultiplier()).isEqualTo(rule.getDefRemediationGapMultiplier());
assertThat(updatedRule.getDefaultRemFnBaseEffort()).isEqualTo(rule.getDefRemediationBaseEffort());
assertThat(updatedRule.getEffortToFixDescription()).isEqualTo(rule.getGapDescription());

assertThat(updatedRule.getRemFnType()).isEqualTo(newType);
assertThat(updatedRule.getDebtRemFnCoeff()).isEqualTo(newCoeff);
assertThat(updatedRule.getDebtRemFnOffset()).isEqualTo(newOffset);

assertThat(updatedRule.getRemFnType()).isEqualTo(newType);
assertThat(updatedRule.getRemFnGapMultiplier()).isEqualTo(newCoeff);
assertThat(updatedRule.getRemFnBaseEffort()).isEqualTo(newOffset);
assertThat(updatedRule.getGapDescription()).isEqualTo(rule.getGapDescription());
}

@Test
public void update_note() {
OrganizationDto organization = db.organizations().insert();

+ 9
- 0
server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java View File

@@ -24,6 +24,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.AlwaysIncreasingSystem2;
import org.sonar.db.DbTester;
@@ -196,6 +197,14 @@ public class ChangePasswordActionTest {
.execute();
}

@Test
public void test_definition() {
WebService.Action action = tester.getDef();
assertThat(action).isNotNull();
assertThat(action.isPost()).isTrue();
assertThat(action.params()).hasSize(3);
}

private void createLocalUser() {
db.users().insertUser(newLocalUser("john", "John", "john@email.com"));
}

+ 9
- 0
server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java View File

@@ -27,6 +27,7 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.ArgumentCaptor;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.AlwaysIncreasingSystem2;
import org.sonar.core.config.CorePropertyDefinitions;
@@ -379,6 +380,14 @@ public class CreateActionTest {
executeRequest("john");
}

@Test
public void test_definition() {
WebService.Action action = tester.getDef();
assertThat(action).isNotNull();
assertThat(action.isPost()).isTrue();
assertThat(action.params()).hasSize(7);
}

private CreateWsResponse executeRequest(String login) {
return call(CreateRequest.builder()
.setLogin(login)

+ 18
- 41
server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java View File

@@ -22,6 +22,7 @@ package org.sonar.server.user.ws;
import java.util.stream.IntStream;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.server.ws.WebService.Param;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
@@ -289,51 +290,18 @@ public class SearchActionTest {
userSession.logIn(user);
assertThat(ws.newRequest().setParam("q", user.getLogin())
.executeProtobuf(SearchWsResponse.class).getUsersList())
.extracting(User::getLogin, User::getName, User::getEmail, User::getExternalIdentity, User::getExternalProvider,
User::hasScmAccounts, User::hasAvatar, User::hasGroups, User::getTokensCount, User::hasLastConnectionDate)
.containsExactlyInAnyOrder(
tuple(user.getLogin(), user.getName(), user.getEmail(), user.getExternalLogin(), user.getExternalIdentityProvider(), true, true, true, 2, true));
.extracting(User::getLogin, User::getName, User::getEmail, User::getExternalIdentity, User::getExternalProvider,
User::hasScmAccounts, User::hasAvatar, User::hasGroups, User::getTokensCount, User::hasLastConnectionDate)
.containsExactlyInAnyOrder(
tuple(user.getLogin(), user.getName(), user.getEmail(), user.getExternalLogin(), user.getExternalIdentityProvider(), true, true, true, 2, true));

userSession.logIn(otherUser);
assertThat(ws.newRequest().setParam("q", user.getLogin())
.executeProtobuf(SearchWsResponse.class).getUsersList())
.extracting(User::getLogin, User::getName, User::hasEmail, User::hasExternalIdentity, User::hasExternalProvider,
User::hasScmAccounts, User::hasAvatar, User::hasGroups, User::hasTokensCount, User::hasLastConnectionDate)
.containsExactlyInAnyOrder(
tuple(user.getLogin(), user.getName(), false, false, true, true, true, false, false, false));
}

@Test
public void search_with_fields() {
UserDto user = db.users().insertUser();
GroupDto group = db.users().insertGroup(db.getDefaultOrganization());
db.users().insertMember(group, user);
userIndexer.indexOnStartup(null);
userSession.logIn().setSystemAdministrator();

assertThat(ws.newRequest()
.setParam(Param.FIELDS, "scmAccounts")
.executeProtobuf(SearchWsResponse.class)
.getUsersList())
.extracting(User::getLogin, User::hasName, User::hasScmAccounts, User::hasAvatar, User::hasGroups)
.containsExactlyInAnyOrder(tuple(user.getLogin(), false, true, false, false));
assertThat(ws.newRequest()
.setParam(Param.FIELDS, "groups")
.executeProtobuf(SearchWsResponse.class)
.getUsersList())
.extracting(User::getLogin, User::hasName, User::hasScmAccounts, User::hasAvatar, User::hasGroups)
.containsExactlyInAnyOrder(tuple(user.getLogin(), false, false, false, true));
assertThat(ws.newRequest()
.setParam(Param.FIELDS, "")
.executeProtobuf(SearchWsResponse.class)
.getUsersList())
.extracting(User::getLogin, User::hasName, User::hasScmAccounts, User::hasAvatar, User::hasGroups)
.containsExactlyInAnyOrder(tuple(user.getLogin(), true, true, true, true));
assertThat(ws.newRequest()
.executeProtobuf(SearchWsResponse.class)
.getUsersList())
.extracting(User::getLogin, User::hasName, User::hasScmAccounts, User::hasAvatar, User::hasGroups)
.containsExactlyInAnyOrder(tuple(user.getLogin(), true, true, true, true));
.extracting(User::getLogin, User::getName, User::hasEmail, User::hasExternalIdentity, User::hasExternalProvider,
User::hasScmAccounts, User::hasAvatar, User::hasGroups, User::hasTokensCount, User::hasLastConnectionDate)
.containsExactlyInAnyOrder(
tuple(user.getLogin(), user.getName(), false, false, true, true, true, false, false, false));
}

@Test
@@ -404,4 +372,13 @@ public class SearchActionTest {
assertJson(response).isSimilarTo(getClass().getResource("search-example.json"));
}

@Test
public void test_definition() {
WebService.Action action = ws.getDef();
assertThat(action).isNotNull();
assertThat(action.isPost()).isFalse();
assertThat(action.responseExampleAsString()).isNotEmpty();
assertThat(action.params()).hasSize(3);
}

}

+ 9
- 0
server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java View File

@@ -25,6 +25,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -273,6 +274,14 @@ public class UpdateActionTest {
.execute();
}

@Test
public void test_definition() {
WebService.Action action = ws.getDef();
assertThat(action).isNotNull();
assertThat(action.isPost()).isTrue();
assertThat(action.params()).hasSize(5);
}

private void createUser() {
UserDto userDto = newUserDto()
.setEmail("john@email.com")

+ 0
- 98
server/sonar-server/src/test/java/org/sonar/server/user/ws/UsersWsTest.java View File

@@ -1,98 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.user.ws;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.server.ws.WebService;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.server.authentication.CredentialsLocalAuthentication;
import org.sonar.server.issue.ws.AvatarResolver;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.user.UserUpdater;
import org.sonar.server.user.index.UserIndex;
import org.sonar.server.ws.WsTester;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;

public class UsersWsTest {
@Rule
public UserSessionRule userSessionRule = UserSessionRule.standalone();
@Rule
public DbTester db = DbTester.create();

private WebService.Controller controller;
private CredentialsLocalAuthentication localAuthentication = new CredentialsLocalAuthentication(db.getDbClient());

@Before
public void setUp() {
WsTester tester = new WsTester(new UsersWs(
new CreateAction(mock(DbClient.class), mock(UserUpdater.class), userSessionRule),
new UpdateAction(mock(UserUpdater.class), userSessionRule, mock(UserJsonWriter.class), mock(DbClient.class)),
new ChangePasswordAction(mock(DbClient.class), mock(UserUpdater.class), userSessionRule, localAuthentication),
new SearchAction(userSessionRule, mock(UserIndex.class), mock(DbClient.class), mock(AvatarResolver.class))));
controller = tester.controller("api/users");
}

@Test
public void define_controller() {
assertThat(controller).isNotNull();
assertThat(controller.description()).isNotEmpty();
assertThat(controller.since()).isEqualTo("3.6");
assertThat(controller.actions()).hasSize(4);
}

@Test
public void define_search_action() {
WebService.Action action = controller.action("search");
assertThat(action).isNotNull();
assertThat(action.isPost()).isFalse();
assertThat(action.responseExampleAsString()).isNotEmpty();
assertThat(action.params()).hasSize(4);
}

@Test
public void define_create_action() {
WebService.Action action = controller.action("create");
assertThat(action).isNotNull();
assertThat(action.isPost()).isTrue();
assertThat(action.params()).hasSize(7);
}

@Test
public void define_update_action() {
WebService.Action action = controller.action("update");
assertThat(action).isNotNull();
assertThat(action.isPost()).isTrue();
assertThat(action.params()).hasSize(5);
}

@Test
public void define_change_password_action() {
WebService.Action action = controller.action("change_password");
assertThat(action).isNotNull();
assertThat(action.isPost()).isTrue();
assertThat(action.params()).hasSize(3);
}

}

+ 0
- 16
sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java View File

@@ -44,7 +44,6 @@ import org.sonarqube.ws.client.notifications.NotificationsService;
import org.sonarqube.ws.client.organizations.OrganizationsService;
import org.sonarqube.ws.client.permissions.PermissionsService;
import org.sonarqube.ws.client.plugins.PluginsService;
import org.sonarqube.ws.client.profiles.ProfilesService;
import org.sonarqube.ws.client.projectanalyses.ProjectAnalysesService;
import org.sonarqube.ws.client.projectbadges.ProjectBadgesService;
import org.sonarqube.ws.client.projectbranches.ProjectBranchesService;
@@ -56,7 +55,6 @@ import org.sonarqube.ws.client.projecttags.ProjectTagsService;
import org.sonarqube.ws.client.properties.PropertiesService;
import org.sonarqube.ws.client.qualitygates.QualitygatesService;
import org.sonarqube.ws.client.qualityprofiles.QualityprofilesService;
import org.sonarqube.ws.client.resources.ResourcesService;
import org.sonarqube.ws.client.roots.RootsService;
import org.sonarqube.ws.client.rules.RulesService;
import org.sonarqube.ws.client.securityreports.SecurityReportsService;
@@ -109,7 +107,6 @@ class DefaultWsClient implements WsClient {
private final OrganizationsService organizationsService;
private final PermissionsService permissionsService;
private final PluginsService pluginsService;
private final ProfilesService profilesService;
private final ProjectAnalysesService projectAnalysesService;
private final ProjectBadgesService projectBadgesService;
private final ProjectBranchesService projectBranchesService;
@@ -121,7 +118,6 @@ class DefaultWsClient implements WsClient {
private final PropertiesService propertiesService;
private final QualitygatesService qualitygatesService;
private final QualityprofilesService qualityprofilesService;
private final ResourcesService resourcesService;
private final RootsService rootsService;
private final RulesService rulesService;
private final ServerService serverService;
@@ -167,7 +163,6 @@ class DefaultWsClient implements WsClient {
this.organizationsService = new OrganizationsService(wsConnector);
this.permissionsService = new PermissionsService(wsConnector);
this.pluginsService = new PluginsService(wsConnector);
this.profilesService = new ProfilesService(wsConnector);
this.projectAnalysesService = new ProjectAnalysesService(wsConnector);
this.projectBadgesService = new ProjectBadgesService(wsConnector);
this.projectBranchesService = new ProjectBranchesService(wsConnector);
@@ -179,7 +174,6 @@ class DefaultWsClient implements WsClient {
this.propertiesService = new PropertiesService(wsConnector);
this.qualitygatesService = new QualitygatesService(wsConnector);
this.qualityprofilesService = new QualityprofilesService(wsConnector);
this.resourcesService = new ResourcesService(wsConnector);
this.rootsService = new RootsService(wsConnector);
this.rulesService = new RulesService(wsConnector);
this.serverService = new ServerService(wsConnector);
@@ -321,11 +315,6 @@ class DefaultWsClient implements WsClient {
return pluginsService;
}

@Override
public ProfilesService profiles() {
return profilesService;
}

@Override
public ProjectAnalysesService projectAnalyses() {
return projectAnalysesService;
@@ -381,11 +370,6 @@ class DefaultWsClient implements WsClient {
return qualityprofilesService;
}

@Override
public ResourcesService resources() {
return resourcesService;
}

@Override
public RootsService roots() {
return rootsService;

+ 0
- 6
sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java View File

@@ -44,7 +44,6 @@ import org.sonarqube.ws.client.notifications.NotificationsService;
import org.sonarqube.ws.client.organizations.OrganizationsService;
import org.sonarqube.ws.client.permissions.PermissionsService;
import org.sonarqube.ws.client.plugins.PluginsService;
import org.sonarqube.ws.client.profiles.ProfilesService;
import org.sonarqube.ws.client.projectanalyses.ProjectAnalysesService;
import org.sonarqube.ws.client.projectbadges.ProjectBadgesService;
import org.sonarqube.ws.client.projectbranches.ProjectBranchesService;
@@ -56,7 +55,6 @@ import org.sonarqube.ws.client.projecttags.ProjectTagsService;
import org.sonarqube.ws.client.properties.PropertiesService;
import org.sonarqube.ws.client.qualitygates.QualitygatesService;
import org.sonarqube.ws.client.qualityprofiles.QualityprofilesService;
import org.sonarqube.ws.client.resources.ResourcesService;
import org.sonarqube.ws.client.roots.RootsService;
import org.sonarqube.ws.client.rules.RulesService;
import org.sonarqube.ws.client.securityreports.SecurityReportsService;
@@ -144,8 +142,6 @@ public interface WsClient {

PluginsService plugins();

ProfilesService profiles();

ProjectAnalysesService projectAnalyses();

ProjectBadgesService projectBadges();
@@ -168,8 +164,6 @@ public interface WsClient {

QualityprofilesService qualityprofiles();

ResourcesService resources();

RootsService roots();

RulesService rules();

+ 0
- 29
sonar-ws/src/main/java/org/sonarqube/ws/client/ce/ActivityRequest.java View File

@@ -32,11 +32,9 @@ import javax.annotation.Generated;
public class ActivityRequest {

private String componentId;
private String componentQuery;
private String maxExecutedAt;
private String minSubmittedAt;
private String onlyCurrents;
private String p;
private String ps;
private String q;
private List<String> status;
@@ -54,20 +52,6 @@ public class ActivityRequest {
return componentId;
}

/**
* Example value: "Apache"
* @deprecated since 5.5
*/
@Deprecated
public ActivityRequest setComponentQuery(String componentQuery) {
this.componentQuery = componentQuery;
return this;
}

public String getComponentQuery() {
return componentQuery;
}

/**
* Example value: "2017-10-19T13:00:00+0200"
*/
@@ -110,19 +94,6 @@ public class ActivityRequest {
return onlyCurrents;
}

/**
* @deprecated since 5.5
*/
@Deprecated
public ActivityRequest setP(String p) {
this.p = p;
return this;
}

public String getP() {
return p;
}

/**
* Example value: "20"
*/

+ 0
- 2
sonar-ws/src/main/java/org/sonarqube/ws/client/ce/CeService.java View File

@@ -57,11 +57,9 @@ public class CeService extends BaseService {
return call(
new GetRequest(path("activity"))
.setParam("componentId", request.getComponentId())
.setParam("componentQuery", request.getComponentQuery())
.setParam("maxExecutedAt", request.getMaxExecutedAt())
.setParam("minSubmittedAt", request.getMinSubmittedAt())
.setParam("onlyCurrents", request.getOnlyCurrents())
.setParam("p", request.getP())
.setParam("ps", request.getPs())
.setParam("q", request.getQ())
.setParam("status", request.getStatus() == null ? null : request.getStatus().stream().collect(Collectors.joining(",")))

+ 0
- 22
sonar-ws/src/main/java/org/sonarqube/ws/client/issue/IssuesWsParameters.java View File

@@ -52,11 +52,8 @@ public class IssuesWsParameters {
public static final String PARAM_STATUSES = "statuses";
public static final String PARAM_RESOLUTIONS = "resolutions";
public static final String PARAM_RESOLVED = "resolved";
public static final String PARAM_COMPONENTS = "components";
public static final String PARAM_COMPONENT_KEYS = "componentKeys";
public static final String PARAM_COMPONENT_UUIDS = "componentUuids";
public static final String PARAM_COMPONENT_ROOTS = "componentRoots";
public static final String PARAM_COMPONENT_ROOT_UUIDS = "componentRootUuids";
public static final String PARAM_MODULE_UUIDS = "moduleUuids";
public static final String PARAM_PROJECTS = "projects";
public static final String PARAM_PROJECT_KEYS = "projectKeys";
@@ -70,23 +67,10 @@ public class IssuesWsParameters {
public static final String PARAM_ASSIGN = "assign";
public static final String PARAM_SET_SEVERITY = "set_severity";
public static final String PARAM_SET_TYPE = "set_type";
public static final String PARAM_PLAN = "plan";
public static final String PARAM_DO_TRANSITION = "do_transition";
public static final String PARAM_ADD_TAGS = "add_tags";
public static final String PARAM_REMOVE_TAGS = "remove_tags";
public static final String PARAM_SEND_NOTIFICATIONS = "sendNotifications";

/**
* @deprecated since 5.5, action plan feature has been removed
*/
@Deprecated
public static final String DEPRECATED_PARAM_ACTION_PLANS = "actionPlans";

/**
* @deprecated since 5.5, manual issue feature has been dropped.
*/
@Deprecated
public static final String PARAM_REPORTERS = "reporters";
public static final String PARAM_ASSIGNEES = "assignees";

/**
@@ -103,12 +87,6 @@ public class IssuesWsParameters {
public static final String PARAM_SANS_TOP_25 = "sansTop25";
public static final String PARAM_CWE = "cwe";
public static final String PARAM_ASSIGNED = "assigned";

/**
* @deprecated since 5.5, action plan feature has been removed
*/
@Deprecated
public static final String PARAM_PLANNED = "planned";
public static final String PARAM_HIDE_COMMENTS = "hideComments";
public static final String PARAM_CREATED_AFTER = "createdAfter";
public static final String PARAM_CREATED_AT = "createdAt";

+ 0
- 21
sonar-ws/src/main/java/org/sonarqube/ws/client/issues/AssignRequest.java View File

@@ -19,7 +19,6 @@
*/
package org.sonarqube.ws.client.issues;

import java.util.List;
import javax.annotation.Generated;

/**
@@ -33,7 +32,6 @@ public class AssignRequest {

private String assignee;
private String issue;
private String me;

/**
* Example value: "admin"
@@ -60,23 +58,4 @@ public class AssignRequest {
return issue;
}

/**
* Possible values:
* <ul>
* <li>"true"</li>
* <li>"false"</li>
* <li>"yes"</li>
* <li>"no"</li>
* </ul>
* @deprecated since 5.2
*/
@Deprecated
public AssignRequest setMe(String me) {
this.me = me;
return this;
}

public String getMe() {
return me;
}
}

+ 0
- 14
sonar-ws/src/main/java/org/sonarqube/ws/client/issues/BulkChangeRequest.java View File

@@ -36,7 +36,6 @@ public class BulkChangeRequest {
private List<String> comment;
private String doTransition;
private List<String> issues;
private List<String> plan;
private String removeTags;
private String sendNotifications;
private List<String> setSeverity;
@@ -113,19 +112,6 @@ public class BulkChangeRequest {
return issues;
}

/**
* @deprecated since 5.5
*/
@Deprecated
public BulkChangeRequest setPlan(List<String> plan) {
this.plan = plan;
return this;
}

public List<String> getPlan() {
return plan;
}

/**
* Example value: "security,java8"
*/

+ 1
- 6
sonar-ws/src/main/java/org/sonarqube/ws/client/issues/IssuesService.java View File

@@ -75,8 +75,7 @@ public class IssuesService extends BaseService {
return call(
new PostRequest(path("assign"))
.setParam("assignee", request.getAssignee())
.setParam("issue", request.getIssue())
.setParam("me", request.getMe()),
.setParam("issue", request.getIssue()),
AssignResponse.parser());
}

@@ -112,7 +111,6 @@ public class IssuesService extends BaseService {
.setParam("comment", request.getComment() == null ? null : request.getComment().stream().collect(Collectors.joining(",")))
.setParam("do_transition", request.getDoTransition())
.setParam("issues", request.getIssues() == null ? null : request.getIssues().stream().collect(Collectors.joining(",")))
.setParam("plan", request.getPlan() == null ? null : request.getPlan().stream().collect(Collectors.joining(",")))
.setParam("remove_tags", request.getRemoveTags())
.setParam("sendNotifications", request.getSendNotifications())
.setParam("set_severity", request.getSetSeverity() == null ? null : request.getSetSeverity().stream().collect(Collectors.joining(",")))
@@ -214,10 +212,7 @@ public class IssuesService extends BaseService {
.setParam("authors", request.getAuthors() == null ? null : request.getAuthors().stream().collect(Collectors.joining(",")))
.setParam("branch", request.getBranch())
.setParam("componentKeys", request.getComponentKeys() == null ? null : request.getComponentKeys().stream().collect(Collectors.joining(",")))
.setParam("componentRootUuids", request.getComponentRootUuids())
.setParam("componentRoots", request.getComponentRoots())
.setParam("componentUuids", request.getComponentUuids() == null ? null : request.getComponentUuids().stream().collect(Collectors.joining(",")))
.setParam("components", request.getComponents())
.setParam("createdAfter", request.getCreatedAfter())
.setParam("createdAt", request.getCreatedAt())
.setParam("createdBefore", request.getCreatedBefore())

+ 0
- 42
sonar-ws/src/main/java/org/sonarqube/ws/client/issues/SearchRequest.java View File

@@ -39,10 +39,7 @@ public class SearchRequest {
private List<String> authors;
private String branch;
private List<String> componentKeys;
private String componentRootUuids;
private String componentRoots;
private List<String> componentUuids;
private String components;
private String createdAfter;
private String createdAt;
private String createdBefore;
@@ -194,32 +191,6 @@ public class SearchRequest {
return componentKeys;
}

/**
* @deprecated since 5.1
*/
@Deprecated
public SearchRequest setComponentRootUuids(String componentRootUuids) {
this.componentRootUuids = componentRootUuids;
return this;
}

public String getComponentRootUuids() {
return componentRootUuids;
}

/**
* @deprecated since 5.1
*/
@Deprecated
public SearchRequest setComponentRoots(String componentRoots) {
this.componentRoots = componentRoots;
return this;
}

public String getComponentRoots() {
return componentRoots;
}

/**
* Example value: "584a89f2-8037-4f7b-b82c-8b45d2d63fb2"
* @deprecated since 6.5
@@ -234,19 +205,6 @@ public class SearchRequest {
return componentUuids;
}

/**
* @deprecated since 5.1
*/
@Deprecated
public SearchRequest setComponents(String components) {
this.components = components;
return this;
}

public String getComponents() {
return components;
}

/**
* Example value: "2017-10-19 or 2017-10-19T13:00:00+0200"
*/

+ 0
- 71
sonar-ws/src/main/java/org/sonarqube/ws/client/profiles/ProfilesService.java View File

@@ -1,71 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonarqube.ws.client.profiles;

import java.util.stream.Collectors;
import javax.annotation.Generated;
import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.client.BaseService;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.PostRequest;
import org.sonarqube.ws.client.WsConnector;

/**
* @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/profiles">Further information about this web service online</a>
*/
@Generated("sonar-ws-generator")
public class ProfilesService extends BaseService {

public ProfilesService(WsConnector wsConnector) {
super(wsConnector, "api/profiles");
}

/**
*
* This is part of the internal API.
* This is a GET request.
* @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/profiles/index">Further information about this action online (including a response example)</a>
* @since 3.3
* @deprecated since 5.2
*/
@Deprecated
public String index() {
return call(
new GetRequest(path("index"))
.setMediaType(MediaTypes.JSON)
).content();
}

/**
*
* This is part of the internal API.
* This is a GET request.
* @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/profiles/list">Further information about this action online (including a response example)</a>
* @since 3.3
* @deprecated since 5.2
*/
@Deprecated
public String list() {
return call(
new GetRequest(path("list"))
.setMediaType(MediaTypes.JSON)
).content();
}
}

+ 0
- 26
sonar-ws/src/main/java/org/sonarqube/ws/client/profiles/package-info.java View File

@@ -1,26 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
@ParametersAreNonnullByDefault
@Generated("sonar-ws-generator")
package org.sonarqube.ws.client.profiles;

import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.Generated;


+ 0
- 53
sonar-ws/src/main/java/org/sonarqube/ws/client/resources/ResourcesService.java View File

@@ -1,53 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonarqube.ws.client.resources;

import javax.annotation.Generated;
import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.client.BaseService;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.WsConnector;

/**
* @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/resources">Further information about this web service online</a>
*/
@Generated("sonar-ws-generator")
public class ResourcesService extends BaseService {

public ResourcesService(WsConnector wsConnector) {
super(wsConnector, "api/resources");
}

/**
*
* This is part of the internal API.
* This is a GET request.
* @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/resources/index">Further information about this action online (including a response example)</a>
* @since 2.10
* @deprecated since 5.4
*/
@Deprecated
public String index() {
return call(
new GetRequest(path("index"))
.setMediaType(MediaTypes.JSON)
).content();
}
}

+ 0
- 26
sonar-ws/src/main/java/org/sonarqube/ws/client/resources/package-info.java View File

@@ -1,26 +0,0 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
@ParametersAreNonnullByDefault
@Generated("sonar-ws-generator")
package org.sonarqube.ws.client.resources;

import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.Generated;


+ 0
- 15
sonar-ws/src/main/java/org/sonarqube/ws/client/rules/CreateRequest.java View File

@@ -32,7 +32,6 @@ import javax.annotation.Generated;
public class CreateRequest {

private String customKey;
private String manualKey;
private String markdownDescription;
private String name;
private List<String> params;
@@ -55,20 +54,6 @@ public class CreateRequest {
return customKey;
}

/**
* Example value: "Error_handling"
* @deprecated since 5.5
*/
@Deprecated
public CreateRequest setManualKey(String manualKey) {
this.manualKey = manualKey;
return this;
}

public String getManualKey() {
return manualKey;
}

/**
* This is a mandatory parameter.
* Example value: "Description of my custom rule"

+ 4
- 9
sonar-ws/src/main/java/org/sonarqube/ws/client/rules/RulesService.java View File

@@ -22,15 +22,15 @@ package org.sonarqube.ws.client.rules;
import java.util.stream.Collectors;
import javax.annotation.Generated;
import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.client.BaseService;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.PostRequest;
import org.sonarqube.ws.client.WsConnector;
import org.sonarqube.ws.Rules.CreateResponse;
import org.sonarqube.ws.Rules.ListResponse;
import org.sonarqube.ws.Rules.SearchResponse;
import org.sonarqube.ws.Rules.ShowResponse;
import org.sonarqube.ws.Rules.UpdateResponse;
import org.sonarqube.ws.client.BaseService;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.PostRequest;
import org.sonarqube.ws.client.WsConnector;

/**
* @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/rules">Further information about this web service online</a>
@@ -68,7 +68,6 @@ public class RulesService extends BaseService {
call(
new PostRequest(path("create"))
.setParam("custom_key", request.getCustomKey())
.setParam("manual_key", request.getManualKey())
.setParam("markdown_description", request.getMarkdownDescription())
.setParam("name", request.getName())
.setParam("params", request.getParams() == null ? null : request.getParams().stream().collect(Collectors.joining(",")))
@@ -204,10 +203,6 @@ public class RulesService extends BaseService {
public void update(UpdateRequest request) {
call(
new PostRequest(path("update"))
.setParam("debt_remediation_fn_offset", request.getDebtRemediationFnOffset())
.setParam("debt_remediation_fn_type", request.getDebtRemediationFnType())
.setParam("debt_remediation_fy_coeff", request.getDebtRemediationFyCoeff())
.setParam("debt_sub_characteristic", request.getDebtSubCharacteristic())
.setParam("key", request.getKey())
.setParam("markdown_description", request.getMarkdownDescription())
.setParam("markdown_note", request.getMarkdownNote())

+ 0
- 62
sonar-ws/src/main/java/org/sonarqube/ws/client/rules/UpdateRequest.java View File

@@ -31,10 +31,6 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class UpdateRequest {

private String debtRemediationFnOffset;
private String debtRemediationFnType;
private String debtRemediationFyCoeff;
private String debtSubCharacteristic;
private String key;
private String markdownDescription;
private String markdownNote;
@@ -48,64 +44,6 @@ public class UpdateRequest {
private String status;
private List<String> tags;

/**
* @deprecated since 5.5
*/
@Deprecated
public UpdateRequest setDebtRemediationFnOffset(String debtRemediationFnOffset) {
this.debtRemediationFnOffset = debtRemediationFnOffset;
return this;
}

public String getDebtRemediationFnOffset() {
return debtRemediationFnOffset;
}

/**
* Possible values:
* <ul>
* <li>"LINEAR"</li>
* <li>"LINEAR_OFFSET"</li>
* <li>"CONSTANT_ISSUE"</li>
* </ul>
* @deprecated since 5.5
*/
@Deprecated
public UpdateRequest setDebtRemediationFnType(String debtRemediationFnType) {
this.debtRemediationFnType = debtRemediationFnType;
return this;
}

public String getDebtRemediationFnType() {
return debtRemediationFnType;
}

/**
* @deprecated since 5.5
*/
@Deprecated
public UpdateRequest setDebtRemediationFyCoeff(String debtRemediationFyCoeff) {
this.debtRemediationFyCoeff = debtRemediationFyCoeff;
return this;
}

public String getDebtRemediationFyCoeff() {
return debtRemediationFyCoeff;
}

/**
* @deprecated since 5.5
*/
@Deprecated
public UpdateRequest setDebtSubCharacteristic(String debtSubCharacteristic) {
this.debtSubCharacteristic = debtSubCharacteristic;
return this;
}

public String getDebtSubCharacteristic() {
return debtSubCharacteristic;
}

/**
* This is a mandatory parameter.
* Example value: "javascript:NullCheck"

+ 0
- 27
sonar-ws/src/main/java/org/sonarqube/ws/client/users/SearchRequest.java View File

@@ -19,7 +19,6 @@
*/
package org.sonarqube.ws.client.users;

import java.util.List;
import javax.annotation.Generated;

/**
@@ -31,36 +30,10 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class SearchRequest {

private List<String> f;
private String p;
private String ps;
private String q;

/**
* Possible values:
* <ul>
* <li>"name"</li>
* <li>"email"</li>
* <li>"avatart"</li>
* <li>"scmAccounts"</li>
* <li>"groups"</li>
* <li>"active"</li>
* <li>"local"</li>
* <li>"externalIdentity"</li>
* <li>"externalProvider"</li>
* </ul>
* @deprecated since 5.4
*/
@Deprecated
public SearchRequest setF(List<String> f) {
this.f = f;
return this;
}

public List<String> getF() {
return f;
}

/**
* Example value: "42"
*/

+ 0
- 1
sonar-ws/src/main/java/org/sonarqube/ws/client/users/UsersService.java View File

@@ -149,7 +149,6 @@ public class UsersService extends BaseService {
public SearchWsResponse search(SearchRequest request) {
return call(
new GetRequest(path("search"))
.setParam("f", request.getF() == null ? null : request.getF().stream().collect(Collectors.joining(",")))
.setParam("p", request.getP())
.setParam("ps", request.getPs())
.setParam("q", request.getQ()),

Loading…
Cancel
Save