From fba37d16e7689b6a280646d5989c1336fc02b0af Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 2 Apr 2014 16:45:38 +0200 Subject: [PATCH] SONAR-5056 Fix issue when reseting debt model and no rule is found --- .../sonar/server/debt/DebtModelBackup.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/debt/DebtModelBackup.java b/sonar-server/src/main/java/org/sonar/server/debt/DebtModelBackup.java index 5ea075a0fc2..4561f6a5c48 100644 --- a/sonar-server/src/main/java/org/sonar/server/debt/DebtModelBackup.java +++ b/sonar-server/src/main/java/org/sonar/server/debt/DebtModelBackup.java @@ -157,14 +157,17 @@ public class DebtModelBackup implements ServerComponent { for (RuleDto rule : ruleDtos) { // Restore default debt definitions RulesDefinition.Rule ruleDef = ruleDef(rule, rules); - String subCharacteristicKey = ruleDef.debtSubCharacteristic(); - CharacteristicDto subCharacteristicDto = characteristicByKey(subCharacteristicKey, allCharacteristicDtos); - DebtRemediationFunction remediationFunction = ruleDef.debtRemediationFunction(); - boolean hasDebtDefinition = subCharacteristicDto != null && remediationFunction != null; - rule.setDefaultSubCharacteristicId(hasDebtDefinition ? subCharacteristicDto.getId() : null); - rule.setDefaultRemediationFunction(hasDebtDefinition ? remediationFunction.type().name() : null); - rule.setDefaultRemediationCoefficient(hasDebtDefinition ? remediationFunction.coefficient() : null); - rule.setDefaultRemediationOffset(hasDebtDefinition ? remediationFunction.offset() : null); + if (ruleDef != null) { + // TODO when can it be null ? + String subCharacteristicKey = ruleDef.debtSubCharacteristic(); + CharacteristicDto subCharacteristicDto = characteristicByKey(subCharacteristicKey, allCharacteristicDtos); + DebtRemediationFunction remediationFunction = ruleDef.debtRemediationFunction(); + boolean hasDebtDefinition = subCharacteristicDto != null && remediationFunction != null; + rule.setDefaultSubCharacteristicId(hasDebtDefinition ? subCharacteristicDto.getId() : null); + rule.setDefaultRemediationFunction(hasDebtDefinition ? remediationFunction.type().name() : null); + rule.setDefaultRemediationCoefficient(hasDebtDefinition ? remediationFunction.coefficient() : null); + rule.setDefaultRemediationOffset(hasDebtDefinition ? remediationFunction.offset() : null); + } // Reset overridden debt definitions rule.setSubCharacteristicId(null); @@ -347,13 +350,14 @@ public class DebtModelBackup implements ServerComponent { }, null); } + @CheckForNull private static RulesDefinition.Rule ruleDef(final RuleDto rule, List rules) { return Iterables.find(rules, new Predicate() { @Override public boolean apply(@Nullable RulesDefinition.Rule input) { return input != null && rule.getRepositoryKey().equals(input.repository().key()) && rule.getRuleKey().equals(input.key()); } - }); + }, null); } @CheckForNull -- 2.39.5