]> source.dussan.org Git - sonarqube.git/commitdiff
fix QualityGateServiceImpl: QualityGateConditionDto has only metricId
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 12 Jun 2015 08:22:31 +0000 (10:22 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 12 Jun 2015 08:23:40 +0000 (10:23 +0200)
and no metricKey has was initially assumed by the implementation of QualityGateServiceImpl,

server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepository.java
server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricRepositoryImpl.java
server/sonar-server/src/main/java/org/sonar/server/computation/qualitygate/QualityGateServiceImpl.java
server/sonar-server/src/test/java/org/sonar/server/computation/qualitygate/QualityGateServiceImplTest.java

index 9120ce8fea1a643e7189e55df66d00ddc25f80c2..f49101bb3de462403c222e7fc41b8265f5f9b14b 100644 (file)
@@ -32,4 +32,11 @@ public interface MetricRepository {
    */
   Metric getByKey(String key);
 
+  /**
+   * Gets the {@link Metric} with the specific id.
+   *
+   * @throws IllegalStateException if no Metric with the specified id is found
+   */
+  Metric getById(long id);
+
 }
index 63766adab99f975b234245e853f2b347c1d97042..84f572f7e589745b18be2625bfb9310816569c24 100644 (file)
@@ -46,6 +46,18 @@ public class MetricRepositoryImpl implements MetricRepository {
     }
   }
 
+  @Override
+  public Metric getById(long id) {
+    try (DbSession dbSession = dbClient.openSession(false)) {
+      MetricDto metricDto = dbClient.metricDao().selectNullableById(dbSession, id);
+      if (metricDto == null) {
+        throw new IllegalStateException(String.format("Metric with id '%s' does not exist", id));
+      }
+
+      return toMetric(metricDto);
+    }
+  }
+
   private static Metric toMetric(MetricDto metricDto) {
     return new MetricImpl(metricDto.getKey(), metricDto.getShortName(), Metric.MetricType.valueOf(metricDto.getValueType()));
   }
index 2f3d3ef01686c6eda1213b534b3d6c8e55e89b6c..97cc2e00b7d6d868b69b2319dbae4c87abdbe293 100644 (file)
@@ -43,7 +43,7 @@ public class QualityGateServiceImpl implements QualityGateService {
       @Override
       @Nonnull
       public Condition apply(@Nonnull QualityGateConditionDto input) {
-        Metric metric = metricRepository.getByKey(input.getMetricKey());
+        Metric metric = metricRepository.getById(input.getMetricId());
         return new Condition(metric, input.getPeriod(), input.getOperator(), input.getErrorThreshold(), input.getWarningThreshold());
       }
     };
index dfb6bd3b84386a9921b4ae10657beb49f830aee7..2bb3d5174cb60c44ffd2952345ee2c57d455bcde 100644 (file)
@@ -39,12 +39,12 @@ public class QualityGateServiceImplTest {
   private static final long SOME_ID = 123;
   private static final String SOME_NAME = "some name";
   private static final QualityGateDto QUALITY_GATE_DTO = new QualityGateDto().setId(SOME_ID).setName(SOME_NAME);
-  private static final String METRIC_KEY_1 = "metric_key_1";
-  private static final String METRIC_KEY_2 = "metric_key_2";
+  private static final long METRIC_ID_1 = 951;
+  private static final long METRIC_ID_2 = 753;
   private static final Metric METRIC_1 = mock(Metric.class);
   private static final Metric METRIC_2 = mock(Metric.class);
-  private static final QualityGateConditionDto CONDITION_1 = new QualityGateConditionDto().setId(321).setMetricKey(METRIC_KEY_1).setOperator("=").setPeriod(1).setWarningThreshold("warnin_th").setErrorThreshold("error_th");
-  private static final QualityGateConditionDto CONDITION_2 = new QualityGateConditionDto().setId(456).setMetricKey(METRIC_KEY_2).setOperator("=");
+  private static final QualityGateConditionDto CONDITION_1 = new QualityGateConditionDto().setId(321).setMetricId(METRIC_ID_1).setOperator("=").setPeriod(1).setWarningThreshold("warnin_th").setErrorThreshold("error_th");
+  private static final QualityGateConditionDto CONDITION_2 = new QualityGateConditionDto().setId(456).setMetricId(METRIC_ID_2).setOperator("=");
 
   private QualityGateDao qualityGateDao = mock(QualityGateDao.class);
   private QualityGateConditionDao qualityGateConditionDao = mock(QualityGateConditionDao.class);
@@ -73,8 +73,8 @@ public class QualityGateServiceImplTest {
     when(qualityGateDao.selectById(SOME_ID)).thenReturn(QUALITY_GATE_DTO);
     when(qualityGateConditionDao.selectForQualityGate(SOME_ID)).thenReturn(ImmutableList.of(CONDITION_1, CONDITION_2));
     // metrics are always supposed to be there
-    when(metricRepository.getByKey(METRIC_KEY_1)).thenReturn(METRIC_1);
-    when(metricRepository.getByKey(METRIC_KEY_2)).thenReturn(METRIC_2);
+    when(metricRepository.getById(METRIC_ID_1)).thenReturn(METRIC_1);
+    when(metricRepository.getById(METRIC_ID_2)).thenReturn(METRIC_2);
 
     Optional<QualityGate> res = underTest.findById(SOME_ID);