From cd9f861fb5e397bd0b6da425f3b41e60248efac4 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Wed, 15 Jul 2015 17:44:56 +0200 Subject: [PATCH] Move custom measures in sonar-db --- .../step/CustomMeasuresCopyStep.java | 2 +- .../java/org/sonar/server/db/DbClient.java | 2 +- .../custom/persistence/package-info.java | 24 ------ .../measure/custom/ws/CreateAction.java | 2 +- .../custom/ws/CustomMeasureJsonWriter.java | 2 +- .../custom/ws/CustomMeasureValidator.java | 2 +- .../measure/custom/ws/DeleteAction.java | 2 +- .../measure/custom/ws/SearchAction.java | 4 +- .../measure/custom/ws/UpdateAction.java | 2 +- .../sonar/server/metric/ws/CreateAction.java | 2 +- .../sonar/server/metric/ws/UpdateAction.java | 2 +- .../platformlevel/PlatformLevel1.java | 2 +- .../step/CustomMeasuresCopyStepTest.java | 4 +- .../measure/custom/ws/CreateActionTest.java | 4 +- .../custom/ws/CustomMeasureValidatorTest.java | 4 +- .../measure/custom/ws/DeleteActionTest.java | 8 +- .../measure/custom/ws/MetricsActionTest.java | 6 +- .../measure/custom/ws/SearchActionTest.java | 6 +- .../measure/custom/ws/UpdateActionTest.java | 9 +- .../server/metric/ws/CreateActionTest.java | 4 +- .../server/metric/ws/DeleteActionTest.java | 6 +- .../server/metric/ws/UpdateActionTest.java | 4 +- .../src/main/java/org/sonar/db/DbClient.java | 9 +- .../src/main/java/org/sonar/db/MyBatis.java | 4 +- .../db/measure/custom}/CustomMeasureDao.java | 14 ++- .../{ => custom}/CustomMeasureDto.java | 2 +- .../{ => custom}/CustomMeasureMapper.java | 2 +- .../{ => custom}/CustomMeasureMapper.xml | 2 +- .../measure/custom}/CustomMeasureDaoTest.java | 86 +++++++++++++++---- .../measure/custom}/CustomMeasureTesting.java | 3 +- 30 files changed, 129 insertions(+), 96 deletions(-) delete mode 100644 server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/package-info.java rename {server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence => sonar-db/src/main/java/org/sonar/db/measure/custom}/CustomMeasureDao.java (87%) rename sonar-db/src/main/java/org/sonar/db/measure/{ => custom}/CustomMeasureDto.java (98%) rename sonar-db/src/main/java/org/sonar/db/measure/{ => custom}/CustomMeasureMapper.java (97%) rename sonar-db/src/main/resources/org/sonar/db/measure/{ => custom}/CustomMeasureMapper.xml (97%) rename {server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence => sonar-db/src/test/java/org/sonar/db/measure/custom}/CustomMeasureDaoTest.java (57%) rename {server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence => sonar-db/src/test/java/org/sonar/db/measure/custom}/CustomMeasureTesting.java (94%) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/step/CustomMeasuresCopyStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/step/CustomMeasuresCopyStep.java index 1a530decd6d..608bb3770b3 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/step/CustomMeasuresCopyStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/step/CustomMeasuresCopyStep.java @@ -22,7 +22,7 @@ package org.sonar.server.computation.step; import com.google.common.annotations.VisibleForTesting; import java.util.List; import org.apache.commons.lang.math.NumberUtils; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.DbSession; import org.sonar.db.MyBatis; import org.sonar.server.computation.component.Component; diff --git a/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java b/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java index ff7dd58da36..25c758334e0 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java +++ b/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java @@ -23,7 +23,7 @@ import java.util.Map; import org.sonar.db.Dao; import org.sonar.db.Database; import org.sonar.db.MyBatis; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.qualityprofile.db.ActiveRuleDao; import org.sonar.server.rule.db.RuleDao; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/package-info.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/package-info.java deleted file mode 100644 index 08372c57a68..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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.measure.custom.persistence; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CreateAction.java index cb331120bde..34cc26e4df6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CreateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CreateAction.java @@ -30,7 +30,7 @@ import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbSession; import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.db.DbClient; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureJsonWriter.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureJsonWriter.java index a52e5b77577..b600a688b2b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureJsonWriter.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureJsonWriter.java @@ -31,7 +31,7 @@ import org.sonar.api.measures.Metric; import org.sonar.api.user.User; import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.metric.ws.MetricJsonWriter; import org.sonar.server.user.ws.UserJsonWriter; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureValidator.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureValidator.java index 8166a713562..457b5356af3 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureValidator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CustomMeasureValidator.java @@ -26,7 +26,7 @@ import org.sonar.api.server.ServerSide; import org.sonar.api.web.UserRole; import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.user.UserSession; import org.sonar.server.util.TypeValidations; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/DeleteAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/DeleteAction.java index 9ad8f45fa6d..f4f2dd10eb7 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/DeleteAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/DeleteAction.java @@ -28,7 +28,7 @@ import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.DbSession; import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.server.db.DbClient; import org.sonar.server.user.UserSession; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java index 4f1ce716419..d62c3894c01 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/SearchAction.java @@ -38,7 +38,7 @@ import org.sonar.db.DbSession; import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.SnapshotDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.db.DbClient; @@ -126,7 +126,7 @@ public class SearchAction implements CustomMeasuresWsAction { } private List searchCustomMeasures(DbSession dbSession, ComponentDto project, SearchOptions searchOptions) { - return dbClient.customMeasureDao().selectByComponentUuid(dbSession, project.uuid(), searchOptions); + return dbClient.customMeasureDao().selectByComponentUuid(dbSession, project.uuid(), searchOptions.getOffset(), searchOptions.getLimit()); } private void writeResponse(Response response, List customMeasures, int nbCustomMeasures, ComponentDto project, Map metricsById, diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java index 23ffd771c15..e1db533b5f6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/UpdateAction.java @@ -30,7 +30,7 @@ import org.sonar.api.utils.text.JsonWriter; import org.sonar.db.DbSession; import org.sonar.db.MyBatis; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.db.DbClient; import org.sonar.server.user.UserSession; diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java index cc6f1127297..9c161eedcc7 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java @@ -31,7 +31,7 @@ import org.sonar.api.utils.text.JsonWriter; import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.DbSession; import org.sonar.db.MyBatis; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ServerException; diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java index c0b7a535ba3..9272ce1bf83 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java @@ -28,7 +28,7 @@ import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; import org.sonar.api.utils.text.JsonWriter; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.DbSession; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java index 5e2f3f54eca..fc0fd4cc1f8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java @@ -36,7 +36,7 @@ import org.sonar.server.db.DbClient; import org.sonar.server.db.EmbeddedDatabaseFactory; import org.sonar.server.db.migrations.MigrationStepModule; import org.sonar.server.issue.index.IssueIndex; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.platform.DatabaseServerCompatibility; import org.sonar.server.platform.DefaultServerFileSystem; diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/CustomMeasuresCopyStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/CustomMeasuresCopyStepTest.java index 96a21b187ca..d8b81004777 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/CustomMeasuresCopyStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/CustomMeasuresCopyStepTest.java @@ -26,7 +26,7 @@ import org.junit.experimental.categories.Category; import org.mockito.ArgumentCaptor; import org.sonar.api.utils.System2; import org.sonar.db.DbTester; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.server.computation.batch.BatchReportReaderRule; import org.sonar.server.computation.component.Component; import org.sonar.server.computation.component.DumbComponent; @@ -37,7 +37,7 @@ import org.sonar.server.computation.metric.Metric; import org.sonar.server.computation.metric.MetricImpl; import org.sonar.server.computation.metric.MetricRepository; import org.sonar.server.db.DbClient; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java index ecf2acf1954..1fc4fb5b97d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java @@ -40,7 +40,7 @@ import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.component.ComponentDao; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.ComponentTesting; @@ -50,7 +50,7 @@ import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.exceptions.ServerException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.metric.ws.MetricTesting; import org.sonar.server.tester.UserSessionRule; diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java index dc6b6b8e054..9c637847457 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CustomMeasureValidatorTest.java @@ -24,9 +24,9 @@ import org.assertj.core.data.Offset; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.server.exceptions.BadRequestException; -import org.sonar.server.measure.custom.persistence.CustomMeasureTesting; +import org.sonar.db.measure.custom.CustomMeasureTesting; import static org.assertj.core.api.Assertions.assertThat; import static org.sonar.api.measures.Metric.Level.WARN; diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java index 088c6eecfc6..5d603612f14 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java @@ -33,18 +33,18 @@ import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.component.ComponentDao; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.server.component.ComponentTesting; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.NotFoundException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.sonar.server.measure.custom.persistence.CustomMeasureTesting.newCustomMeasureDto; +import static org.sonar.db.measure.custom.CustomMeasureTesting.newCustomMeasureDto; import static org.sonar.server.measure.custom.ws.DeleteAction.PARAM_ID; @Category(DbTests.class) @@ -102,7 +102,7 @@ public class DeleteActionTest { @Test public void fail_when_not_found_in_db() throws Exception { - expectedException.expect(NotFoundException.class); + expectedException.expect(IllegalArgumentException.class); newRequest().setParam(PARAM_ID, "42").execute(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java index ac6bb3fb6a8..89aecef33a0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java @@ -37,14 +37,14 @@ import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.component.ComponentDao; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.ComponentTesting; import org.sonar.server.db.DbClient; import org.sonar.server.es.EsTester; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.user.index.UserDoc; @@ -53,7 +53,7 @@ import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.sonar.server.measure.custom.persistence.CustomMeasureTesting.newCustomMeasureDto; +import static org.sonar.db.measure.custom.CustomMeasureTesting.newCustomMeasureDto; import static org.sonar.server.measure.custom.ws.CustomMeasuresWs.ENDPOINT; import static org.sonar.server.measure.custom.ws.MetricsAction.ACTION; import static org.sonar.server.metric.ws.MetricTesting.newMetricDto; diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java index 61b30a7dcc4..479e4e29a66 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java @@ -41,7 +41,7 @@ import org.sonar.db.DbTester; import org.sonar.db.component.ComponentDao; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.SnapshotDao; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.ComponentTesting; @@ -50,7 +50,7 @@ import org.sonar.server.db.DbClient; import org.sonar.server.es.EsTester; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.NotFoundException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.user.index.UserDoc; @@ -60,7 +60,7 @@ import org.sonar.server.user.ws.UserJsonWriter; import org.sonar.server.ws.WsTester; import static org.assertj.core.api.Assertions.assertThat; -import static org.sonar.server.measure.custom.persistence.CustomMeasureTesting.newCustomMeasureDto; +import static org.sonar.db.measure.custom.CustomMeasureTesting.newCustomMeasureDto; import static org.sonar.server.metric.ws.MetricTesting.newMetricDto; public class SearchActionTest { diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java index e66f2e2d592..bce9042fdf8 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java @@ -36,16 +36,15 @@ import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.component.ComponentDao; import org.sonar.db.component.ComponentDto; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.component.ComponentTesting; import org.sonar.server.db.DbClient; import org.sonar.server.es.EsTester; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.exceptions.ServerException; import org.sonar.server.exceptions.UnauthorizedException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.metric.ws.MetricTesting; import org.sonar.server.tester.UserSessionRule; @@ -60,7 +59,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.data.Offset.offset; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static org.sonar.server.measure.custom.persistence.CustomMeasureTesting.newCustomMeasureDto; +import static org.sonar.db.measure.custom.CustomMeasureTesting.newCustomMeasureDto; import static org.sonar.server.measure.custom.ws.UpdateAction.PARAM_DESCRIPTION; import static org.sonar.server.measure.custom.ws.UpdateAction.PARAM_ID; import static org.sonar.server.measure.custom.ws.UpdateAction.PARAM_VALUE; @@ -244,7 +243,7 @@ public class UpdateActionTest { @Test public void fail_if_not_in_db() throws Exception { - expectedException.expect(NotFoundException.class); + expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Custom measure '42' not found."); ws.newPostRequest(CustomMeasuresWs.ENDPOINT, UpdateAction.ACTION) diff --git a/server/sonar-server/src/test/java/org/sonar/server/metric/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/metric/ws/CreateActionTest.java index 0f71a63385d..f488261e05b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/metric/ws/CreateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/metric/ws/CreateActionTest.java @@ -35,8 +35,8 @@ import org.sonar.db.metric.MetricDto; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.ServerException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; -import org.sonar.server.measure.custom.persistence.CustomMeasureTesting; +import org.sonar.db.measure.custom.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureTesting; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.ruby.RubyBridge; import org.sonar.server.tester.UserSessionRule; diff --git a/server/sonar-server/src/test/java/org/sonar/server/metric/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/metric/ws/DeleteActionTest.java index 06db2278d42..35fcaad6b28 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/metric/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/metric/ws/DeleteActionTest.java @@ -32,12 +32,12 @@ import org.sonar.api.utils.System2; import org.sonar.core.permission.GlobalPermissions; import org.sonar.db.DbSession; import org.sonar.db.DbTester; -import org.sonar.db.measure.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureDto; import org.sonar.db.metric.MetricDto; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; -import org.sonar.server.measure.custom.persistence.CustomMeasureTesting; +import org.sonar.db.measure.custom.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureTesting; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.ruby.RubyBridge; import org.sonar.server.tester.UserSessionRule; diff --git a/server/sonar-server/src/test/java/org/sonar/server/metric/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/metric/ws/UpdateActionTest.java index 9399044fbba..c4c3f717188 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/metric/ws/UpdateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/metric/ws/UpdateActionTest.java @@ -35,7 +35,7 @@ import org.sonar.db.metric.MetricDto; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.ServerException; -import org.sonar.server.measure.custom.persistence.CustomMeasureDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.server.metric.persistence.MetricDao; import org.sonar.server.ruby.RubyBridge; import org.sonar.server.tester.UserSessionRule; @@ -45,7 +45,7 @@ import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; -import static org.sonar.server.measure.custom.persistence.CustomMeasureTesting.newCustomMeasureDto; +import static org.sonar.db.measure.custom.CustomMeasureTesting.newCustomMeasureDto; import static org.sonar.server.metric.ws.UpdateAction.PARAM_DESCRIPTION; import static org.sonar.server.metric.ws.UpdateAction.PARAM_DOMAIN; import static org.sonar.server.metric.ws.UpdateAction.PARAM_ID; diff --git a/sonar-db/src/main/java/org/sonar/db/DbClient.java b/sonar-db/src/main/java/org/sonar/db/DbClient.java index 5c63a4ab3a8..4ef128b94ec 100644 --- a/sonar-db/src/main/java/org/sonar/db/DbClient.java +++ b/sonar-db/src/main/java/org/sonar/db/DbClient.java @@ -46,6 +46,7 @@ import org.sonar.db.issue.IssueFilterFavouriteDao; import org.sonar.db.loadedtemplate.LoadedTemplateDao; import org.sonar.db.measure.MeasureDao; import org.sonar.db.measure.MeasureFilterDao; +import org.sonar.db.measure.custom.CustomMeasureDao; import org.sonar.db.notification.NotificationQueueDao; import org.sonar.db.permission.PermissionDao; import org.sonar.db.permission.PermissionTemplateDao; @@ -107,8 +108,9 @@ public class DbClient { private final ProjectQgateAssociationDao projectQgateAssociationDao; private final DuplicationDao duplicationDao; private final NotificationQueueDao notificationQueueDao; + private final CustomMeasureDao customMeasureDao; - public DbClient(Database database, MyBatis myBatis, Dao[] daos) { + public DbClient(Database database, MyBatis myBatis, Dao ... daos) { this.database = database; this.myBatis = myBatis; @@ -156,6 +158,7 @@ public class DbClient { projectQgateAssociationDao = getDao(map, ProjectQgateAssociationDao.class); duplicationDao = getDao(map, DuplicationDao.class); notificationQueueDao = getDao(map, NotificationQueueDao.class); + customMeasureDao = getDao(map, CustomMeasureDao.class); doOnLoad(map); } @@ -336,6 +339,10 @@ public class DbClient { return notificationQueueDao; } + public CustomMeasureDao customMeasureDao() { + return customMeasureDao; + } + protected K getDao(Map map, Class clazz) { return (K) map.get(clazz); } diff --git a/sonar-db/src/main/java/org/sonar/db/MyBatis.java b/sonar-db/src/main/java/org/sonar/db/MyBatis.java index 8bf39f3dedf..e1a6fd9dfd9 100644 --- a/sonar-db/src/main/java/org/sonar/db/MyBatis.java +++ b/sonar-db/src/main/java/org/sonar/db/MyBatis.java @@ -87,8 +87,8 @@ import org.sonar.db.issue.IssueFilterMapper; import org.sonar.db.issue.IssueMapper; import org.sonar.db.loadedtemplate.LoadedTemplateDto; import org.sonar.db.loadedtemplate.LoadedTemplateMapper; -import org.sonar.db.measure.CustomMeasureDto; -import org.sonar.db.measure.CustomMeasureMapper; +import org.sonar.db.measure.custom.CustomMeasureDto; +import org.sonar.db.measure.custom.CustomMeasureMapper; import org.sonar.db.measure.MeasureDto; import org.sonar.db.measure.MeasureFilterDto; import org.sonar.db.measure.MeasureFilterMapper; diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/CustomMeasureDao.java b/sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureDao.java similarity index 87% rename from server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/CustomMeasureDao.java rename to sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureDao.java index 9c816ce57a2..28af785ebcd 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/custom/persistence/CustomMeasureDao.java +++ b/sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureDao.java @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.server.measure.custom.persistence; +package org.sonar.db.measure.custom; import com.google.common.base.Function; import java.util.List; @@ -26,13 +26,9 @@ import javax.annotation.CheckForNull; import javax.annotation.Nonnull; import org.apache.ibatis.session.RowBounds; import org.sonar.api.server.ServerSide; -import org.sonar.db.DatabaseUtils; -import org.sonar.db.measure.CustomMeasureDto; -import org.sonar.db.measure.CustomMeasureMapper; import org.sonar.db.Dao; +import org.sonar.db.DatabaseUtils; import org.sonar.db.DbSession; -import org.sonar.server.es.SearchOptions; -import org.sonar.server.exceptions.NotFoundException; @ServerSide public class CustomMeasureDao implements Dao { @@ -66,7 +62,7 @@ public class CustomMeasureDao implements Dao { public CustomMeasureDto selectById(DbSession session, long id) { CustomMeasureDto customMeasure = selectNullableById(session, id); if (customMeasure == null) { - throw new NotFoundException(String.format("Custom measure '%d' not found.", id)); + throw new IllegalArgumentException(String.format("Custom measure '%d' not found.", id)); } return customMeasure; } @@ -79,8 +75,8 @@ public class CustomMeasureDao implements Dao { return mapper(session).countByComponentIdAndMetricId(componentUuid, metricId); } - public List selectByComponentUuid(DbSession session, String componentUuid, SearchOptions searchOptions) { - return mapper(session).selectByComponentUuid(componentUuid, new RowBounds(searchOptions.getOffset(), searchOptions.getLimit())); + public List selectByComponentUuid(DbSession session, String componentUuid, int offset, int limit) { + return mapper(session).selectByComponentUuid(componentUuid, new RowBounds(offset, limit)); } public List selectByComponentUuid(DbSession session, String componentUuid) { diff --git a/sonar-db/src/main/java/org/sonar/db/measure/CustomMeasureDto.java b/sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureDto.java similarity index 98% rename from sonar-db/src/main/java/org/sonar/db/measure/CustomMeasureDto.java rename to sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureDto.java index e7387d34cb9..c17e0228fd9 100644 --- a/sonar-db/src/main/java/org/sonar/db/measure/CustomMeasureDto.java +++ b/sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureDto.java @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.db.measure; +package org.sonar.db.measure.custom; public class CustomMeasureDto { private long id; diff --git a/sonar-db/src/main/java/org/sonar/db/measure/CustomMeasureMapper.java b/sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureMapper.java similarity index 97% rename from sonar-db/src/main/java/org/sonar/db/measure/CustomMeasureMapper.java rename to sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureMapper.java index e5f46294633..cb029d6f7c8 100644 --- a/sonar-db/src/main/java/org/sonar/db/measure/CustomMeasureMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/measure/custom/CustomMeasureMapper.java @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.db.measure; +package org.sonar.db.measure.custom; import java.util.List; import org.apache.ibatis.annotations.Param; diff --git a/sonar-db/src/main/resources/org/sonar/db/measure/CustomMeasureMapper.xml b/sonar-db/src/main/resources/org/sonar/db/measure/custom/CustomMeasureMapper.xml similarity index 97% rename from sonar-db/src/main/resources/org/sonar/db/measure/CustomMeasureMapper.xml rename to sonar-db/src/main/resources/org/sonar/db/measure/custom/CustomMeasureMapper.xml index 119cec178b4..8c264791389 100644 --- a/sonar-db/src/main/resources/org/sonar/db/measure/CustomMeasureMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/measure/custom/CustomMeasureMapper.xml @@ -1,7 +1,7 @@ - + m.id, m.metric_id as metricId, diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence/CustomMeasureDaoTest.java b/sonar-db/src/test/java/org/sonar/db/measure/custom/CustomMeasureDaoTest.java similarity index 57% rename from server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence/CustomMeasureDaoTest.java rename to sonar-db/src/test/java/org/sonar/db/measure/custom/CustomMeasureDaoTest.java index 8107c1d0c10..559b4779032 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence/CustomMeasureDaoTest.java +++ b/sonar-db/src/test/java/org/sonar/db/measure/custom/CustomMeasureDaoTest.java @@ -18,54 +18,48 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.server.measure.custom.persistence; +package org.sonar.db.measure.custom; import java.util.Arrays; import java.util.List; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.rules.ExpectedException; import org.sonar.api.utils.System2; import org.sonar.db.DbSession; import org.sonar.db.DbTester; -import org.sonar.db.measure.CustomMeasureDto; -import org.sonar.server.db.DbClient; import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.offset; -import static org.sonar.server.measure.custom.persistence.CustomMeasureTesting.newCustomMeasureDto; +import static org.sonar.db.measure.custom.CustomMeasureTesting.newCustomMeasureDto; @Category(DbTests.class) public class CustomMeasureDaoTest { @Rule public DbTester db = DbTester.create(System2.INSTANCE); + @Rule + public ExpectedException expectedException = ExpectedException.none(); CustomMeasureDao sut; DbSession session; @Before public void setUp() { - DbClient dbClient = new DbClient(db.database(), db.myBatis(), new CustomMeasureDao()); - session = dbClient.openSession(false); - sut = dbClient.customMeasureDao(); + session = db.getSession(); + sut = new CustomMeasureDao(); db.truncateTables(); } - @After - public void tearDown() { - session.close(); - } - @Test public void insert() { CustomMeasureDto measure = newCustomMeasureDto(); sut.insert(session, measure); - CustomMeasureDto result = sut.selectNullableById(session, measure.getId()); + CustomMeasureDto result = sut.selectById(session, measure.getId()); assertThat(result.getId()).isEqualTo(measure.getId()); assertThat(result.getMetricId()).isEqualTo(measure.getMetricId()); assertThat(result.getComponentUuid()).isEqualTo(measure.getComponentUuid()); @@ -78,7 +72,7 @@ public class CustomMeasureDaoTest { } @Test - public void delete() { + public void delete_by_metric_id() { CustomMeasureDto measure = newCustomMeasureDto(); sut.insert(session, measure); assertThat(sut.selectNullableById(session, measure.getId())).isNotNull(); @@ -88,6 +82,26 @@ public class CustomMeasureDaoTest { assertThat(sut.selectNullableById(session, measure.getId())).isNull(); } + @Test + public void update() { + CustomMeasureDto measure = newCustomMeasureDto().setDescription("old-description"); + sut.insert(session, measure); + measure.setDescription("new-description"); + + sut.update(session, measure); + + assertThat(sut.selectNullableById(session, measure.getId()).getDescription()).isEqualTo("new-description"); + } + + @Test + public void delete() { + CustomMeasureDto measure = newCustomMeasureDto(); + sut.insert(session, measure); + + sut.delete(session, measure.getId()); + assertThat(sut.selectNullableById(session, measure.getId())).isNull(); + } + @Test public void select_by_component_uuid() { sut.insert(session, newCustomMeasureDto().setComponentUuid("u1")); @@ -99,5 +113,47 @@ public class CustomMeasureDaoTest { assertThat(result).hasSize(2); assertThat(result).extracting("componentUuid").containsOnly("u1"); + assertThat(sut.countByComponentUuid(session, "u1")).isEqualTo(2); } + + @Test + public void select_by_component_uuid_with_options() { + sut.insert(session, newCustomMeasureDto().setComponentUuid("u1")); + sut.insert(session, newCustomMeasureDto().setComponentUuid("u1")); + sut.insert(session, newCustomMeasureDto().setComponentUuid("u2")); + session.commit(); + + List result = sut.selectByComponentUuid(session, "u1", 0, 100); + + assertThat(result).hasSize(2); + assertThat(result).extracting("componentUuid").containsOnly("u1"); + } + + @Test + public void select_by_metric_id() { + sut.insert(session, newCustomMeasureDto().setMetricId(123)); + sut.insert(session, newCustomMeasureDto().setMetricId(123)); + + List result = sut.selectByMetricId(session, 123); + + assertThat(result).hasSize(2); + } + + @Test + public void count_by_component_uuid_and_metric_id() { + sut.insert(session, newCustomMeasureDto().setMetricId(123).setComponentUuid("123")); + sut.insert(session, newCustomMeasureDto().setMetricId(123).setComponentUuid("123")); + + int count = sut.countByComponentIdAndMetricId(session, "123", 123); + + assertThat(count).isEqualTo(2); + } + + @Test + public void select_by_id_fail_if_no_measure_found() { + expectedException.expect(IllegalArgumentException.class); + + sut.selectById(session, 42L); + } + } diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence/CustomMeasureTesting.java b/sonar-db/src/test/java/org/sonar/db/measure/custom/CustomMeasureTesting.java similarity index 94% rename from server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence/CustomMeasureTesting.java rename to sonar-db/src/test/java/org/sonar/db/measure/custom/CustomMeasureTesting.java index 0de6d64494c..6f6dcf5e0d5 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/persistence/CustomMeasureTesting.java +++ b/sonar-db/src/test/java/org/sonar/db/measure/custom/CustomMeasureTesting.java @@ -18,12 +18,11 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.server.measure.custom.persistence; +package org.sonar.db.measure.custom; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.math.RandomUtils; import org.sonar.api.utils.System2; -import org.sonar.db.measure.CustomMeasureDto; public class CustomMeasureTesting { private CustomMeasureTesting() { -- 2.39.5