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;
private final GitlabPermissionService gitlabPermissionsService;
private final GitlabSynchronizationRunService gitlabSynchronizationRunService;
+ private final ModeService modeService;
DefaultWsClient(WsConnector wsConnector) {
this.wsConnector = wsConnector;
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);
return metricsService;
}
+ @Override
+ public ModeService mode() {
+ return modeService;
+ }
+
@Override
public MonitoringService monitoring() {
return monitoringService;
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;
MetricsService metrics();
+ ModeService mode();
+
NavigationService navigation();
NewCodePeriodsService newCodePeriods();
--- /dev/null
+/*
+ * 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
+ }
+}
--- /dev/null
+/*
+ * 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);
+ }
+
+}
--- /dev/null
+/*
+ * 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;