Skip to content

Commit

Permalink
fix quality flaws
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Schwarz authored and bartfastiel committed Apr 14, 2017
1 parent 981f0bf commit 033ef4b
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 35 deletions.
25 changes: 9 additions & 16 deletions server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleDao.java
Expand Up @@ -32,30 +32,23 @@
import org.sonar.db.organization.OrganizationDto; import org.sonar.db.organization.OrganizationDto;


import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.Optional.*;
import static org.sonar.db.DatabaseUtils.executeLargeInputs; import static org.sonar.db.DatabaseUtils.executeLargeInputs;


public class RuleDao implements Dao { public class RuleDao implements Dao {


public Optional<RuleDto> selectByKey(DbSession session, OrganizationDto organization, RuleKey key) { public Optional<RuleDto> selectByKey(DbSession session, OrganizationDto organization, RuleKey key) {
return selectByKey(session, organization.getUuid(), key); RuleDto res = mapper(session).selectByKey(organization.getUuid(), key);
} ensureOrganizationIsSet(organization.getUuid(), res);

return ofNullable(res);
/**
* @deprecated use {@link #selectByKey(DbSession, OrganizationDto, RuleKey)}
*/
@Deprecated
public Optional<RuleDto> selectByKey(DbSession session, String organizationUuid, RuleKey key) {
RuleDto res = mapper(session).selectByKey(organizationUuid, key);
ensureOrganizationIsSet(organizationUuid, res);
return Optional.ofNullable(res);
} }


public Optional<RuleDefinitionDto> selectDefinitionByKey(DbSession session, RuleKey key) { public Optional<RuleDefinitionDto> selectDefinitionByKey(DbSession session, RuleKey key) {
return Optional.ofNullable(mapper(session).selectDefinitionByKey(key)); return ofNullable(mapper(session).selectDefinitionByKey(key));
} }


public java.util.Optional<RuleMetadataDto> selectMetadataByKey(DbSession session, RuleKey key, OrganizationDto organization) { public Optional<RuleMetadataDto> selectMetadataByKey(DbSession session, RuleKey key, OrganizationDto organization) {
return java.util.Optional.ofNullable(mapper(session).selectMetadataByKey(key, organization.getUuid())); return ofNullable(mapper(session).selectMetadataByKey(key, organization.getUuid()));
} }


public RuleDto selectOrFailByKey(DbSession session, OrganizationDto organization, RuleKey key) { public RuleDto selectOrFailByKey(DbSession session, OrganizationDto organization, RuleKey key) {
Expand All @@ -78,11 +71,11 @@ public RuleDefinitionDto selectOrFailDefinitionByKey(DbSession session, RuleKey
public Optional<RuleDto> selectById(long id, String organizationUuid, DbSession session) { public Optional<RuleDto> selectById(long id, String organizationUuid, DbSession session) {
RuleDto res = mapper(session).selectById(organizationUuid, id); RuleDto res = mapper(session).selectById(organizationUuid, id);
ensureOrganizationIsSet(organizationUuid, res); ensureOrganizationIsSet(organizationUuid, res);
return Optional.ofNullable(res); return ofNullable(res);
} }


public Optional<RuleDefinitionDto> selectDefinitionById(long id, DbSession session) { public Optional<RuleDefinitionDto> selectDefinitionById(long id, DbSession session) {
return Optional.ofNullable(mapper(session).selectDefinitionById(id)); return ofNullable(mapper(session).selectDefinitionById(id));
} }


public List<RuleDto> selectByIds(DbSession session, String organizationUuid, List<Integer> ids) { public List<RuleDto> selectByIds(DbSession session, String organizationUuid, List<Integer> ids) {
Expand Down
Expand Up @@ -26,6 +26,7 @@
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.ResultHandler;
import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException; import org.junit.rules.ExpectedException;
Expand Down Expand Up @@ -57,14 +58,20 @@ public class RuleDaoTest {
public DbTester dbTester = DbTester.create(System2.INSTANCE); public DbTester dbTester = DbTester.create(System2.INSTANCE);


private RuleDao underTest = dbTester.getDbClient().ruleDao(); private RuleDao underTest = dbTester.getDbClient().ruleDao();
private OrganizationDto organization;

@Before
public void before() {
organization = dbTester.organizations().insert(o -> o.setUuid(ORGANIZATION_UUID));
}


@Test @Test
public void selectByKey() { public void selectByKey() {
dbTester.prepareDbUnit(getClass(), "shared.xml"); dbTester.prepareDbUnit(getClass(), "shared.xml");


assertThat(underTest.selectByKey(dbTester.getSession(), ORGANIZATION_UUID, RuleKey.of("NOT", "FOUND")).isPresent()).isFalse(); assertThat(underTest.selectByKey(dbTester.getSession(), organization, RuleKey.of("NOT", "FOUND")).isPresent()).isFalse();


Optional<RuleDto> rule = underTest.selectByKey(dbTester.getSession(), ORGANIZATION_UUID, RuleKey.of("java", "S001")); Optional<RuleDto> rule = underTest.selectByKey(dbTester.getSession(), organization, RuleKey.of("java", "S001"));
assertThat(rule.isPresent()).isTrue(); assertThat(rule.isPresent()).isTrue();
assertThat(rule.get().getId()).isEqualTo(1); assertThat(rule.get().getId()).isEqualTo(1);
} }
Expand All @@ -73,7 +80,7 @@ public void selectByKey() {
public void selectByKey_populates_organizationUuid_even_when_organization_has_no_metadata() { public void selectByKey_populates_organizationUuid_even_when_organization_has_no_metadata() {
dbTester.prepareDbUnit(getClass(), "shared.xml"); dbTester.prepareDbUnit(getClass(), "shared.xml");


assertThat(underTest.selectByKey(dbTester.getSession(), ORGANIZATION_UUID, RuleKey.of("java", "S001")).get().getOrganizationUuid()) assertThat(underTest.selectByKey(dbTester.getSession(), organization, RuleKey.of("java", "S001")).get().getOrganizationUuid())
.isEqualTo(ORGANIZATION_UUID); .isEqualTo(ORGANIZATION_UUID);
} }


Expand Down
Expand Up @@ -36,6 +36,7 @@
import org.sonar.api.rules.RulePriority; import org.sonar.api.rules.RulePriority;
import org.sonar.db.DbClient; import org.sonar.db.DbClient;
import org.sonar.db.DbSession; import org.sonar.db.DbSession;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.rule.RuleDao; import org.sonar.db.rule.RuleDao;
import org.sonar.db.rule.RuleDto; import org.sonar.db.rule.RuleDto;
import org.sonar.db.rule.RuleParamDto; import org.sonar.db.rule.RuleParamDto;
Expand Down Expand Up @@ -99,7 +100,10 @@ public Collection<org.sonar.api.rules.Rule> findByKeys(Collection<RuleKey> ruleK
@CheckForNull @CheckForNull
public org.sonar.api.rules.Rule findByKey(RuleKey key) { public org.sonar.api.rules.Rule findByKey(RuleKey key) {
try (DbSession dbSession = dbClient.openSession(false)) { try (DbSession dbSession = dbClient.openSession(false)) {
Optional<RuleDto> rule = ruleDao.selectByKey(dbSession, defaultOrganizationProvider.get().getUuid(), key); String defaultOrganizationUuid = defaultOrganizationProvider.get().getUuid();
OrganizationDto defaultOrganization = dbClient.organizationDao().selectByUuid(dbSession, defaultOrganizationUuid)
.orElseThrow(() -> new IllegalStateException(String.format("Cannot find default organization '%s'", defaultOrganizationUuid)));
Optional<RuleDto> rule = ruleDao.selectByKey(dbSession, defaultOrganization, key);
if (rule.isPresent() && rule.get().getStatus() != RuleStatus.REMOVED) { if (rule.isPresent() && rule.get().getStatus() != RuleStatus.REMOVED) {
return toRule(rule.get(), ruleDao.selectRuleParamsByRuleKey(dbSession, rule.get().getKey())); return toRule(rule.get(), ruleDao.selectRuleParamsByRuleKey(dbSession, rule.get().getKey()));
} else { } else {
Expand Down
Expand Up @@ -25,9 +25,7 @@
import org.sonar.api.utils.System2; import org.sonar.api.utils.System2;
import org.sonar.db.DbClient; import org.sonar.db.DbClient;
import org.sonar.db.DbSession; import org.sonar.db.DbSession;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.rule.RuleDefinitionDto; import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.OrganizationFlags; import org.sonar.server.organization.OrganizationFlags;
import org.sonar.server.qualityprofile.RuleActivator; import org.sonar.server.qualityprofile.RuleActivator;
import org.sonar.server.rule.index.RuleIndexer; import org.sonar.server.rule.index.RuleIndexer;
Expand All @@ -39,16 +37,13 @@ public class RuleDeleter {
private final RuleIndexer ruleIndexer; private final RuleIndexer ruleIndexer;
private final DbClient dbClient; private final DbClient dbClient;
private final RuleActivator ruleActivator; private final RuleActivator ruleActivator;
private final DefaultOrganizationProvider defaultOrganizationProvider;
private final OrganizationFlags organizationFlags; private final OrganizationFlags organizationFlags;


public RuleDeleter(System2 system2, RuleIndexer ruleIndexer, DbClient dbClient, RuleActivator ruleActivator, DefaultOrganizationProvider defaultOrganizationProvider, public RuleDeleter(System2 system2, RuleIndexer ruleIndexer, DbClient dbClient, RuleActivator ruleActivator, OrganizationFlags organizationFlags) {
OrganizationFlags organizationFlags) {
this.system2 = system2; this.system2 = system2;
this.ruleIndexer = ruleIndexer; this.ruleIndexer = ruleIndexer;
this.dbClient = dbClient; this.dbClient = dbClient;
this.ruleActivator = ruleActivator; this.ruleActivator = ruleActivator;
this.defaultOrganizationProvider = defaultOrganizationProvider;
this.organizationFlags = organizationFlags; this.organizationFlags = organizationFlags;
} }


Expand All @@ -61,10 +56,6 @@ public void delete(RuleKey ruleKey) {
throw new IllegalStateException("Only custom rules can be deleted"); throw new IllegalStateException("Only custom rules can be deleted");
} }


String defaultOrganizationUuid = defaultOrganizationProvider.get().getUuid();
OrganizationDto organization = dbClient.organizationDao().selectByUuid(dbSession, defaultOrganizationUuid)
.orElseThrow(() -> new IllegalStateException(String.format("Default organization not found for uuid '%s'", defaultOrganizationUuid)));

// For custom rule, first deactivate the rule on all profiles // For custom rule, first deactivate the rule on all profiles
if (rule.getTemplateId() != null) { if (rule.getTemplateId() != null) {
ruleActivator.deactivateOfAllOrganizations(dbSession, rule); ruleActivator.deactivateOfAllOrganizations(dbSession, rule);
Expand Down
Expand Up @@ -46,7 +46,6 @@
import org.sonar.db.rule.RuleDefinitionDto; import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.rule.RuleDto; import org.sonar.db.rule.RuleDto;
import org.sonar.db.rule.RuleParamDto; import org.sonar.db.rule.RuleParamDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.rule.index.RuleIndexer; import org.sonar.server.rule.index.RuleIndexer;
import org.sonar.server.user.UserSession; import org.sonar.server.user.UserSession;


Expand All @@ -62,13 +61,11 @@ public class RuleUpdater {
private final DbClient dbClient; private final DbClient dbClient;
private final RuleIndexer ruleIndexer; private final RuleIndexer ruleIndexer;
private final System2 system; private final System2 system;
private final DefaultOrganizationProvider defaultOrganizationProvider;


public RuleUpdater(DbClient dbClient, RuleIndexer ruleIndexer, System2 system, DefaultOrganizationProvider defaultOrganizationProvider) { public RuleUpdater(DbClient dbClient, RuleIndexer ruleIndexer, System2 system) {
this.dbClient = dbClient; this.dbClient = dbClient;
this.ruleIndexer = ruleIndexer; this.ruleIndexer = ruleIndexer;
this.system = system; this.system = system;
this.defaultOrganizationProvider = defaultOrganizationProvider;
} }


/** /**
Expand Down
Expand Up @@ -85,7 +85,7 @@ public class UpdateActionTest {
private Languages languages = new Languages(); private Languages languages = new Languages();
private RuleMapper mapper = new RuleMapper(languages, macroInterpreter); private RuleMapper mapper = new RuleMapper(languages, macroInterpreter);
private RuleIndexer ruleIndexer = new RuleIndexer(esClient, dbClient); private RuleIndexer ruleIndexer = new RuleIndexer(esClient, dbClient);
private RuleUpdater ruleUpdater = new RuleUpdater(dbClient, ruleIndexer, System2.INSTANCE, defaultOrganizationProvider); private RuleUpdater ruleUpdater = new RuleUpdater(dbClient, ruleIndexer, System2.INSTANCE);
private RuleWsSupport ruleWsSupport = new RuleWsSupport(dbClient, userSession, defaultOrganizationProvider); private RuleWsSupport ruleWsSupport = new RuleWsSupport(dbClient, userSession, defaultOrganizationProvider);
private WsAction underTest = new UpdateAction(dbClient, ruleUpdater, mapper, userSession, ruleWsSupport, defaultOrganizationProvider); private WsAction underTest = new UpdateAction(dbClient, ruleUpdater, mapper, userSession, ruleWsSupport, defaultOrganizationProvider);
private WsActionTester actionTester = new WsActionTester(underTest); private WsActionTester actionTester = new WsActionTester(underTest);
Expand Down

0 comments on commit 033ef4b

Please sign in to comment.