]> source.dussan.org Git - sonarqube.git/commitdiff
Add MetricDao.selectByKey() to return a nonnull dto
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 3 Jun 2015 08:11:31 +0000 (10:11 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 3 Jun 2015 08:50:00 +0000 (10:50 +0200)
server/sonar-server/src/main/java/org/sonar/server/metric/persistence/MetricDao.java
server/sonar-server/src/test/java/org/sonar/server/metric/persistence/MetricDaoTest.java

index 32abdb0fa67700c8cec32eb2906200c118b68820..f25def734f50fcec3956a1f8f8ebd8b7282e48d4 100644 (file)
@@ -37,6 +37,7 @@ import org.sonar.core.persistence.DaoComponent;
 import org.sonar.core.persistence.DaoUtils;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.server.es.SearchOptions;
+import org.sonar.server.exceptions.NotFoundException;
 
 import static com.google.common.collect.Lists.newArrayList;
 
@@ -57,6 +58,14 @@ public class MetricDao implements DaoComponent {
     });
   }
 
+  public MetricDto selectByKey(DbSession session, String key) {
+    MetricDto metric = selectNullableByKey(session, key);
+    if (metric == null) {
+      throw new NotFoundException(String.format("Metric '%s' not found", key));
+    }
+    return metric;
+  }
+
   public List<MetricDto> selectEnabled(DbSession session) {
     return mapper(session).selectAllEnabled();
   }
index d83ea6e949157c54f92cb581cc66002c197c5134..8fae20fa06a1e00be9504a30b27ae29ffa77b14f 100644 (file)
@@ -28,6 +28,7 @@ import org.junit.experimental.categories.Category;
 import org.sonar.core.metric.db.MetricDto;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.DbTester;
+import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.test.DbTests;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -82,6 +83,11 @@ public class MetricDaoTest {
     assertThat(result.isEnabled()).isFalse();
   }
 
+  @Test(expected = NotFoundException.class)
+  public void get_nullable_by_key() {
+    dao.selectByKey(session, "unknown");
+  }
+
   @Test
   public void get_manual_metric() {
     dbTester.prepareDbUnit(getClass(), "manual_metric.xml");