You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

WsParameters.java 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2020 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonar.server.permission.ws;
  21. import com.google.common.base.Joiner;
  22. import org.sonar.api.server.ws.WebService;
  23. import org.sonar.core.permission.GlobalPermissions;
  24. import org.sonar.server.permission.PermissionService;
  25. import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
  26. import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
  27. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION;
  28. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
  29. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
  30. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID;
  31. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
  32. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
  33. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY;
  34. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY_PATTERN;
  35. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
  36. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME;
  37. import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_USER_LOGIN;
  38. public class WsParameters {
  39. private final String permissionParamDescription;
  40. private final String projectPermissionParamDescription;
  41. private final PermissionService permissionService;
  42. public WsParameters(PermissionService permissionService) {
  43. this.permissionService = permissionService;
  44. String allProjectsPermissionsOnOneLine = Joiner.on(", ").join(permissionService.getAllProjectPermissions());
  45. permissionParamDescription = String.format("<ul>" +
  46. "<li>Possible values for global permissions: %s</li>" +
  47. "<li>Possible values for project permissions %s</li>" +
  48. "</ul>",
  49. GlobalPermissions.ALL_ON_ONE_LINE,
  50. allProjectsPermissionsOnOneLine);
  51. projectPermissionParamDescription = String.format("Permission" +
  52. "<ul>" +
  53. "<li>Possible values for project permissions %s</li>" +
  54. "</ul>",
  55. allProjectsPermissionsOnOneLine);
  56. }
  57. public WebService.NewParam createPermissionParameter(WebService.NewAction action) {
  58. return createPermissionParameter(action, "Permission.");
  59. }
  60. public WebService.NewParam createPermissionParameter(WebService.NewAction action, String descriptionHeader) {
  61. return action.createParam(PARAM_PERMISSION)
  62. .setDescription(descriptionHeader + permissionParamDescription)
  63. .setRequired(true);
  64. }
  65. public WebService.NewParam createProjectPermissionParameter(WebService.NewAction action, boolean required) {
  66. return action.createParam(PARAM_PERMISSION)
  67. .setDescription(projectPermissionParamDescription)
  68. .setPossibleValues(permissionService.getAllProjectPermissions())
  69. .setRequired(required);
  70. }
  71. public WebService.NewParam createProjectPermissionParameter(WebService.NewAction action) {
  72. return createProjectPermissionParameter(action, true);
  73. }
  74. public static void createGroupNameParameter(WebService.NewAction action) {
  75. action.createParam(PARAM_GROUP_NAME)
  76. .setDescription("Group name or 'anyone' (case insensitive)")
  77. .setExampleValue("sonar-administrators");
  78. }
  79. public static void createGroupIdParameter(WebService.NewAction action) {
  80. action.createParam(PARAM_GROUP_ID)
  81. .setDescription("Group id, use 'name' param instead")
  82. .setDeprecatedSince("8.4")
  83. .setExampleValue(UUID_EXAMPLE_01);
  84. }
  85. public static void createProjectParameters(WebService.NewAction action) {
  86. action.createParam(PARAM_PROJECT_ID)
  87. .setDescription("Project id")
  88. .setExampleValue("ce4c03d6-430f-40a9-b777-ad877c00aa4d");
  89. createProjectKeyParameter(action);
  90. }
  91. private static void createProjectKeyParameter(WebService.NewAction action) {
  92. action.createParam(PARAM_PROJECT_KEY)
  93. .setDescription("Project key")
  94. .setExampleValue(KEY_PROJECT_EXAMPLE_001);
  95. }
  96. public static void createUserLoginParameter(WebService.NewAction action) {
  97. action.createParam(PARAM_USER_LOGIN)
  98. .setRequired(true)
  99. .setDescription("User login")
  100. .setExampleValue("g.hopper");
  101. }
  102. public static void createTemplateParameters(WebService.NewAction action) {
  103. action.createParam(PARAM_TEMPLATE_ID)
  104. .setDescription("Template id")
  105. .setExampleValue(UUID_EXAMPLE_01);
  106. action.createParam(PARAM_TEMPLATE_NAME)
  107. .setDescription("Template name")
  108. .setExampleValue("Default Permission Template for Projects");
  109. }
  110. public static void createTemplateProjectKeyPatternParameter(WebService.NewAction action) {
  111. action.createParam(PARAM_PROJECT_KEY_PATTERN)
  112. .setDescription("Project key pattern. Must be a valid Java regular expression")
  113. .setExampleValue(".*\\.finance\\..*");
  114. }
  115. public static void createTemplateDescriptionParameter(WebService.NewAction action) {
  116. action.createParam(PARAM_DESCRIPTION)
  117. .setDescription("Description")
  118. .setExampleValue("Permissions for all projects related to the financial service");
  119. }
  120. public static void createIdParameter(WebService.NewAction action) {
  121. action.createParam(PARAM_ID)
  122. .setRequired(true)
  123. .setDescription("Id")
  124. .setExampleValue("af8cb8cc-1e78-4c4e-8c00-ee8e814009a5");
  125. }
  126. }