]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-23654 Fix BBTs
authorLéo Geoffroy <leo.geoffroy@sonarsource.com>
Fri, 22 Nov 2024 09:38:56 +0000 (10:38 +0100)
committersonartech <sonartech@sonarsource.com>
Tue, 26 Nov 2024 20:02:50 +0000 (20:02 +0000)
sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java
sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java
sonar-ws/src/main/java/org/sonarqube/ws/client/mode/ModeResource.java [new file with mode: 0644]
sonar-ws/src/main/java/org/sonarqube/ws/client/mode/ModeService.java [new file with mode: 0644]
sonar-ws/src/main/java/org/sonarqube/ws/client/mode/package-info.java [new file with mode: 0644]

index 73254c4d5c1eae1a36c18e69e8349e001613c7d5..4d060fe9c83b7251b6262ade61b4cc94833f7338 100644 (file)
@@ -47,6 +47,7 @@ import org.sonarqube.ws.client.l10n.L10nService;
 import org.sonarqube.ws.client.languages.LanguagesService;
 import org.sonarqube.ws.client.measures.MeasuresService;
 import org.sonarqube.ws.client.metrics.MetricsService;
+import org.sonarqube.ws.client.mode.ModeService;
 import org.sonarqube.ws.client.monitoring.MonitoringService;
 import org.sonarqube.ws.client.navigation.NavigationService;
 import org.sonarqube.ws.client.newcodeperiods.NewCodePeriodsService;
@@ -153,6 +154,7 @@ class DefaultWsClient implements WsClient {
   private final GitlabPermissionService gitlabPermissionsService;
 
   private final GitlabSynchronizationRunService gitlabSynchronizationRunService;
+  private final ModeService modeService;
 
   DefaultWsClient(WsConnector wsConnector) {
     this.wsConnector = wsConnector;
@@ -178,6 +180,7 @@ class DefaultWsClient implements WsClient {
     this.languagesService = new LanguagesService(wsConnector);
     this.measuresService = new MeasuresService(wsConnector);
     this.metricsService = new MetricsService(wsConnector);
+    this.modeService = new ModeService(wsConnector);
     this.monitoringService = new MonitoringService(wsConnector);
     this.navigationService = new NavigationService(wsConnector);
     this.newCodePeriodsService = new NewCodePeriodsService(wsConnector);
@@ -360,6 +363,11 @@ class DefaultWsClient implements WsClient {
     return metricsService;
   }
 
+  @Override
+  public ModeService mode() {
+    return modeService;
+  }
+
   @Override
   public MonitoringService monitoring() {
     return monitoringService;
index 4249cf6bab3a5aeec384c0e99b2cc14f81905131..e582d329d008b6d3fbff2afe99d8786789241d5f 100644 (file)
@@ -47,6 +47,7 @@ import org.sonarqube.ws.client.l10n.L10nService;
 import org.sonarqube.ws.client.languages.LanguagesService;
 import org.sonarqube.ws.client.measures.MeasuresService;
 import org.sonarqube.ws.client.metrics.MetricsService;
+import org.sonarqube.ws.client.mode.ModeService;
 import org.sonarqube.ws.client.monitoring.MonitoringService;
 import org.sonarqube.ws.client.navigation.NavigationService;
 import org.sonarqube.ws.client.newcodeperiods.NewCodePeriodsService;
@@ -156,6 +157,8 @@ public interface WsClient {
 
   MetricsService metrics();
 
+  ModeService mode();
+
   NavigationService navigation();
 
   NewCodePeriodsService newCodePeriods();
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/mode/ModeResource.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/mode/ModeResource.java
new file mode 100644 (file)
index 0000000..4653814
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2024 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.mode;
+
+import javax.annotation.Nullable;
+
+public record ModeResource(ModeEnum mode, @Nullable Boolean modified) {
+  public enum ModeEnum {
+    STANDARD_EXPERIENCE,
+    MQR
+  }
+}
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/mode/ModeService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/mode/ModeService.java
new file mode 100644 (file)
index 0000000..0e6d7f8
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2024 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.mode;
+
+import com.google.gson.Gson;
+import org.sonarqube.ws.MediaTypes;
+import org.sonarqube.ws.client.BaseService;
+import org.sonarqube.ws.client.GetRequest;
+import org.sonarqube.ws.client.PatchRequest;
+import org.sonarqube.ws.client.WsConnector;
+import org.sonarqube.ws.client.WsResponse;
+
+public class ModeService extends BaseService {
+
+  public ModeService(WsConnector wsConnector) {
+    super(wsConnector, "api/v2");
+  }
+
+  public void setMode(ModeResource.ModeEnum mode) {
+    callEndpointToPatchModeMapping(new ModeResource(mode, null)).close();
+  }
+
+  private WsResponse callEndpointToPatchModeMapping(ModeResource request) {
+    return call(
+      new PatchRequest(path("clean-code-policy/mode"))
+        .setBody(new Gson().toJson(request))
+        .setMediaType(MediaTypes.JSON));
+  }
+
+  ModeResource getMode() {
+    return new Gson().fromJson(call(
+      new GetRequest(path("clean-code-policy/mode"))
+        .setMediaType(MediaTypes.JSON)).content(),
+      ModeResource.class);
+  }
+
+}
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/mode/package-info.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/mode/package-info.java
new file mode 100644 (file)
index 0000000..2ee5f58
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2024 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.sonarqube.ws.client.mode;
+
+import javax.annotation.ParametersAreNonnullByDefault;