From 611806426d43e22650878b5f50148e01d475a9b2 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 10 Feb 2014 08:35:43 +0100 Subject: [PATCH] Fix quality flaws --- .../technicaldebt/DefaultTechnicalDebtManager.java | 4 ++++ .../DefaultTechnicalDebtManagerTest.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java index 3bb7b5bae7d..78d3157cd24 100644 --- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java +++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java @@ -20,6 +20,7 @@ package org.sonar.core.technicaldebt; + import org.sonar.api.rule.RuleKey; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; @@ -73,6 +74,9 @@ public class DefaultTechnicalDebtManager implements TechnicalDebtManager { CharacteristicDto requirementDto = dao.selectByRuleId(ruleId); if (requirementDto != null) { Rule rule = ruleFinder.findById(ruleId); + if (rule == null) { + throw new IllegalArgumentException(String.format("Rule with id '%s' do not exists.", ruleId)); + } return toCharacteristic(requirementDto, RuleKey.of(rule.getRepositoryKey(), rule.getKey())); } return null; diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java index 7ac3d435309..a69517c7c99 100644 --- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java @@ -37,6 +37,7 @@ import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.fest.assertions.Assertions.assertThat; +import static org.fest.assertions.Fail.fail; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) @@ -163,4 +164,17 @@ public class DefaultTechnicalDebtManagerTest { assertThat(finder.findRequirementByRuleId(1)).isNull(); } + + @Test + public void fail_to_find_requirement_by_rule_id_if_unknown_rule_id() throws Exception { + when(dao.selectByRuleId(1)).thenReturn( + new CharacteristicDto().setId(3).setRuleId(10).setParentId(2).setRootId(1).setFunction("linear").setFactorValue(30.0).setFactorUnit("mn")); + when(ruleFinder.findById(1)).thenReturn(null); + try { + finder.findRequirementByRuleId(1); + fail(); + } catch (Exception e) { + assertThat(e).isInstanceOf(IllegalArgumentException.class); + } + } } -- 2.39.5