aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2015-07-24 14:44:52 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2015-07-28 08:02:49 +0200
commitc24960fb4118de3791637c054b0a661772e7af16 (patch)
tree2ef25410789d380151a41749513f3290187e19eb
parentb9fbae13635f53c5a6cc8bb50130a3a3bf42ee84 (diff)
downloadsonarqube-c24960fb4118de3791637c054b0a661772e7af16.tar.gz
sonarqube-c24960fb4118de3791637c054b0a661772e7af16.zip
Remove call to deprecated RuleDao from CE RuleCacheLoader
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/issue/RuleCacheLoader.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/issue/RuleCacheLoaderTest.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistIssuesStepTest.java4
-rw-r--r--sonar-db/src/main/java/org/sonar/db/rule/RuleDao.java16
-rw-r--r--sonar-db/src/test/java/org/sonar/db/rule/RuleDaoTest.java31
5 files changed, 55 insertions, 14 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/RuleCacheLoader.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/RuleCacheLoader.java
index f2111a61b6d..8f2443c5c7f 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/RuleCacheLoader.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/RuleCacheLoader.java
@@ -19,13 +19,14 @@
*/
package org.sonar.server.computation.issue;
+import com.google.common.base.Optional;
import java.util.Collection;
import java.util.Map;
import org.sonar.api.rule.RuleKey;
+import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.MyBatis;
import org.sonar.db.rule.RuleDto;
-import org.sonar.server.db.DbClient;
import org.sonar.server.util.cache.CacheLoader;
public class RuleCacheLoader implements CacheLoader<RuleKey, Rule> {
@@ -40,9 +41,9 @@ public class RuleCacheLoader implements CacheLoader<RuleKey, Rule> {
public Rule load(RuleKey key) {
DbSession session = dbClient.openSession(false);
try {
- RuleDto dto = dbClient.deprecatedRuleDao().getNullableByKey(session, key);
- if (dto != null) {
- return new RuleImpl(dto);
+ Optional<RuleDto> dto = dbClient.ruleDao().selectByKey(session, key);
+ if (dto.isPresent()) {
+ return new RuleImpl(dto.get());
}
return null;
} finally {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/RuleCacheLoaderTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/RuleCacheLoaderTest.java
index 6157c0e634d..fc490fa021f 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/RuleCacheLoaderTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/RuleCacheLoaderTest.java
@@ -26,13 +26,10 @@ import org.junit.experimental.categories.Category;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
-import org.sonar.server.db.DbClient;
-import org.sonar.server.rule.db.RuleDao;
import org.sonar.test.DbTests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
@Category(DbTests.class)
public class RuleCacheLoaderTest {
@@ -48,8 +45,7 @@ public class RuleCacheLoaderTest {
@Test
public void load_by_key() {
dbTester.prepareDbUnit(getClass(), "shared.xml");
- DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), new RuleDao(mock(System2.class)));
- RuleCacheLoader loader = new RuleCacheLoader(dbClient);
+ RuleCacheLoader loader = new RuleCacheLoader(dbTester.getDbClient());
Rule javaRule = loader.load(RuleKey.of("java", "JAV01"));
assertThat(javaRule.getName()).isEqualTo("Java One");
@@ -62,8 +58,7 @@ public class RuleCacheLoaderTest {
@Test
public void load_by_keys_is_not_supported() {
- DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), new RuleDao(mock(System2.class)));
- RuleCacheLoader loader = new RuleCacheLoader(dbClient);
+ RuleCacheLoader loader = new RuleCacheLoader(dbTester.getDbClient());
try {
loader.loadAll(Collections.<RuleKey>emptyList());
fail();
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistIssuesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistIssuesStepTest.java
index af3435c22d4..dd8402998d7 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistIssuesStepTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistIssuesStepTest.java
@@ -36,13 +36,13 @@ import org.sonar.core.issue.FieldDiffs;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.issue.IssueDao;
+import org.sonar.db.rule.RuleDao;
import org.sonar.server.computation.batch.BatchReportReaderRule;
import org.sonar.server.computation.issue.IssueCache;
import org.sonar.server.computation.issue.RuleCacheLoader;
import org.sonar.server.computation.issue.RuleRepositoryImpl;
import org.sonar.server.computation.issue.UpdateConflictResolver;
import org.sonar.server.db.DbClient;
-import org.sonar.server.rule.db.RuleDao;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -79,7 +79,7 @@ public class PersistIssuesStepTest extends BaseStepTest {
public void setup() throws Exception {
dbTester.truncateTables();
session = dbTester.myBatis().openSession(false);
- dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), new IssueDao(dbTester.myBatis()), new RuleDao(system2));
+ dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), new IssueDao(dbTester.myBatis()), new RuleDao());
issueCache = new IssueCache(temp.newFile(), System2.INSTANCE);
system2 = mock(System2.class);
when(system2.now()).thenReturn(NOW);
diff --git a/sonar-db/src/main/java/org/sonar/db/rule/RuleDao.java b/sonar-db/src/main/java/org/sonar/db/rule/RuleDao.java
index b20552a3b62..8be99ab5832 100644
--- a/sonar-db/src/main/java/org/sonar/db/rule/RuleDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/rule/RuleDao.java
@@ -20,21 +20,35 @@
package org.sonar.db.rule;
import com.google.common.base.Function;
+import com.google.common.base.Optional;
import java.util.List;
import javax.annotation.Nonnull;
import org.sonar.api.rule.RuleKey;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
+import org.sonar.db.RowNotFoundException;
import static org.sonar.db.DatabaseUtils.executeLargeInputs;
public class RuleDao implements Dao {
+ public Optional<RuleDto> selectByKey(DbSession session, RuleKey key) {
+ return Optional.fromNullable(mapper(session).selectByKey(key));
+ }
+
+ public RuleDto selectOrFailByKey(DbSession session, RuleKey key) {
+ RuleDto rule = mapper(session).selectByKey(key);
+ if (rule == null) {
+ throw new RowNotFoundException(String.format("Rule with key '%s' does not exist", key));
+ }
+ return rule;
+ }
+
/**
* Select rules by keys, whatever their status. Returns an empty list
* if the list of {@code keys} is empty, without any db round trip.
*/
- public List<RuleDto> selectByKeys(final DbSession session, List<RuleKey> keys) {
+ public List<RuleDto> selectByKeys(DbSession session, List<RuleKey> keys) {
return executeLargeInputs(keys, new KeyToDto(mapper(session)));
}
diff --git a/sonar-db/src/test/java/org/sonar/db/rule/RuleDaoTest.java b/sonar-db/src/test/java/org/sonar/db/rule/RuleDaoTest.java
index 80de551b89f..499e80f34b8 100644
--- a/sonar-db/src/test/java/org/sonar/db/rule/RuleDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/rule/RuleDaoTest.java
@@ -19,6 +19,7 @@
*/
package org.sonar.db.rule;
+import com.google.common.base.Optional;
import java.util.Collections;
import java.util.List;
import org.junit.Rule;
@@ -28,6 +29,7 @@ import org.junit.rules.ExpectedException;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
+import org.sonar.db.RowNotFoundException;
import org.sonar.test.DbTests;
import static java.util.Arrays.asList;
@@ -45,6 +47,35 @@ public class RuleDaoTest {
RuleDao underTest = dbTester.getDbClient().ruleDao();
@Test
+ public void selectByKey() {
+ dbTester.prepareDbUnit(getClass(), "shared.xml");
+
+ assertThat(underTest.selectByKey(dbTester.getSession(), RuleKey.of("NOT", "FOUND")).isPresent()).isFalse();
+
+ Optional<RuleDto> rule = underTest.selectByKey(dbTester.getSession(), RuleKey.of("java", "S001"));
+ assertThat(rule.isPresent()).isTrue();
+ assertThat(rule.get().getId()).isEqualTo(1);
+ }
+
+ @Test
+ public void selectOrFailByKey() {
+ dbTester.prepareDbUnit(getClass(), "shared.xml");
+
+ RuleDto rule = underTest.selectOrFailByKey(dbTester.getSession(), RuleKey.of("java", "S001"));
+ assertThat(rule.getId()).isEqualTo(1);
+ }
+
+ @Test
+ public void selectOrFailByKey_fails_if_rule_not_found() {
+ thrown.expect(RowNotFoundException.class);
+ thrown.expectMessage("Rule with key 'NOT:FOUND' does not exist");
+
+ dbTester.prepareDbUnit(getClass(), "shared.xml");
+
+ underTest.selectOrFailByKey(dbTester.getSession(), RuleKey.of("NOT", "FOUND"));
+ }
+
+ @Test
public void selectByKeys() {
dbTester.prepareDbUnit(getClass(), "shared.xml");