diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-05-27 10:21:55 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-05-27 10:22:29 +0200 |
commit | 59ce6faf6fc4ad3c1d3117d2d6ecadb1214d4886 (patch) | |
tree | 3fb22c0e73a1204d3b6dd959bcb14621a8f6311e | |
parent | 379e815c5aedbb29fbc87e0747b9e6f5a098567c (diff) | |
download | sonarqube-59ce6faf6fc4ad3c1d3117d2d6ecadb1214d4886.tar.gz sonarqube-59ce6faf6fc4ad3c1d3117d2d6ecadb1214d4886.zip |
SONAR-5007 fix some quality flaws
8 files changed, 22 insertions, 497 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/ActiveRuleDao.java b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/ActiveRuleDao.java index f7069f58ced..a7f01729ccc 100644 --- a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/ActiveRuleDao.java +++ b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/ActiveRuleDao.java @@ -20,19 +20,12 @@ package org.sonar.core.qualityprofile.db; -import com.google.common.collect.Lists; import org.apache.ibatis.session.SqlSession; import org.sonar.api.ServerComponent; import org.sonar.core.persistence.MyBatis; -import javax.annotation.CheckForNull; - -import java.util.Collection; -import java.util.Collections; import java.util.List; -import static com.google.common.collect.Lists.newArrayList; - public class ActiveRuleDao implements ServerComponent { private final MyBatis mybatis; @@ -55,154 +48,15 @@ public class ActiveRuleDao implements ServerComponent { } } - public void update(ActiveRuleDto dto, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).update(dto); - } - - public void update(ActiveRuleDto dto) { - SqlSession session = mybatis.openSession(false); - try { - update(dto, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public void delete(int activeRuleId, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).delete(activeRuleId); - } - - public void delete(int activeRuleId) { - SqlSession session = mybatis.openSession(false); - try { - delete(activeRuleId, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public void deleteFromRule(int ruleId, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).deleteFromRule(ruleId); - } - - public void deleteFromRule(int ruleId) { - SqlSession session = mybatis.openSession(false); - try { - deleteFromRule(ruleId, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public void deleteFromProfile(int profileId, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).deleteFromProfile(profileId); - } - - public void deleteFromProfile(int profileId) { - SqlSession session = mybatis.openSession(false); - try { - deleteFromProfile(profileId, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleDto> selectByIds(List<Integer> ids) { - SqlSession session = mybatis.openSession(false); - try { - return selectByIds(ids, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleDto> selectByIds(Collection<Integer> ids, SqlSession session) { - if (ids.isEmpty()) { - return Collections.emptyList(); - } - List<ActiveRuleDto> dtosList = newArrayList(); - List<List<Integer>> idsPartitionList = Lists.partition(newArrayList(ids), 1000); - for (List<Integer> idsPartition : idsPartitionList) { - List<ActiveRuleDto> dtos = session.selectList("org.sonar.core.qualityprofile.db.ActiveRuleMapper.selectByIds", newArrayList(idsPartition)); - dtosList.addAll(dtos); - } - return dtosList; - } - - public List<ActiveRuleDto> selectAll() { - SqlSession session = mybatis.openSession(false); - try { - return selectAll(session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleDto> selectAll(SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectAll(); - } - - public List<ActiveRuleDto> selectByRuleId(int ruleId) { - SqlSession session = mybatis.openSession(false); - try { - return selectByRuleId(ruleId, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleDto> selectByRuleId(int ruleId, SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectByRuleId(ruleId); - } - public List<ActiveRuleDto> selectByProfileId(int profileId) { SqlSession session = mybatis.openSession(false); try { - return selectByProfileId(profileId, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleDto> selectByProfileId(int profileId, SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectByProfileId(profileId); - } - - - @CheckForNull - public ActiveRuleDto selectById(int id) { - SqlSession session = mybatis.openSession(false); - try { - return selectById(id, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - @CheckForNull - public ActiveRuleDto selectById(int id, SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectById(id); - } - - @CheckForNull - public ActiveRuleDto selectByProfileAndRule(int profileId, int ruleId) { - SqlSession session = mybatis.openSession(false); - try { - return selectByProfileAndRule(profileId, ruleId, session); + return session.getMapper(ActiveRuleMapper.class).selectByProfileId(profileId); } finally { MyBatis.closeQuietly(session); } } - @CheckForNull - public ActiveRuleDto selectByProfileAndRule(int profileId, int ruleId, SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectByProfileAndRule(profileId, ruleId); - } - public void insert(ActiveRuleParamDto dto, SqlSession session) { session.getMapper(ActiveRuleMapper.class).insertParameter(dto); } @@ -217,137 +71,6 @@ public class ActiveRuleDao implements ServerComponent { } } - public void update(ActiveRuleParamDto dto, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).updateParameter(dto); - } - - public void update(ActiveRuleParamDto dto) { - SqlSession session = mybatis.openSession(false); - try { - update(dto, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - - public void deleteParameter(int activeRuleParamId, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).deleteParameter(activeRuleParamId); - } - - public void deleteParameter(int activeRuleParamId) { - SqlSession session = mybatis.openSession(false); - try { - deleteParameter(activeRuleParamId, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public void deleteParameters(int activeRuleId, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).deleteParameters(activeRuleId); - } - - public void deleteParameters(int activeRuleId) { - SqlSession session = mybatis.openSession(false); - try { - deleteParameters(activeRuleId, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public void deleteParametersWithParamId(int id, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).deleteParametersWithParamId(id); - } - - public void deleteParametersFromProfile(int profileId) { - SqlSession session = mybatis.openSession(false); - try { - deleteParametersFromProfile(profileId, session); - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - } - - public void deleteParametersFromProfile(int profileId, SqlSession session) { - session.getMapper(ActiveRuleMapper.class).deleteParametersFromProfile(profileId); - } - - public ActiveRuleParamDto selectParamById(Integer activeRuleParamId) { - SqlSession session = mybatis.openSession(false); - try { - return session.getMapper(ActiveRuleMapper.class).selectParamById(activeRuleParamId); - } finally { - MyBatis.closeQuietly(session); - } - } - - public ActiveRuleParamDto selectParamByActiveRuleAndKey(int activeRuleId, String key) { - SqlSession session = mybatis.openSession(false); - try { - return selectParamByActiveRuleAndKey(activeRuleId, key, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public ActiveRuleParamDto selectParamByActiveRuleAndKey(int activeRuleId, String key, SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectParamByActiveRuleAndKey(activeRuleId, key); - } - - public List<ActiveRuleParamDto> selectParamsByActiveRuleId(int activeRuleId) { - SqlSession session = mybatis.openSession(false); - try { - return selectParamsByActiveRuleId(activeRuleId, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleParamDto> selectParamsByActiveRuleId(int activeRuleId, SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectParamsByActiveRuleId(activeRuleId); - } - - public List<ActiveRuleParamDto> selectParamsByActiveRuleIds(List<Integer> activeRuleIds) { - SqlSession session = mybatis.openSession(false); - try { - return selectParamsByActiveRuleIds(activeRuleIds, session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleParamDto> selectParamsByActiveRuleIds(Collection<Integer> activeRuleIds, SqlSession session) { - if (activeRuleIds.isEmpty()) { - return Collections.emptyList(); - } - List<ActiveRuleParamDto> dtosList = newArrayList(); - List<List<Integer>> idsPartitionList = Lists.partition(newArrayList(activeRuleIds), 1000); - for (List<Integer> idsPartition : idsPartitionList) { - List<ActiveRuleParamDto> dtos = session.selectList("org.sonar.core.qualityprofile.db.ActiveRuleMapper.selectParamsByActiveRuleIds", newArrayList(idsPartition)); - dtosList.addAll(dtos); - } - return dtosList; - } - - public List<ActiveRuleParamDto> selectAllParams() { - SqlSession session = mybatis.openSession(false); - try { - return selectAllParams(session); - } finally { - MyBatis.closeQuietly(session); - } - } - - public List<ActiveRuleParamDto> selectAllParams(SqlSession session) { - return session.getMapper(ActiveRuleMapper.class).selectAllParams(); - } - public List<ActiveRuleParamDto> selectParamsByProfileId(int profileId) { SqlSession session = mybatis.openSession(false); try { diff --git a/sonar-core/src/test/java/org/sonar/core/qualityprofile/db/ActiveRuleDaoTest.java b/sonar-core/src/test/java/org/sonar/core/qualityprofile/db/ActiveRuleDaoTest.java index 86dbf2ea461..b95d00bf9da 100644 --- a/sonar-core/src/test/java/org/sonar/core/qualityprofile/db/ActiveRuleDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/qualityprofile/db/ActiveRuleDaoTest.java @@ -20,9 +20,6 @@ package org.sonar.core.qualityprofile.db; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; import org.junit.Before; import org.junit.Test; import org.sonar.api.rule.Severity; @@ -57,92 +54,6 @@ public class ActiveRuleDaoTest extends AbstractDaoTestCase { } @Test - public void update() { - setupData("shared"); - - ActiveRuleDto dto = new ActiveRuleDto() - .setId(1) - .setProfileId(1) - .setRuleId(10) - .setSeverity(Severity.BLOCKER) - .setInheritance(null); - - dao.update(dto); - - checkTables("update", "active_rules"); - } - - @Test - public void delete() { - setupData("shared"); - - dao.delete(1); - - checkTables("delete", "active_rules"); - } - - @Test - public void delete_from_rule() { - setupData("shared"); - - dao.deleteFromRule(11); - - checkTables("delete_from_rule", "active_rules"); - } - - @Test - public void delete_from_profile() { - setupData("shared"); - - dao.deleteFromProfile(2); - - checkTables("delete_from_profile", "active_rules"); - } - - @Test - public void select_by_id() { - setupData("shared"); - - ActiveRuleDto result = dao.selectById(1); - assertThat(result.getId()).isEqualTo(1); - assertThat(result.getProfileId()).isEqualTo(1); - assertThat(result.getRulId()).isEqualTo(10); - assertThat(result.getSeverityString()).isEqualTo(Severity.MAJOR); - assertThat(result.getInheritance()).isEqualTo("INHERITED"); - } - - @Test - public void select_by_ids() { - setupData("shared"); - - List<ActiveRuleDto> result = dao.selectByIds(ImmutableList.of(1)); - assertThat(result).hasSize(1); - assertThat(result.get(0).getParentId()).isEqualTo(2); - - assertThat(dao.selectByIds(ImmutableList.of(1, 2))).hasSize(2); - } - - @Test - public void select_by_profile_and_rule() { - setupData("shared"); - - ActiveRuleDto result = dao.selectByProfileAndRule(1, 10); - assertThat(result.getId()).isEqualTo(1); - assertThat(result.getProfileId()).isEqualTo(1); - assertThat(result.getRulId()).isEqualTo(10); - assertThat(result.getSeverityString()).isEqualTo(Severity.MAJOR); - assertThat(result.getInheritance()).isEqualTo("INHERITED"); - } - - @Test - public void select_by_rule() { - setupData("shared"); - - List<ActiveRuleDto> result = dao.selectByRuleId(10); - assertThat(result).hasSize(2); - } - - @Test public void select_by_profile() { setupData("shared"); @@ -151,17 +62,6 @@ public class ActiveRuleDaoTest extends AbstractDaoTestCase { } @Test - public void select_all() { - setupData("shared"); - - List<ActiveRuleDto> result = dao.selectAll(); - assertThat(result).hasSize(3); - - assertThat(find(1, result).getParentId()).isEqualTo(2); - assertThat(find(2, result).getParentId()).isNull(); - } - - @Test public void insert_parameter() { setupData("empty"); @@ -177,110 +77,9 @@ public class ActiveRuleDaoTest extends AbstractDaoTestCase { } @Test - public void update_parameter() { - setupData("shared"); - - ActiveRuleParamDto dto = new ActiveRuleParamDto() - .setId(1) - .setActiveRuleId(2) - .setRulesParameterId(3) - .setKey("newMax") - .setValue("30"); - - dao.update(dto); - - checkTables("update_parameter", "active_rule_parameters"); - } - - @Test - public void delete_parameters() { - setupData("shared"); - - dao.deleteParameters(1); - - checkTables("delete_parameters", "active_rule_parameters"); - } - - @Test - public void delete_parameter() { - setupData("shared"); - - dao.deleteParameter(1); - - checkTables("delete_parameter", "active_rule_parameters"); - } - - @Test - public void delete_parameters_from_profile_id() { - setupData("delete_parameters_from_profile_id"); - - dao.deleteParametersFromProfile(2); - - checkTables("delete_parameters_from_profile_id", "active_rule_parameters"); - } - - @Test - public void select_param_by_id() { - setupData("shared"); - - ActiveRuleParamDto result = dao.selectParamById(1); - assertThat(result.getId()).isEqualTo(1); - assertThat(result.getActiveRuleId()).isEqualTo(1); - assertThat(result.getRulesParameterId()).isEqualTo(1); - assertThat(result.getKey()).isEqualTo("max"); - assertThat(result.getValue()).isEqualTo("20"); - } - - @Test - public void select_params_by_active_rule_id() { - setupData("shared"); - - assertThat(dao.selectParamsByActiveRuleId(1)).hasSize(2); - assertThat(dao.selectParamsByActiveRuleId(2)).hasSize(1); - } - - @Test - public void select_param_by_active_rule_and_key() { - setupData("shared"); - - ActiveRuleParamDto result = dao.selectParamByActiveRuleAndKey(1, "max"); - assertThat(result.getId()).isEqualTo(1); - assertThat(result.getActiveRuleId()).isEqualTo(1); - assertThat(result.getRulesParameterId()).isEqualTo(1); - assertThat(result.getKey()).isEqualTo("max"); - assertThat(result.getValue()).isEqualTo("20"); - } - - @Test - public void select_params_by_active_rule_ids() { - setupData("shared"); - - assertThat(dao.selectParamsByActiveRuleIds(ImmutableList.of(1))).hasSize(2); - assertThat(dao.selectParamsByActiveRuleIds(ImmutableList.of(2))).hasSize(1); - assertThat(dao.selectParamsByActiveRuleIds(ImmutableList.of(1, 2))).hasSize(3); - } - - @Test public void select_params_by_profile_id() { setupData("shared"); assertThat(dao.selectParamsByProfileId(1)).hasSize(2); } - - @Test - public void select_all_params() { - setupData("shared"); - - assertThat(dao.selectAllParams()).hasSize(3); - } - - private ActiveRuleDto find(final Integer id, List<ActiveRuleDto> dtos) { - return Iterables.find(dtos, new Predicate<ActiveRuleDto>() { - @Override - public boolean apply(ActiveRuleDto input) { - return input.getId().equals(id); - } - }); - } - } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java index 2032d2b5eb8..1831af846c7 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java @@ -90,12 +90,12 @@ public class ActiveRuleService implements ServerComponent { List<ActiveRuleChange> changes = activate(activation, dbSession); if (!changes.isEmpty()) { dbSession.commit(); - previewCache.reportGlobalModification(); - } - return changes; -} finally { - dbSession.close(); - } + previewCache.reportGlobalModification(); + } + return changes; + } finally { + dbSession.close(); + } } /** diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActiveRuleOperations.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActiveRuleOperations.java index a3e1d98b3c1..310139320c2 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActiveRuleOperations.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileActiveRuleOperations.java @@ -42,10 +42,6 @@ import java.util.List; import static com.google.common.collect.Lists.newArrayList; -/** - * @deprecated to be dropped in 4.4 - */ -@Deprecated public class QProfileActiveRuleOperations implements ServerComponent { private final ActiveRuleDao activeRuleDao; @@ -63,7 +59,6 @@ public class QProfileActiveRuleOperations implements ServerComponent { ActiveRuleDto createActiveRule(QualityProfileKey profileKey, RuleKey ruleKey, String severity, DbSession session) { RuleDto ruleDto = ruleDao.getByKey(session, ruleKey); - //TODO use BaseDao for profileDao QualityProfileDto profileDto = profileDao.selectByNameAndLanguage(profileKey.name(), profileKey.lang(), session); ActiveRuleDto activeRule = ActiveRuleDto.createFor(profileDto, ruleDto) .setSeverity(severity); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java index 1a24bb4eaa3..c34935f4bc9 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java @@ -78,6 +78,9 @@ public class ActiveRuleDao extends BaseDao<ActiveRuleMapper, ActiveRuleDto, Acti session.commit(); } + /** + * @deprecated do not use ids but keys + */ @Deprecated public ActiveRuleDto getById(int activeRuleId, DbSession session) { ActiveRuleDto rule = mapper(session).selectById(activeRuleId); diff --git a/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java b/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java index 672625dc9f6..eb40a7f3ded 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java +++ b/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java @@ -123,6 +123,9 @@ public class RuleQuery { return queryText; } + /** + * Ignored if null or blank + */ public RuleQuery setQueryText(@Nullable String queryText) { this.queryText = queryText; return this; diff --git a/sonar-server/src/main/java/org/sonar/server/search/ws/BaseMapping.java b/sonar-server/src/main/java/org/sonar/server/search/ws/BaseMapping.java index 584df5f31a0..ad1c2284b2f 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/ws/BaseMapping.java +++ b/sonar-server/src/main/java/org/sonar/server/search/ws/BaseMapping.java @@ -163,7 +163,9 @@ public abstract class BaseMapping implements ServerComponent { @Override public void write(JsonWriter json, BaseDoc doc) { Iterable<String> values = doc.getNullableField(indexFields[0]); - json.name(key).beginArray().values(values).endArray(); + if (values != null) { + json.name(key).beginArray().values(values).endArray(); + } } } diff --git a/sonar-server/src/main/java/org/sonar/server/ws/ListingWs.java b/sonar-server/src/main/java/org/sonar/server/ws/ListingWs.java index 6cafb46670b..08e0b16d1d5 100644 --- a/sonar-server/src/main/java/org/sonar/server/ws/ListingWs.java +++ b/sonar-server/src/main/java/org/sonar/server/ws/ListingWs.java @@ -77,7 +77,11 @@ public class ListingWs implements WebService { @Override public void handle(Request request, Response response) throws Exception { Controller controller = context.controller(request.mandatoryParam("controller")); - Action action = controller.action(request.mandatoryParam("action")); + String actionKey = request.mandatoryParam("action"); + Action action = controller.action(actionKey); + if (action == null) { + throw new IllegalArgumentException("Action does not exist: " + actionKey); + } handleResponseExample(action, response); } }); @@ -180,11 +184,7 @@ public class ListingWs implements WebService { writer.prop("defaultValue", param.defaultValue()); writer.prop("exampleValue", param.exampleValue()); if (param.possibleValues() != null) { - writer.name("possibleValues").beginArray(); - for (String s : param.possibleValues()) { - writer.value(s); - } - writer.endArray(); + writer.name("possibleValues").beginArray().values(param.possibleValues()).endArray(); } writer.endObject(); } |