From c98eb69cbe44405cb2e715e981eaa9f578a41850 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 3 Jun 2015 10:11:31 +0200 Subject: [PATCH] Add MetricDao.selectByKey() to return a nonnull dto --- .../org/sonar/server/metric/persistence/MetricDao.java | 9 +++++++++ .../sonar/server/metric/persistence/MetricDaoTest.java | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/persistence/MetricDao.java b/server/sonar-server/src/main/java/org/sonar/server/metric/persistence/MetricDao.java index 32abdb0fa67..f25def734f5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/persistence/MetricDao.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/persistence/MetricDao.java @@ -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 selectEnabled(DbSession session) { return mapper(session).selectAllEnabled(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/metric/persistence/MetricDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/metric/persistence/MetricDaoTest.java index d83ea6e9491..8fae20fa06a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/metric/persistence/MetricDaoTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/metric/persistence/MetricDaoTest.java @@ -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"); -- 2.39.5