]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5007 improve usage of DbClient and move some services to new DAOs
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 21 May 2014 15:03:54 +0000 (17:03 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 21 May 2014 15:04:02 +0000 (17:04 +0200)
32 files changed:
sonar-core/src/main/java/org/sonar/api/DaoComponent.java [deleted file]
sonar-core/src/main/java/org/sonar/core/persistence/DaoComponent.java [new file with mode: 0644]
sonar-core/src/main/java/org/sonar/core/properties/PropertiesDao.java
sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDao.java
sonar-core/src/main/java/org/sonar/core/resource/ResourceDao.java
sonar-core/src/main/java/org/sonar/core/technicaldebt/db/CharacteristicDao.java
sonar-core/src/main/java/org/sonar/core/template/LoadedTemplateDao.java
sonar-server/src/main/java/org/sonar/server/component/persistence/ComponentDao.java
sonar-server/src/main/java/org/sonar/server/component/ws/ComponentAppAction.java
sonar-server/src/main/java/org/sonar/server/db/BaseDao.java
sonar-server/src/main/java/org/sonar/server/db/DbClient.java
sonar-server/src/main/java/org/sonar/server/debt/DebtModelBackup.java
sonar-server/src/main/java/org/sonar/server/debt/DebtModelOperations.java
sonar-server/src/main/java/org/sonar/server/measure/persistence/MeasureDao.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/QualityProfileService.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/RegisterQualityProfiles.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java
sonar-server/src/main/java/org/sonar/server/rule/RubyRuleService.java
sonar-server/src/main/java/org/sonar/server/rule/RuleOperations.java
sonar-server/src/main/java/org/sonar/server/rule/RuleRegistry.java
sonar-server/src/main/java/org/sonar/server/rule2/RegisterRules.java
sonar-server/src/main/java/org/sonar/server/rule2/persistence/RuleDao.java
sonar-server/src/main/java/org/sonar/server/source/SourceService.java
sonar-server/src/test/java/org/sonar/server/component/ws/ComponentAppActionTest.java
sonar-server/src/test/java/org/sonar/server/db/DbClientTest.java
sonar-server/src/test/java/org/sonar/server/debt/DebtModelBackupTest.java
sonar-server/src/test/java/org/sonar/server/debt/DebtModelOperationsTest.java
sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleServiceMediumTest.java
sonar-server/src/test/java/org/sonar/server/rule/RuleOperationsTest.java
sonar-server/src/test/java/org/sonar/server/rule/RuleRegistryTest.java
sonar-server/src/test/java/org/sonar/server/rule2/index/RuleIndexMediumTest.java
sonar-server/src/test/java/org/sonar/server/source/SourceServiceTest.java

diff --git a/sonar-core/src/main/java/org/sonar/api/DaoComponent.java b/sonar-core/src/main/java/org/sonar/api/DaoComponent.java
deleted file mode 100644 (file)
index 8b200d9..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.api;
-
-/**
- * @since 4.4
- */
-public interface DaoComponent {
-}
diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DaoComponent.java b/sonar-core/src/main/java/org/sonar/core/persistence/DaoComponent.java
new file mode 100644 (file)
index 0000000..da0a5f1
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.core.persistence;
+
+/**
+ * @since 4.4
+ */
+public interface DaoComponent {
+}
index 785416c5bad6471886ba22de2a5efc5a6f0cbb8e..be7e5ed7028ede0e4beefeb13d9079ffd4b8d6c3 100644 (file)
@@ -24,7 +24,7 @@ import com.google.common.base.Strings;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ibatis.session.SqlSession;
 import org.sonar.api.BatchComponent;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
index 276b5dcfe1998fa5467e0c9ae352545075eeba14..5b975d5dcb2e74ff854677532de2104036811ba0 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.core.qualityprofile.db;
 
 import com.google.common.base.Preconditions;
 import org.apache.ibatis.session.SqlSession;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.persistence.DbSession;
index 495c8f6acbdcb3cd4cf861747009369e832e5d17..e9475d79f480fa65812cee8d95c7a095d06cbb07 100644 (file)
@@ -23,7 +23,7 @@ import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import org.apache.ibatis.session.SqlSession;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.component.Component;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.persistence.MyBatis;
index 929a280598eb06e1becd827981418a6791febea8..2eb94c33bd12dd5854b34cb6bf791b77258bef25 100644 (file)
@@ -23,7 +23,7 @@ package org.sonar.core.technicaldebt.db;
 import com.google.common.collect.Lists;
 import org.apache.ibatis.session.SqlSession;
 import org.sonar.api.BatchComponent;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.core.persistence.MyBatis;
 
index 126ab44bfd357c8aeb65cecdbf57bcb9b6adf58d..fc47e1f751795d2d77cfb27b8470cdccc032eb7f 100644 (file)
@@ -21,7 +21,7 @@ package org.sonar.core.template;
 
 import org.apache.ibatis.session.SqlSession;
 import org.sonar.api.BatchComponent;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.core.persistence.MyBatis;
 
index 8c77f4a440a5714f852b0f390dc0fbd79a0f09bc..b72f9a286dc818d95706b792fd04a33b4c5a4ec1 100644 (file)
@@ -21,7 +21,7 @@ package org.sonar.server.component.persistence;
 
 import com.google.common.annotations.VisibleForTesting;
 import org.apache.ibatis.session.SqlSession;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.api.utils.System2;
 import org.sonar.core.component.ComponentDto;
index e18c1fb1f35b840da58a68fbcdb2c320e8617c8c..1eaa1bf260859586c4590345b9cf2695e11f65f1 100644 (file)
@@ -109,7 +109,7 @@ public class ComponentAppAction implements RequestHandler {
 
     DbSession session = dbClient.openSession(false);
     try {
-      ComponentDto component = dbClient.getDao(ComponentDao.class).getByKey(fileKey, session);
+      ComponentDto component = dbClient.componentDao().getByKey(fileKey, session);
       if (component == null) {
         throw new NotFoundException(String.format("Component '%s' does not exists.", fileKey));
       }
@@ -129,7 +129,7 @@ public class ComponentAppAction implements RequestHandler {
   }
 
   private void appendComponent(JsonWriter json, ComponentDto component, UserSession userSession, DbSession session) {
-    List<PropertyDto> propertyDtos = dbClient.getDao(PropertiesDao.class).selectByQuery(PropertyQuery.builder()
+    List<PropertyDto> propertyDtos = dbClient.propertiesDao().selectByQuery(PropertyQuery.builder()
         .setKey("favourite")
         .setComponentId(component.getId())
         .setUserId(userSession.userId())
@@ -164,7 +164,7 @@ public class ComponentAppAction implements RequestHandler {
   private void appendMeasures(JsonWriter json, String fileKey, DbSession session) {
     json.name("measures").beginObject();
 
-    List<MeasureDto> measures = dbClient.getDao(MeasureDao.class).findByComponentKeyAndMetricKeys(fileKey,
+    List<MeasureDto> measures = dbClient.measureDao().findByComponentKeyAndMetricKeys(fileKey,
       newArrayList(CoreMetrics.NCLOC_KEY, CoreMetrics.COVERAGE_KEY, CoreMetrics.DUPLICATED_LINES_DENSITY_KEY, CoreMetrics.TECHNICAL_DEBT_KEY, CoreMetrics.VIOLATIONS_KEY,
         CoreMetrics.BLOCKER_VIOLATIONS_KEY, CoreMetrics.MAJOR_VIOLATIONS_KEY, CoreMetrics.MAJOR_VIOLATIONS_KEY, CoreMetrics.MINOR_VIOLATIONS_KEY, CoreMetrics.INFO_VIOLATIONS_KEY),
       session
@@ -185,7 +185,7 @@ public class ComponentAppAction implements RequestHandler {
 
   private void appendPeriods(JsonWriter json, Long projectId, DbSession session) {
     json.name("periods").beginArray();
-    SnapshotDto snapshotDto = dbClient.getDao(ResourceDao.class).getLastSnapshotByResourceId(projectId, session);
+    SnapshotDto snapshotDto = dbClient.resourceDao().getLastSnapshotByResourceId(projectId, session);
     if (snapshotDto != null) {
       for (int i = 1; i <= 5; i++) {
         String mode = snapshotDto.getPeriodMode(i);
@@ -232,7 +232,7 @@ public class ComponentAppAction implements RequestHandler {
   @CheckForNull
   private Component componentById(@Nullable Long componentId, DbSession session) {
     if (componentId != null) {
-      return dbClient.getDao(ComponentDao.class).getById(componentId, session);
+      return dbClient.componentDao().getById(componentId, session);
     }
     return null;
   }
index d50ee8711be2e7c3556805801396467d9e4c52d6..32042064b004b9273aafb7f6a88979d84035c0df 100644 (file)
@@ -20,7 +20,7 @@
 package org.sonar.server.db;
 
 import com.google.common.base.Preconditions;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.utils.System2;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.Dto;
index 15d2de0afe9a0598e9d3a18cb04637b262b6bba8..db78a373d38ce61e0bef878c6dc2ef750700f5e9 100644 (file)
  */
 package org.sonar.server.db;
 
-import org.sonar.api.DaoComponent;
+import com.google.common.collect.Maps;
 import org.sonar.api.ServerComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.core.persistence.Database;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
+import org.sonar.core.properties.PropertiesDao;
 import org.sonar.core.qualityprofile.db.QualityProfileDao;
+import org.sonar.core.resource.ResourceDao;
+import org.sonar.core.technicaldebt.db.CharacteristicDao;
+import org.sonar.core.technicaldebt.db.RequirementDao;
+import org.sonar.core.template.LoadedTemplateDao;
+import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.measure.persistence.MeasureDao;
 import org.sonar.server.qualityprofile.persistence.ActiveRuleDao;
 import org.sonar.server.rule2.persistence.RuleDao;
 
-import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -38,16 +45,35 @@ public class DbClient implements ServerComponent {
 
   private final Database db;
   private final MyBatis myBatis;
-  private final Map<Class<?>, DaoComponent> daoComponents;
+  private final RuleDao ruleDao;
+  private final ActiveRuleDao activeRuleDao;
+  private final QualityProfileDao qualityProfileDao;
+  private final CharacteristicDao debtCharacteristicDao;
+  private final LoadedTemplateDao loadedTemplateDao;
+  private final PropertiesDao propertiesDao;
+  private final ComponentDao componentDao;
+  private final ResourceDao resourceDao;
+  private final MeasureDao measureDao;
+  private final RequirementDao debtRequirementDao;
 
   public DbClient(Database db, MyBatis myBatis, DaoComponent... daoComponents) {
     this.db = db;
     this.myBatis = myBatis;
-    this.daoComponents = new HashMap<Class<?>, DaoComponent>();
 
-    for(DaoComponent daoComponent : daoComponents){
-      this.daoComponents.put(daoComponent.getClass(), daoComponent);
+    Map<Class, DaoComponent> map = Maps.newHashMap();
+    for (DaoComponent daoComponent : daoComponents) {
+      map.put(daoComponent.getClass(), daoComponent);
     }
+    ruleDao = getDao(map, RuleDao.class);
+    activeRuleDao = getDao(map, ActiveRuleDao.class);
+    debtCharacteristicDao = getDao(map, CharacteristicDao.class);
+    qualityProfileDao = getDao(map, QualityProfileDao.class);
+    loadedTemplateDao = getDao(map, LoadedTemplateDao.class);
+    propertiesDao = getDao(map, PropertiesDao.class);
+    componentDao = getDao(map, ComponentDao.class);
+    resourceDao = getDao(map, ResourceDao.class);
+    measureDao = getDao(map, MeasureDao.class);
+    debtRequirementDao = getDao(map, RequirementDao.class);
   }
 
   public Database database() {
@@ -58,19 +84,47 @@ public class DbClient implements ServerComponent {
     return myBatis.openSession(batch);
   }
 
-  public <K> K getDao(Class<K> clazz){
-    return (K) this.daoComponents.get(clazz);
-  }
-
   public RuleDao ruleDao() {
-    return this.getDao(RuleDao.class);
+    return ruleDao;
   }
 
   public ActiveRuleDao activeRuleDao() {
-    return this.getDao(ActiveRuleDao.class);
+    return activeRuleDao;
   }
 
   public QualityProfileDao qualityProfileDao() {
-    return this.getDao(QualityProfileDao.class);
+    return qualityProfileDao;
+  }
+
+  public CharacteristicDao debtCharacteristicDao() {
+    return debtCharacteristicDao;
+  }
+
+  public LoadedTemplateDao loadedTemplateDao() {
+    return loadedTemplateDao;
+  }
+
+  public PropertiesDao propertiesDao() {
+    return propertiesDao;
+  }
+
+  public ComponentDao componentDao() {
+    return componentDao;
+  }
+
+  public ResourceDao resourceDao() {
+    return resourceDao;
+  }
+
+  public MeasureDao measureDao() {
+    return measureDao;
+  }
+
+  public RequirementDao debtRequirementDao() {
+    return debtRequirementDao;
+  }
+
+  private <K> K getDao(Map<Class, DaoComponent> map, Class<K> clazz) {
+    return (K) map.get(clazz);
   }
 }
index 2000feacf64ce3ec79e0040b0e4d011fa88caff9..5eaa6a3077c5a707f7d5afb649c92dee8788e902 100644 (file)
@@ -24,7 +24,6 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.ObjectUtils;
-import org.apache.ibatis.session.SqlSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.ServerComponent;
@@ -38,21 +37,18 @@ import org.sonar.api.utils.ValidationMessages;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
-import org.sonar.core.rule.RuleDao;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.core.technicaldebt.db.CharacteristicDao;
 import org.sonar.core.technicaldebt.db.CharacteristicDto;
+import org.sonar.server.db.DbClient;
 import org.sonar.server.debt.DebtModelXMLExporter.DebtModel;
 import org.sonar.server.debt.DebtModelXMLExporter.RuleDebt;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.rule.RuleDefinitionsLoader;
 import org.sonar.server.rule.RuleOperations;
-import org.sonar.server.rule.RuleRegistry;
 import org.sonar.server.user.UserSession;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-
 import java.io.Reader;
 import java.util.Date;
 import java.util.List;
@@ -63,40 +59,34 @@ public class DebtModelBackup implements ServerComponent {
 
   private static final Logger LOG = LoggerFactory.getLogger(DebtModelBackup.class);
 
-  private final MyBatis mybatis;
-  private final CharacteristicDao dao;
-  private final RuleDao ruleDao;
+  private final DbClient dbClient;
   private final DebtModelOperations debtModelOperations;
   private final RuleOperations ruleOperations;
   private final DebtModelPluginRepository debtModelPluginRepository;
   private final DebtCharacteristicsXMLImporter characteristicsXMLImporter;
   private final DebtRulesXMLImporter rulesXMLImporter;
   private final DebtModelXMLExporter debtModelXMLExporter;
-  private final RuleRegistry ruleRegistry;
   private final RuleDefinitionsLoader defLoader;
   private final System2 system2;
 
-  public DebtModelBackup(MyBatis mybatis, CharacteristicDao dao, RuleDao ruleDao, DebtModelOperations debtModelOperations, RuleOperations ruleOperations,
+  public DebtModelBackup(DbClient dbClient, DebtModelOperations debtModelOperations, RuleOperations ruleOperations,
                          DebtModelPluginRepository debtModelPluginRepository, DebtCharacteristicsXMLImporter characteristicsXMLImporter, DebtRulesXMLImporter rulesXMLImporter,
-                         DebtModelXMLExporter debtModelXMLExporter, RuleRegistry ruleRegistry, RuleDefinitionsLoader defLoader) {
-    this(mybatis, dao, ruleDao, debtModelOperations, ruleOperations, debtModelPluginRepository, characteristicsXMLImporter, rulesXMLImporter, debtModelXMLExporter, ruleRegistry,
+                         DebtModelXMLExporter debtModelXMLExporter, RuleDefinitionsLoader defLoader) {
+    this(dbClient, debtModelOperations, ruleOperations, debtModelPluginRepository, characteristicsXMLImporter, rulesXMLImporter, debtModelXMLExporter,
       defLoader, System2.INSTANCE);
   }
 
   @VisibleForTesting
-  DebtModelBackup(MyBatis mybatis, CharacteristicDao dao, RuleDao ruleDao, DebtModelOperations debtModelOperations, RuleOperations ruleOperations,
+  DebtModelBackup(DbClient dbClient, DebtModelOperations debtModelOperations, RuleOperations ruleOperations,
                   DebtModelPluginRepository debtModelPluginRepository, DebtCharacteristicsXMLImporter characteristicsXMLImporter, DebtRulesXMLImporter rulesXMLImporter,
-                  DebtModelXMLExporter debtModelXMLExporter, RuleRegistry ruleRegistry, RuleDefinitionsLoader defLoader, System2 system2) {
-    this.mybatis = mybatis;
-    this.dao = dao;
-    this.ruleDao = ruleDao;
+                  DebtModelXMLExporter debtModelXMLExporter, RuleDefinitionsLoader defLoader, System2 system2) {
+    this.dbClient = dbClient;
     this.debtModelOperations = debtModelOperations;
     this.ruleOperations = ruleOperations;
     this.debtModelPluginRepository = debtModelPluginRepository;
     this.characteristicsXMLImporter = characteristicsXMLImporter;
     this.rulesXMLImporter = rulesXMLImporter;
     this.debtModelXMLExporter = debtModelXMLExporter;
-    this.ruleRegistry = ruleRegistry;
     this.defLoader = defLoader;
     this.system2 = system2;
   }
@@ -112,10 +102,10 @@ public class DebtModelBackup implements ServerComponent {
   private String backupFromLanguage(@Nullable String languageKey) {
     checkPermission();
 
-    SqlSession session = mybatis.openSession(false);
+    DbSession session = dbClient.openSession(false);
     try {
       DebtModel debtModel = new DebtModel();
-      List<CharacteristicDto> characteristicDtos = dao.selectEnabledCharacteristics(session);
+      List<CharacteristicDto> characteristicDtos = dbClient.debtCharacteristicDao().selectEnabledCharacteristics(session);
       for (CharacteristicDto characteristicDto : characteristicDtos) {
         if (characteristicDto.getParentId() == null) {
           debtModel.addRootCharacteristic(toDebtCharacteristic(characteristicDto));
@@ -126,7 +116,7 @@ public class DebtModelBackup implements ServerComponent {
       }
 
       List<RuleDebt> rules = newArrayList();
-      for (RuleDto rule : ruleDao.selectEnablesAndNonManual(session)) {
+      for (RuleDto rule : dbClient.ruleDao().selectEnabledAndNonManual(session)) {
         if (languageKey == null || languageKey.equals(rule.getLanguage())) {
           RuleDebt ruleDebt = toRuleDebt(rule, debtModel);
           if (ruleDebt != null) {
@@ -147,13 +137,13 @@ public class DebtModelBackup implements ServerComponent {
     checkPermission();
 
     Date updateDate = new Date(system2.now());
-    DbSession session = mybatis.openSession(false);
+    DbSession session = dbClient.openSession(false);
     try {
       // Restore characteristics
       List<CharacteristicDto> allCharacteristicDtos = restoreCharacteristics(loadModelFromPlugin(DebtModelPluginRepository.DEFAULT_MODEL), updateDate, session);
 
       // Restore rules
-      List<RuleDto> ruleDtos = ruleDao.selectEnablesAndNonManual(session);
+      List<RuleDto> ruleDtos = dbClient.ruleDao().selectEnabledAndNonManual(session);
       if (!ruleDtos.isEmpty()) {
 
         // Load default rule definitions
@@ -172,7 +162,7 @@ public class DebtModelBackup implements ServerComponent {
     }
   }
 
-  private void resetRules(List<RuleDto> ruleDtos, List<RulesDefinition.Rule> rules, List<CharacteristicDto> allCharacteristicDtos, Date updateDate, DbSession session){
+  private void resetRules(List<RuleDto> ruleDtos, List<RulesDefinition.Rule> rules, List<CharacteristicDto> allCharacteristicDtos, Date updateDate, DbSession session) {
     for (RuleDto rule : ruleDtos) {
       // Restore default debt definitions
 
@@ -202,9 +192,8 @@ public class DebtModelBackup implements ServerComponent {
       rule.setRemediationCoefficient(null);
       rule.setRemediationOffset(null);
       rule.setUpdatedAt(updateDate);
-      ruleDao.update(rule, session);
+      dbClient.ruleDao().update(rule, session);
     }
-    ruleRegistry.reindex(ruleDtos, session);
   }
 
   /**
@@ -226,7 +215,7 @@ public class DebtModelBackup implements ServerComponent {
 
     ValidationMessages validationMessages = ValidationMessages.create();
     Date updateDate = new Date(system2.now());
-    DbSession session = mybatis.openSession(false);
+    DbSession session = dbClient.openSession(false);
     try {
       List<CharacteristicDto> allCharacteristicDtos = restoreCharacteristics(characteristicsXMLImporter.importXML(xml), updateDate, session);
       restoreRules(allCharacteristicDtos, rules(languageKey, session), rulesXMLImporter.importXML(xml, validationMessages), validationMessages, updateDate, session);
@@ -254,7 +243,6 @@ public class DebtModelBackup implements ServerComponent {
       rule.setUpdatedAt(updateDate);
       ruleDebts.remove(ruleDebt);
     }
-    ruleRegistry.reindex(rules, session);
 
     for (RuleDebt ruleDebt : ruleDebts) {
       validationMessages.addWarningText(String.format("The rule '%s' does not exist.", ruleDebt.ruleKey()));
@@ -263,7 +251,7 @@ public class DebtModelBackup implements ServerComponent {
 
   @VisibleForTesting
   List<CharacteristicDto> restoreCharacteristics(DebtModel targetModel, Date updateDate, DbSession session) {
-    List<CharacteristicDto> sourceCharacteristics = dao.selectEnabledCharacteristics(session);
+    List<CharacteristicDto> sourceCharacteristics = dbClient.debtCharacteristicDao().selectEnabledCharacteristics(session);
 
     List<CharacteristicDto> result = newArrayList();
 
@@ -285,11 +273,11 @@ public class DebtModelBackup implements ServerComponent {
   }
 
   private CharacteristicDto restoreCharacteristic(DebtCharacteristic targetCharacteristic, @Nullable Integer parentId, List<CharacteristicDto> sourceCharacteristics,
-                                                  Date updateDate, SqlSession session) {
+                                                  Date updateDate, DbSession session) {
     CharacteristicDto sourceCharacteristic = characteristicByKey(targetCharacteristic.key(), sourceCharacteristics, false);
     if (sourceCharacteristic == null) {
       CharacteristicDto newCharacteristic = toDto(targetCharacteristic, parentId).setCreatedAt(updateDate);
-      dao.insert(newCharacteristic, session);
+      dbClient.debtCharacteristicDao().insert(newCharacteristic, session);
       return newCharacteristic;
     } else {
       // Update only if modifications
@@ -300,7 +288,7 @@ public class DebtModelBackup implements ServerComponent {
         sourceCharacteristic.setOrder(targetCharacteristic.order());
         sourceCharacteristic.setParentId(parentId);
         sourceCharacteristic.setUpdatedAt(updateDate);
-        dao.update(sourceCharacteristic, session);
+        dbClient.debtCharacteristicDao().update(sourceCharacteristic, session);
       }
       return sourceCharacteristic;
     }
@@ -316,8 +304,8 @@ public class DebtModelBackup implements ServerComponent {
     }
   }
 
-  private List<RuleDto> rules(@Nullable final String languageKey, SqlSession session) {
-    List<RuleDto> rules = ruleDao.selectEnablesAndNonManual(session);
+  private List<RuleDto> rules(@Nullable final String languageKey, DbSession session) {
+    List<RuleDto> rules = dbClient.ruleDao().selectEnabledAndNonManual(session);
     if (languageKey == null) {
       return rules;
     } else {
index cc4a6eace9e8e961494e82de73f9f939adadb9ee..d711ad7fe487a26c8f83b7cf8fb3df3abd519629 100644 (file)
@@ -31,47 +31,38 @@ import org.sonar.api.utils.System2;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
-import org.sonar.core.rule.RuleDao;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.core.technicaldebt.db.CharacteristicDao;
 import org.sonar.core.technicaldebt.db.CharacteristicDto;
+import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.rule.RuleRegistry;
 import org.sonar.server.user.UserSession;
 import org.sonar.server.util.Validation;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-
 import java.util.Date;
 import java.util.List;
 
 public class DebtModelOperations implements ServerComponent {
 
-  private final MyBatis mybatis;
-  private final CharacteristicDao dao;
-  private final RuleDao ruleDao;
+  private final DbClient dbClient;
   private final System2 system2;
-  private final RuleRegistry ruleRegistry;
 
-  public DebtModelOperations(MyBatis mybatis, CharacteristicDao dao, RuleDao ruleDao, RuleRegistry ruleRegistry) {
-    this(mybatis, dao, ruleDao, ruleRegistry, System2.INSTANCE);
+  public DebtModelOperations(DbClient dbClient) {
+    this(dbClient, System2.INSTANCE);
   }
 
   @VisibleForTesting
-  DebtModelOperations(MyBatis mybatis, CharacteristicDao dao, RuleDao ruleDao, RuleRegistry ruleRegistry, System2 system2) {
-    this.mybatis = mybatis;
-    this.dao = dao;
-    this.ruleDao = ruleDao;
-    this.ruleRegistry = ruleRegistry;
+  DebtModelOperations(DbClient dbClient, System2 system2) {
+    this.dbClient = dbClient;
     this.system2 = system2;
   }
 
   public DebtCharacteristic create(String name, @Nullable Integer parentId) {
     checkPermission();
 
-    SqlSession session = mybatis.openSession(false);
+    SqlSession session = dbClient.openSession(false);
     try {
       checkNotAlreadyExists(name, session);
 
@@ -90,9 +81,9 @@ public class DebtModelOperations implements ServerComponent {
         newCharacteristic.setParentId(parent.getId());
       } else {
         // New root characteristic
-        newCharacteristic.setOrder(dao.selectMaxCharacteristicOrder(session) + 1);
+        newCharacteristic.setOrder(dbClient.debtCharacteristicDao().selectMaxCharacteristicOrder(session) + 1);
       }
-      dao.insert(newCharacteristic, session);
+      dbClient.debtCharacteristicDao().insert(newCharacteristic, session);
       session.commit();
       return toCharacteristic(newCharacteristic);
     } finally {
@@ -103,7 +94,7 @@ public class DebtModelOperations implements ServerComponent {
   public DebtCharacteristic rename(int characteristicId, String newName) {
     checkPermission();
 
-    SqlSession session = mybatis.openSession(false);
+    SqlSession session = dbClient.openSession(false);
     try {
       checkNotAlreadyExists(newName, session);
 
@@ -111,7 +102,7 @@ public class DebtModelOperations implements ServerComponent {
       if (!dto.getName().equals(newName)) {
         dto.setName(newName);
         dto.setUpdatedAt(new Date(system2.now()));
-        dao.update(dto, session);
+        dbClient.debtCharacteristicDao().update(dto, session);
         session.commit();
       }
       return toCharacteristic(dto);
@@ -131,7 +122,7 @@ public class DebtModelOperations implements ServerComponent {
   private DebtCharacteristic move(int characteristicId, boolean moveUpOrDown) {
     checkPermission();
 
-    SqlSession session = mybatis.openSession(false);
+    SqlSession session = dbClient.openSession(false);
     try {
       final CharacteristicDto dto = findCharacteristic(characteristicId, session);
       if (dto.getParentId() != null) {
@@ -148,11 +139,11 @@ public class DebtModelOperations implements ServerComponent {
       int nextOrder = getOrder(dtoToSwitchOrderWith);
       dtoToSwitchOrderWith.setOrder(currentOrder);
       dtoToSwitchOrderWith.setUpdatedAt(new Date(system2.now()));
-      dao.update(dtoToSwitchOrderWith, session);
+      dbClient.debtCharacteristicDao().update(dtoToSwitchOrderWith, session);
 
       dto.setOrder(nextOrder);
       dto.setUpdatedAt(new Date(system2.now()));
-      dao.update(dto, session);
+      dbClient.debtCharacteristicDao().update(dto, session);
 
       session.commit();
       return toCharacteristic(dto);
@@ -161,8 +152,8 @@ public class DebtModelOperations implements ServerComponent {
     }
   }
 
-  private int getOrder(CharacteristicDto characteristicDto){
-    Integer order= characteristicDto.getOrder();
+  private int getOrder(CharacteristicDto characteristicDto) {
+    Integer order = characteristicDto.getOrder();
     if (order == null) {
       throw new IllegalArgumentException(String.format("The order of the characteristic '%s' should not be null", characteristicDto.getKey()));
     }
@@ -172,7 +163,7 @@ public class DebtModelOperations implements ServerComponent {
   @CheckForNull
   private CharacteristicDto findCharacteristicToSwitchWith(final CharacteristicDto dto, final boolean moveUpOrDown, SqlSession session) {
     // characteristics should be sort by 'order'
-    List<CharacteristicDto> rootCharacteristics = dao.selectEnabledRootCharacteristics(session);
+    List<CharacteristicDto> rootCharacteristics = dbClient.debtCharacteristicDao().selectEnabledRootCharacteristics(session);
     int currentPosition = Iterables.indexOf(rootCharacteristics, new Predicate<CharacteristicDto>() {
       @Override
       public boolean apply(@Nullable CharacteristicDto input) {
@@ -191,7 +182,7 @@ public class DebtModelOperations implements ServerComponent {
     checkPermission();
 
     Date updateDate = new Date(system2.now());
-    DbSession session = mybatis.openSession(true);
+    DbSession session = dbClient.openSession(true);
     try {
       delete(findCharacteristic(characteristicId, session), updateDate, session);
       session.commit();
@@ -209,7 +200,7 @@ public class DebtModelOperations implements ServerComponent {
     if (characteristicOrSubCharacteristic.isEnabled()) {
       // When root characteristic, browse sub characteristics and disable rule debt on each sub characteristic then disable it
       if (characteristicOrSubCharacteristic.getParentId() == null) {
-        List<CharacteristicDto> subCharacteristics = dao.selectCharacteristicsByParentId(characteristicOrSubCharacteristic.getId(), session);
+        List<CharacteristicDto> subCharacteristics = dbClient.debtCharacteristicDao().selectCharacteristicsByParentId(characteristicOrSubCharacteristic.getId(), session);
         for (CharacteristicDto subCharacteristic : subCharacteristics) {
           disableSubCharacteristic(subCharacteristic, updateDate, session);
         }
@@ -223,14 +214,14 @@ public class DebtModelOperations implements ServerComponent {
 
   private void disableSubCharacteristic(CharacteristicDto subCharacteristic, Date updateDate, DbSession session) {
     // Disable debt on all rules (even REMOVED ones, in order to have no issue if they are reactivated) linked to the sub characteristic
-    disableRulesDebt(ruleDao.selectBySubCharacteristicId(subCharacteristic.getId(), session), subCharacteristic.getId(), updateDate, session);
+    disableRulesDebt(dbClient.ruleDao().findRulesByDebtSubCharacteristicId(subCharacteristic.getId(), session), subCharacteristic.getId(), updateDate, session);
     disableCharacteristic(subCharacteristic, updateDate, session);
   }
 
   private void disableCharacteristic(CharacteristicDto characteristic, Date updateDate, SqlSession session) {
     characteristic.setEnabled(false);
     characteristic.setUpdatedAt(updateDate);
-    dao.update(characteristic, session);
+    dbClient.debtCharacteristicDao().update(characteristic, session);
   }
 
   private void disableRulesDebt(List<RuleDto> ruleDtos, Integer subCharacteristicId, Date updateDate, DbSession session) {
@@ -248,14 +239,12 @@ public class DebtModelOperations implements ServerComponent {
         ruleDto.setDefaultRemediationCoefficient(null);
         ruleDto.setDefaultRemediationOffset(null);
       }
-      ruleDto.setUpdatedAt(updateDate);
-      ruleDao.update(ruleDto, session);
+      dbClient.ruleDao().update(ruleDto, session);
     }
-    ruleRegistry.reindex(ruleDtos, session);
   }
 
   private CharacteristicDto findCharacteristic(Integer id, SqlSession session) {
-    CharacteristicDto dto = dao.selectById(id, session);
+    CharacteristicDto dto = dbClient.debtCharacteristicDao().selectById(id, session);
     if (dto == null) {
       throw new NotFoundException(String.format("Characteristic with id %s does not exists.", id));
     }
@@ -263,7 +252,7 @@ public class DebtModelOperations implements ServerComponent {
   }
 
   private void checkNotAlreadyExists(String name, SqlSession session) {
-    if (dao.selectByName(name, session) != null) {
+    if (dbClient.debtCharacteristicDao().selectByName(name, session) != null) {
       throw BadRequestException.ofL10n(Validation.IS_ALREADY_USED_MESSAGE, name);
     }
   }
index 5bf5fc6b94b94226b57e3e3b4ee24ec38518abdc..c77e87014e26d221138841c3855c7c98841d4f75 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.server.measure.persistence;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Lists;
-import org.sonar.api.DaoComponent;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.api.utils.System2;
 import org.sonar.core.measure.db.MeasureDto;
index c4c470c340d92916363e42d1f69b26f9643e6fbb..f31f144a26a40ed387776fa0e2fd8a96c2bcb8df 100644 (file)
@@ -20,7 +20,6 @@
 package org.sonar.server.qualityprofile;
 
 import org.sonar.api.ServerComponent;
-import org.sonar.core.qualityprofile.db.QualityProfileDao;
 import org.sonar.core.qualityprofile.db.QualityProfileDto;
 import org.sonar.server.db.DbClient;
 
@@ -33,11 +32,11 @@ public class QualityProfileService implements ServerComponent {
 
   private final DbClient dbClient;
 
-  public QualityProfileService(DbClient dbClient){
+  public QualityProfileService(DbClient dbClient) {
     this.dbClient = dbClient;
   }
 
   public List<QualityProfileDto> findAll() {
-    return dbClient.getDao(QualityProfileDao.class).selectAll();
+    return dbClient.qualityProfileDao().selectAll();
   }
 }
index 7c51baafbf0104ad3fca0d9444d8c21d0a4528bf..21eb41f951fcd242118a50f80c415a9fce75d7f7 100644 (file)
@@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory;
 import org.sonar.api.profiles.ProfileDefinition;
 import org.sonar.api.profiles.RulesProfile;
 import org.sonar.api.rule.RuleKey;
-import org.sonar.api.rules.*;
+import org.sonar.api.rules.ActiveRuleParam;
 import org.sonar.api.utils.TimeProfiler;
 import org.sonar.api.utils.ValidationMessages;
 import org.sonar.core.permission.GlobalPermissions;
@@ -41,7 +41,6 @@ import org.sonar.core.qualityprofile.db.ActiveRuleDto;
 import org.sonar.core.qualityprofile.db.ActiveRuleParamDto;
 import org.sonar.core.qualityprofile.db.QualityProfileDto;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.core.template.LoadedTemplateDao;
 import org.sonar.core.template.LoadedTemplateDto;
 import org.sonar.jpa.session.DatabaseSessionFactory;
 import org.sonar.server.db.DbClient;
@@ -135,11 +134,11 @@ public class RegisterQualityProfiles {
 
   private QualityProfileDto newQualityProfileDto(String name, String language, DbSession session) {
     checkPermission(UserSession.get());
-      if (dbClient.qualityProfileDao().selectByNameAndLanguage(name, language, session) != null) {
-        throw BadRequestException.ofL10n("quality_profiles.profile_x_already_exists", name);
-      }
+    if (dbClient.qualityProfileDao().selectByNameAndLanguage(name, language, session) != null) {
+      throw BadRequestException.ofL10n("quality_profiles.profile_x_already_exists", name);
+    }
 
-    QualityProfileDto profile =  QualityProfileDto.createFor(name, language)
+    QualityProfileDto profile = QualityProfileDto.createFor(name, language)
       .setVersion(1).setUsed(false);
     dbClient.qualityProfileDao().insert(profile, session);
     return profile;
@@ -181,7 +180,7 @@ public class RegisterQualityProfiles {
       }
     }
 
-    dbClient.getDao(LoadedTemplateDao.class)
+    dbClient.loadedTemplateDao()
       .insert(new LoadedTemplateDto(templateKey(language, name), LoadedTemplateDto.QUALITY_PROFILE_TYPE), session);
   }
 
@@ -248,7 +247,7 @@ public class RegisterQualityProfiles {
   }
 
   private boolean shouldRegister(String language, String profileName, SqlSession session) {
-    return dbClient.getDao(LoadedTemplateDao.class)
+    return dbClient.loadedTemplateDao()
       .countByTypeAndKey(LoadedTemplateDto.QUALITY_PROFILE_TYPE, templateKey(language, profileName), session) == 0;
   }
 
index e849104d5ab80b75f00ee3d2e9952ad70a7bf991..de1592669b1181c6eb0ce0ae9c57dce941e69d84 100644 (file)
@@ -123,7 +123,7 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu
     DbSession session = db.openSession(false);
     try {
       //TODO because DTO uses legacy ID pattern
-      QualityProfileDto profile = db.getDao(QualityProfileDao.class)
+      QualityProfileDto profile = db.qualityProfileDao()
         .selectById(activeRuleDto.getProfileId());
       newRule.put(ActiveRuleField.PROFILE_KEY.key(), profile.getKey().toString());
 
index a6112a97812dbc1761d38c4a1c384572bf306a50..92c316c186d1b8932a01ba4c72c3c02bc448aed6 100644 (file)
@@ -29,8 +29,6 @@ import org.sonar.server.paging.PagedResult;
 import org.sonar.server.util.RubyUtils;
 
 import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
-
 import java.util.Map;
 
 /**
index 0f063f25b143177ae8bab81ffde575b4f4072b23..19b77fd1a115e48bea9ae530d3b22a295200bcf8 100644 (file)
@@ -23,7 +23,6 @@ package org.sonar.server.rule;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
 import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.ibatis.session.SqlSession;
 import org.sonar.api.ServerComponent;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.api.server.debt.DebtRemediationFunction;
@@ -32,10 +31,9 @@ import org.sonar.api.utils.System2;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
-import org.sonar.core.rule.RuleDao;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.core.technicaldebt.db.CharacteristicDao;
 import org.sonar.core.technicaldebt.db.CharacteristicDto;
+import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.user.UserSession;
@@ -50,34 +48,25 @@ import java.util.Date;
 @Deprecated
 public class RuleOperations implements ServerComponent {
 
-  private final MyBatis myBatis;
-  private final RuleDao ruleDao;
-  private final CharacteristicDao characteristicDao;
-  private final RuleRegistry ruleRegistry;
-
+  private final DbClient dbClient;
   private final System2 system;
 
-  public RuleOperations(MyBatis myBatis, RuleDao ruleDao, CharacteristicDao characteristicDao,
-                        RuleRegistry ruleRegistry) {
-    this(myBatis, ruleDao, characteristicDao, ruleRegistry, System2.INSTANCE);
+  public RuleOperations(DbClient dbClient) {
+    this(dbClient, System2.INSTANCE);
   }
 
   @VisibleForTesting
-  RuleOperations(MyBatis myBatis, RuleDao ruleDao, CharacteristicDao characteristicDao,
-                 RuleRegistry ruleRegistry, System2 system) {
-    this.myBatis = myBatis;
-    this.ruleDao = ruleDao;
-    this.characteristicDao = characteristicDao;
-    this.ruleRegistry = ruleRegistry;
+  RuleOperations(DbClient dbClient, System2 system) {
+    this.dbClient = dbClient;
     this.system = system;
   }
 
 
   public void updateRule(RuleChange ruleChange, UserSession userSession) {
     checkPermission(userSession);
-    DbSession session = myBatis.openSession(false);
+    DbSession session = dbClient.openSession(false);
     try {
-      RuleDto ruleDto = ruleDao.selectByKey(ruleChange.ruleKey(), session);
+      RuleDto ruleDto = dbClient.ruleDao().getByKey(ruleChange.ruleKey(), session);
       if (ruleDto == null) {
         throw new NotFoundException(String.format("Unknown rule '%s'", ruleChange.ruleKey()));
       }
@@ -86,7 +75,7 @@ public class RuleOperations implements ServerComponent {
 
       // A sub-characteristic is given -> update rule debt if given values are different from overridden ones and from default ones
       if (!Strings.isNullOrEmpty(subCharacteristicKey)) {
-        subCharacteristic = characteristicDao.selectByKey(subCharacteristicKey, session);
+        subCharacteristic = dbClient.debtCharacteristicDao().selectByKey(subCharacteristicKey, session);
         if (subCharacteristic == null) {
           throw new NotFoundException(String.format("Unknown sub characteristic '%s'", ruleChange.debtCharacteristicKey()));
         }
@@ -96,7 +85,6 @@ public class RuleOperations implements ServerComponent {
         new Date(system.now()), session);
       if (needUpdate) {
         session.commit();
-        reindexRule(ruleDto, session);
       }
     } catch (IllegalArgumentException e) {
       throw BadRequestException.of(e.getMessage());
@@ -144,8 +132,7 @@ public class RuleOperations implements ServerComponent {
     }
 
     if (needUpdate) {
-      ruleDto.setUpdatedAt(updateDate);
-      ruleDao.update(ruleDto, session);
+      dbClient.ruleDao().update(ruleDto, session);
     }
     return needUpdate;
   }
@@ -172,10 +159,6 @@ public class RuleOperations implements ServerComponent {
       .isEquals();
   }
 
-  private void reindexRule(RuleDto rule, SqlSession session) {
-    ruleRegistry.reindex(rule, session);
-  }
-
   private void checkPermission(UserSession userSession) {
     userSession.checkLoggedIn();
     userSession.checkGlobalPermission(GlobalPermissions.QUALITY_PROFILE_ADMIN);
index c5ee7c774b3ca303156139612c57fd66fd1b4b86..57ace078d0252f136ec9bb1ba4f0b9fe571021a2 100644 (file)
@@ -112,7 +112,7 @@ public class RuleRegistry {
     }
   }
 
-  public String[] reindex(SqlSession session) {
+  String[] reindex(SqlSession session) {
     return reindex(ruleDao.selectEnablesAndNonManual(session), session);
   }
 
@@ -154,7 +154,7 @@ public class RuleRegistry {
   /**
    * Reindex one rule
    */
-  public void reindex(RuleDto rule) {
+  void reindex(RuleDto rule) {
     SqlSession sqlSession = myBatis.openSession(false);
     try {
       reindex(rule, sqlSession);
@@ -207,16 +207,6 @@ public class RuleRegistry {
     }
   }
 
-  public void removeDeletedRules(String[] ids) {
-    List<String> indexIds = searchIndex.findDocumentIds(SearchQuery.create().index(INDEX_RULES).type(TYPE_RULE));
-    indexIds.removeAll(Arrays.asList(ids));
-    if (!indexIds.isEmpty()) {
-      TIME_PROFILER.start("Remove deleted rule documents");
-      searchIndex.bulkDelete(INDEX_RULES, TYPE_RULE, indexIds.toArray(new String[0]));
-      TIME_PROFILER.stop();
-    }
-  }
-
   private XContentBuilder ruleDocument(RuleDto rule, @Nullable CharacteristicDto characteristicDto, @Nullable CharacteristicDto subCharacteristicDto,
     Collection<RuleParamDto> params) throws IOException {
     XContentBuilder document = XContentFactory.jsonBuilder()
index 69310f0beef6b031f93b3fab2cfaf26c6a2f51b8..d8f09da5fe4950388e61bb362111bc1e8f0b8158 100644 (file)
@@ -84,7 +84,7 @@ public class RegisterRules implements Startable {
     this.defLoader = defLoader;
     this.profilesManager = profilesManager;
     this.dbClient = dbClient;
-    this.characteristicDao = dbClient.getDao(CharacteristicDao.class);
+    this.characteristicDao = dbClient.debtCharacteristicDao();
   }
 
   @Override
@@ -280,7 +280,7 @@ public class RegisterRules implements Startable {
         // TODO store param name
         if (mergeParam(paramDto, paramDef)) {
           dbClient.ruleDao().updateRuleParam(rule, paramDto, session);
-        }  else {
+        } else {
           // TODO to be replaced by synchronizer
           session.enqueue(new EmbeddedIndexAction<RuleKey>(RuleIndexDefinition.INDEX_TYPE, IndexAction.Method.UPDATE, paramDto, rule.getKey()));
         }
index 27b809d283e0549c22f7705a967d1e05eb4235c6..8cece78d6ecc89e1101d880620930300c2f44fa1 100644 (file)
@@ -169,4 +169,12 @@ public class RuleDao extends BaseDao<RuleMapper, RuleDto, RuleKey> {
     Preconditions.checkNotNull(rule.getId(), "Rule is not persisted");
     return mapper(session).selectParamByRuleAndKey(rule.getId(), key);
   }
+
+  public List<RuleDto> findRulesByDebtSubCharacteristicId(int id, DbSession session) {
+    return mapper(session).selectBySubCharacteristicId(id);
+  }
+
+  public List<RuleDto> selectEnabledAndNonManual(DbSession session) {
+    return mapper(session).selectEnablesAndNonManual();
+  }
 }
index 4c975f3c0c8793b4be0a05978539984ea2a98cb0..b91bd7389d3826a7ce2c6b29443531e170a423f0 100644 (file)
@@ -28,18 +28,15 @@ import org.sonar.core.measure.db.MeasureKey;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
 import org.sonar.server.db.DbClient;
-import org.sonar.server.measure.persistence.MeasureDao;
 import org.sonar.server.user.UserSession;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-
 import java.util.List;
 
 public class SourceService implements ServerComponent {
 
   private final DbClient dbClient;
-
   private final HtmlSourceDecorator sourceDecorator;
 
   /**
@@ -47,13 +44,10 @@ public class SourceService implements ServerComponent {
    */
   private final DeprecatedSourceDecorator deprecatedSourceDecorator;
 
-  private final MeasureDao measureDao;
-
   public SourceService(DbClient dbClient, HtmlSourceDecorator sourceDecorator, DeprecatedSourceDecorator deprecatedSourceDecorator) {
     this.dbClient = dbClient;
     this.sourceDecorator = sourceDecorator;
     this.deprecatedSourceDecorator = deprecatedSourceDecorator;
-    this.measureDao = dbClient.getDao(MeasureDao.class);
   }
 
   public List<String> getLinesAsHtml(String fileKey) {
@@ -83,7 +77,7 @@ public class SourceService implements ServerComponent {
   }
 
   public boolean hasScmData(String fileKey, DbSession session) {
-    return measureDao.existsByKey(MeasureKey.of(fileKey, CoreMetrics.SCM_AUTHORS_BY_LINE_KEY), session);
+    return dbClient.measureDao().existsByKey(MeasureKey.of(fileKey, CoreMetrics.SCM_AUTHORS_BY_LINE_KEY), session);
   }
 
   public boolean hasScmData(String fileKey) {
@@ -104,7 +98,7 @@ public class SourceService implements ServerComponent {
   private String findDataFromComponent(String fileKey, String metricKey) {
     DbSession session = dbClient.openSession(false);
     try {
-      MeasureDto data = measureDao.getByKey(MeasureKey.of(fileKey, metricKey), session);
+      MeasureDto data = dbClient.measureDao().getByKey(MeasureKey.of(fileKey, metricKey), session);
       if (data != null) {
         return data.getData();
       }
index 6397c7693092094432c30222c460bfce30383126..b48ca55c5354ccd79a306f70b2ea7693b7274317 100644 (file)
@@ -106,10 +106,10 @@ public class ComponentAppActionTest {
   public void setUp() throws Exception {
     DbClient dbClient = mock(DbClient.class);
     when(dbClient.openSession(false)).thenReturn(session);
-    when(dbClient.getDao(ComponentDao.class)).thenReturn(componentDao);
-    when(dbClient.getDao(ResourceDao.class)).thenReturn(resourceDao);
-    when(dbClient.getDao(PropertiesDao.class)).thenReturn(propertiesDao);
-    when(dbClient.getDao(MeasureDao.class)).thenReturn(measureDao);
+    when(dbClient.componentDao()).thenReturn(componentDao);
+    when(dbClient.resourceDao()).thenReturn(resourceDao);
+    when(dbClient.propertiesDao()).thenReturn(propertiesDao);
+    when(dbClient.measureDao()).thenReturn(measureDao);
 
     when(issueService.findSeveritiesByComponent(anyString(), eq(session))).thenReturn(mock(Multiset.class));
     when(issueService.findRulesByComponent(anyString(), eq(session))).thenReturn(mock(RulesAggregation.class));
index ebbc386f16fcaec42ec5668321ea3d8757112eac..a9ab4d21df06b7f85b5ad37e4f431b0425539736 100644 (file)
@@ -29,7 +29,6 @@ import org.sonar.server.qualityprofile.persistence.ActiveRuleDao;
 import org.sonar.server.rule2.persistence.RuleDao;
 
 import static org.fest.assertions.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
 
 public class DbClientTest {
 
@@ -39,9 +38,9 @@ public class DbClientTest {
   @Test
   public void facade() throws Exception {
     MyBatis myBatis = db.myBatis();
-    RuleDao ruleDao = mock(RuleDao.class);
-    ActiveRuleDao activeRuleDao = mock(ActiveRuleDao.class);
-    QualityProfileDao qualityProfileDao = mock(QualityProfileDao.class);
+    RuleDao ruleDao = new RuleDao();
+    QualityProfileDao qualityProfileDao = new QualityProfileDao(myBatis);
+    ActiveRuleDao activeRuleDao = new ActiveRuleDao(qualityProfileDao, ruleDao);
 
     DbClient client = new DbClient(db.database(), myBatis, ruleDao, activeRuleDao, qualityProfileDao);
 
@@ -52,8 +51,8 @@ public class DbClientTest {
     dbSession.close();
 
     // DAO
-    assertThat(client.getDao(qualityProfileDao.getClass())).isSameAs(qualityProfileDao);
-    assertThat(client.getDao(activeRuleDao.getClass())).isSameAs(activeRuleDao);
-    assertThat(client.getDao(ruleDao.getClass())).isSameAs(ruleDao);
+    assertThat(client.qualityProfileDao()).isSameAs(qualityProfileDao);
+    assertThat(client.activeRuleDao()).isSameAs(activeRuleDao);
+    assertThat(client.ruleDao()).isSameAs(ruleDao);
   }
 }
index 8cf19f011bcf3dd9584ddfc26675a0d77e83fbb8..4a4419fe3fece6736e60a4c1be144dea4b7d9a3b 100644 (file)
@@ -40,16 +40,15 @@ import org.sonar.api.utils.System2;
 import org.sonar.api.utils.ValidationMessages;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.core.persistence.MyBatis;
-import org.sonar.core.rule.RuleDao;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.core.technicaldebt.db.CharacteristicDao;
 import org.sonar.core.technicaldebt.db.CharacteristicDto;
+import org.sonar.server.db.DbClient;
 import org.sonar.server.debt.DebtModelXMLExporter.DebtModel;
 import org.sonar.server.debt.DebtModelXMLExporter.RuleDebt;
 import org.sonar.server.rule.RuleDefinitionsLoader;
 import org.sonar.server.rule.RuleOperations;
-import org.sonar.server.rule.RuleRegistry;
+import org.sonar.server.rule2.persistence.RuleDao;
 import org.sonar.server.user.MockUserSession;
 
 import java.io.Reader;
@@ -77,7 +76,7 @@ import static org.mockito.Mockito.when;
 public class DebtModelBackupTest {
 
   @Mock
-  MyBatis myBatis;
+  DbClient dbClient;
 
   @Mock
   DbSession session;
@@ -106,9 +105,6 @@ public class DebtModelBackupTest {
   @Mock
   DebtModelXMLExporter debtModelXMLExporter;
 
-  @Mock
-  RuleRegistry ruleRegistry;
-
   @Mock
   RuleDefinitionsLoader defLoader;
 
@@ -148,13 +144,15 @@ public class DebtModelBackupTest {
       }
     }).when(dao).insert(any(CharacteristicDto.class), any(DbSession.class));
 
-    when(myBatis.openSession(false)).thenReturn(session);
+    when(dbClient.openSession(false)).thenReturn(session);
+    when(dbClient.ruleDao()).thenReturn(ruleDao);
+    when(dbClient.debtCharacteristicDao()).thenReturn(dao);
 
     Reader defaultModelReader = mock(Reader.class);
     when(debtModelPluginRepository.createReaderForXMLFile("technical-debt")).thenReturn(defaultModelReader);
 
-    debtModelBackup = new DebtModelBackup(myBatis, dao, ruleDao, debtModelOperations, ruleOperations, debtModelPluginRepository, characteristicsXMLImporter, rulesXMLImporter,
-      debtModelXMLExporter, ruleRegistry, defLoader, system2);
+    debtModelBackup = new DebtModelBackup(dbClient, debtModelOperations, ruleOperations, debtModelPluginRepository, characteristicsXMLImporter, rulesXMLImporter,
+      debtModelXMLExporter, defLoader, system2);
   }
 
   @Test
@@ -164,7 +162,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       // Rule with overridden debt values
       new RuleDto().setRepositoryKey("squid").setRuleKey("UselessImportCheck")
         .setSubCharacteristicId(2)
@@ -210,7 +208,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       // Debt disabled
       new RuleDto().setRepositoryKey("squid").setRuleKey("UselessImportCheck").setSubCharacteristicId(RuleDto.DISABLED_CHARACTERISTIC_ID),
 
@@ -232,7 +230,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       // Rule with default debt values : default value is linear (only coefficient is set) and overridden value is constant per issue (only offset is set)
       // -> Ony offset should be set
       new RuleDto().setRepositoryKey("squid").setRuleKey("AvoidNPE")
@@ -270,7 +268,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck").setLanguage("java")
         .setSubCharacteristicId(2)
         .setRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE.toString())
@@ -426,7 +424,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1)//.setCreatedAt(oldDate)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setRepositoryKey("squid").setRuleKey("NPE")
         .setDefaultSubCharacteristicId(10)
         .setDefaultRemediationFunction(DebtRemediationFunction.Type.LINEAR.toString())
@@ -455,10 +453,9 @@ public class DebtModelBackupTest {
     verify(dao, times(2)).update(any(CharacteristicDto.class), eq(session));
     verifyNoMoreInteractions(dao);
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
     verifyNoMoreInteractions(ruleDao);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
 
     verify(session).commit();
 
@@ -488,7 +485,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1).setCreatedAt(oldDate)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setRepositoryKey("squid").setRuleKey("NPE")
         .setDefaultSubCharacteristicId(10)
         .setDefaultRemediationFunction(DebtRemediationFunction.Type.LINEAR.toString())
@@ -515,10 +512,9 @@ public class DebtModelBackupTest {
     verify(dao, times(2)).update(any(CharacteristicDto.class), eq(session));
     verifyNoMoreInteractions(dao);
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
     verifyNoMoreInteractions(ruleDao);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
 
     verify(session).commit();
 
@@ -541,7 +537,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1).setCreatedAt(oldDate)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       // Template rule
       new RuleDto().setId(5).setRepositoryKey("squid").setRuleKey("XPath")
         .setSubCharacteristicId(2)
@@ -571,10 +567,9 @@ public class DebtModelBackupTest {
 
     debtModelBackup.reset();
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(ruleDao, times(2)).update(ruleCaptor.capture(), eq(session));
     verifyNoMoreInteractions(ruleDao);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
     verify(session).commit();
 
     RuleDto rule = ruleCaptor.getAllValues().get(1);
@@ -604,7 +599,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler updated").setParentId(1).setCreatedAt(oldDate)
     ));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(Collections.<RuleDto>emptyList());
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(Collections.<RuleDto>emptyList());
 
     debtModelBackup.reset();
 
@@ -612,9 +607,8 @@ public class DebtModelBackupTest {
     verify(dao, times(2)).update(any(CharacteristicDto.class), eq(session));
     verifyNoMoreInteractions(dao);
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(ruleDao, never()).update(any(RuleDto.class), eq(session));
-    verifyZeroInteractions(ruleRegistry);
     verifyZeroInteractions(defLoader);
 
     verify(session).commit();
@@ -637,7 +631,7 @@ public class DebtModelBackupTest {
       .setSubCharacteristicKey("COMPILER")
       .setFunction(DebtRemediationFunction.Type.LINEAR.name()).setCoefficient("2h")));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck")
         .setDefaultSubCharacteristicId(3).setDefaultRemediationFunction("LINEAR").setDefaultRemediationCoefficient("2h")
 //        .setCreatedAt(oldDate).setUpdatedAt(oldDate)
@@ -647,8 +641,7 @@ public class DebtModelBackupTest {
 
     verify(ruleOperations).updateRule(ruleCaptor.capture(), eq(compiler), eq("LINEAR"), eq("2h"), isNull(String.class), eq(now), eq(session));
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(session).commit();
   }
 
@@ -662,7 +655,7 @@ public class DebtModelBackupTest {
       new CharacteristicDto().setId(1).setKey("PORTABILITY").setName("Portability").setOrder(1).setCreatedAt(oldDate),
       new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1).setCreatedAt(oldDate)));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck")
         .setDefaultSubCharacteristicId(2).setDefaultRemediationFunction("LINEAR_OFFSET").setDefaultRemediationCoefficient("2h").setDefaultRemediationOffset("15min")
 //        .setCreatedAt(oldDate).setUpdatedAt(oldDate)
@@ -672,8 +665,7 @@ public class DebtModelBackupTest {
 
     verify(ruleOperations).updateRule(ruleCaptor.capture(), isNull(CharacteristicDto.class), isNull(String.class), isNull(String.class), isNull(String.class), eq(now), eq(session));
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(session).commit();
   }
 
@@ -691,7 +683,7 @@ public class DebtModelBackupTest {
     when(rulesXMLImporter.importXML(anyString(), any(ValidationMessages.class))).thenReturn(newArrayList(new RuleDebt()
       .setRuleKey(RuleKey.of("squid", "UselessImportCheck")).setSubCharacteristicKey("COMPILER").setFunction(DebtRemediationFunction.Type.LINEAR.name()).setCoefficient("2h")));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck").setLanguage("java")
         .setDefaultSubCharacteristicId(10)
         .setDefaultRemediationFunction(DebtRemediationFunction.Type.LINEAR.toString())
@@ -707,8 +699,7 @@ public class DebtModelBackupTest {
 
     verify(ruleOperations).updateRule(ruleCaptor.capture(), eq(compiler), eq("LINEAR"), eq("2h"), isNull(String.class), eq(now), eq(session));
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(session).commit();
   }
 
@@ -740,7 +731,7 @@ public class DebtModelBackupTest {
     ));
 
     when(rulesXMLImporter.importXML(anyString(), any(ValidationMessages.class))).thenReturn(Collections.<RuleDebt>emptyList());
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       // Rule does not exits in XML -> debt will be disabled
       new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck").setLanguage("java")
         .setDefaultSubCharacteristicId(2).setDefaultRemediationFunction("LINEAR").setDefaultRemediationCoefficient("2h")
@@ -754,8 +745,7 @@ public class DebtModelBackupTest {
 
     verify(ruleOperations).updateRule(ruleCaptor.capture(), isNull(CharacteristicDto.class), isNull(String.class), isNull(String.class), isNull(String.class), eq(now), eq(session));
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(session).commit();
   }
 
@@ -772,14 +762,13 @@ public class DebtModelBackupTest {
     when(rulesXMLImporter.importXML(anyString(), any(ValidationMessages.class))).thenReturn(newArrayList(new RuleDebt()
       .setRuleKey(RuleKey.of("squid", "UselessImportCheck")).setSubCharacteristicKey("COMPILER").setFunction(DebtRemediationFunction.Type.LINEAR.name()).setCoefficient("2h")));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(Collections.<RuleDto>emptyList());
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(Collections.<RuleDto>emptyList());
 
     assertThat(debtModelBackup.restoreFromXml("<xml/>").getWarnings()).hasSize(1);
 
     verifyZeroInteractions(ruleOperations);
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), session);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(session).commit();
   }
 
@@ -796,7 +785,7 @@ public class DebtModelBackupTest {
     when(rulesXMLImporter.importXML(anyString(), any(ValidationMessages.class))).thenReturn(newArrayList(new RuleDebt()
       .setRuleKey(RuleKey.of("squid", "UselessImportCheck")).setSubCharacteristicKey("COMPILER").setFunction(DebtRemediationFunction.Type.LINEAR.name()).setCoefficient("2h")));
 
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
+    when(ruleDao.selectEnabledAndNonManual(session)).thenReturn(newArrayList(
       new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck")
         .setDefaultSubCharacteristicId(3).setDefaultRemediationFunction("LINEAR").setDefaultRemediationCoefficient("2h")
 //        .setCreatedAt(oldDate).setUpdatedAt(oldDate)
@@ -806,8 +795,7 @@ public class DebtModelBackupTest {
 
     assertThat(debtModelBackup.restoreFromXml("<xml/>").getErrors()).hasSize(1);
 
-    verify(ruleDao).selectEnablesAndNonManual(session);
-    verifyZeroInteractions(ruleRegistry);
+    verify(ruleDao).selectEnabledAndNonManual(session);
     verify(session, never()).commit();
   }
 
index 451c73493a5687d8aa2d05bc5cfc7524ab61bb14..cf3695f9cad0fa137a52f2ab1ae4b2c4a50d3182 100644 (file)
@@ -37,15 +37,14 @@ import org.sonar.api.utils.DateUtils;
 import org.sonar.api.utils.System2;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.core.persistence.MyBatis;
-import org.sonar.core.rule.RuleDao;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.core.technicaldebt.db.CharacteristicDao;
 import org.sonar.core.technicaldebt.db.CharacteristicDto;
+import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.rule.RuleRegistry;
+import org.sonar.server.rule2.persistence.RuleDao;
 import org.sonar.server.user.MockUserSession;
 
 import java.util.Date;
@@ -72,14 +71,11 @@ public class DebtModelOperationsTest {
   RuleDao ruleDao;
 
   @Mock
-  MyBatis mybatis;
+  DbClient dbClient;
 
   @Mock
   DbSession session;
 
-  @Mock
-  RuleRegistry ruleRegistry;
-
   @Mock
   System2 system2;
 
@@ -126,8 +122,10 @@ public class DebtModelOperationsTest {
       }
     }).when(dao).insert(any(CharacteristicDto.class), any(SqlSession.class));
 
-    when(mybatis.openSession(false)).thenReturn(session);
-    service = new DebtModelOperations(mybatis, dao, ruleDao, ruleRegistry, system2);
+    when(dbClient.openSession(false)).thenReturn(session);
+    when(dbClient.ruleDao()).thenReturn(ruleDao);
+    when(dbClient.debtCharacteristicDao()).thenReturn(dao);
+    service = new DebtModelOperations(dbClient, system2);
   }
 
   @Test
@@ -354,9 +352,9 @@ public class DebtModelOperationsTest {
   @Test
   public void delete_sub_characteristic() {
     DbSession batchSession = mock(DbSession.class);
-    when(mybatis.openSession(true)).thenReturn(batchSession);
+    when(dbClient.openSession(true)).thenReturn(batchSession);
 
-    when(ruleDao.selectBySubCharacteristicId(2, batchSession)).thenReturn(newArrayList(
+    when(ruleDao.findRulesByDebtSubCharacteristicId(2, batchSession)).thenReturn(newArrayList(
       new RuleDto()
         .setSubCharacteristicId(2)
         .setRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.toString())
@@ -394,16 +392,14 @@ public class DebtModelOperationsTest {
     assertThat(characteristicDto.getId()).isEqualTo(2);
     assertThat(characteristicDto.isEnabled()).isFalse();
     assertThat(characteristicDto.getUpdatedAt()).isEqualTo(now);
-
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), batchSession);
   }
 
   @Test
   public void delete_sub_characteristic_disable_default_rules_debt_if_default_characteristic_is_deleted() {
     DbSession batchSession = mock(DbSession.class);
-    when(mybatis.openSession(true)).thenReturn(batchSession);
+    when(dbClient.openSession(true)).thenReturn(batchSession);
 
-    when(ruleDao.selectBySubCharacteristicId(2, batchSession)).thenReturn(newArrayList(
+    when(ruleDao.findRulesByDebtSubCharacteristicId(2, batchSession)).thenReturn(newArrayList(
       new RuleDto()
         .setSubCharacteristicId(10).setRemediationFunction("LINEAR_OFFSET").setRemediationCoefficient("2h").setRemediationOffset("5min")
         .setDefaultSubCharacteristicId(2).setDefaultRemediationFunction("LINEAR_OFFSET").setDefaultRemediationCoefficient("4h").setDefaultRemediationOffset("15min")
@@ -414,7 +410,6 @@ public class DebtModelOperationsTest {
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(batchSession));
     RuleDto ruleDto = ruleCaptor.getValue();
-    assertThat(ruleDto.getUpdatedAt()).isEqualTo(now);
 
     // Default debt data are disabled
     assertThat(ruleDto.getDefaultSubCharacteristicId()).isNull();
@@ -435,16 +430,14 @@ public class DebtModelOperationsTest {
     assertThat(characteristicDto.getId()).isEqualTo(2);
     assertThat(characteristicDto.isEnabled()).isFalse();
     assertThat(characteristicDto.getUpdatedAt()).isEqualTo(now);
-
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), batchSession);
   }
 
   @Test
   public void delete_characteristic() {
     DbSession batchSession = mock(DbSession.class);
-    when(mybatis.openSession(true)).thenReturn(batchSession);
+    when(dbClient.openSession(true)).thenReturn(batchSession);
 
-    when(ruleDao.selectBySubCharacteristicId(subCharacteristicDto.getId(), batchSession)).thenReturn(newArrayList(
+    when(ruleDao.findRulesByDebtSubCharacteristicId(subCharacteristicDto.getId(), batchSession)).thenReturn(newArrayList(
       new RuleDto().setSubCharacteristicId(subCharacteristicDto.getId())
         .setRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.toString())
         .setRemediationCoefficient("2h")
@@ -472,14 +465,12 @@ public class DebtModelOperationsTest {
     assertThat(characteristicDto.getId()).isEqualTo(1);
     assertThat(characteristicDto.isEnabled()).isFalse();
     assertThat(characteristicDto.getUpdatedAt()).isEqualTo(now);
-
-    verify(ruleRegistry).reindex(ruleCaptor.getAllValues(), batchSession);
   }
 
   @Test
   public void not_delete_already_disabled_characteristic() {
     DbSession batchSession = mock(DbSession.class);
-    when(mybatis.openSession(true)).thenReturn(batchSession);
+    when(dbClient.openSession(true)).thenReturn(batchSession);
 
     when(dao.selectById(1, batchSession)).thenReturn(new CharacteristicDto()
       .setId(1)
index 1c90461cf1f323f372879562bc9bfa3aa98803b0..616db7de7619ab42778c6f780c601d5391f5f7f2 100644 (file)
@@ -356,22 +356,22 @@ public class ActiveRuleServiceMediumTest {
   @Test
   public void find_by_ruleKey() throws Exception {
     QualityProfileDto profile = QualityProfileDto.createFor("name","java");
-    dbClient.getDao(QualityProfileDao.class).insert(profile, dbSession);
+    dbClient.qualityProfileDao().insert(profile, dbSession);
 
     RuleDto rule = RuleDto.createFor(RuleKey.of("java", "r1"))
       .setSeverity("MAJOR");
-    dbClient.getDao(RuleDao.class).insert(rule, dbSession);
+    dbClient.ruleDao().insert(rule, dbSession);
 
 
     RuleDto rule2 = RuleDto.createFor(RuleKey.of("java", "r2"))
       .setSeverity("MAJOR");
-    dbClient.getDao(RuleDao.class).insert(rule2, dbSession);
+    dbClient.ruleDao().insert(rule2, dbSession);
 
-    dbClient.getDao(ActiveRuleDao.class).insert(
+    dbClient.activeRuleDao().insert(
       ActiveRuleDto.createFor(profile, rule).setSeverity("MINOR"),
       dbSession);
 
-    dbClient.getDao(ActiveRuleDao.class).insert(
+    dbClient.activeRuleDao().insert(
       ActiveRuleDto.createFor(profile, rule2).setSeverity("BLOCKER"),
       dbSession);
 
index 3ec2db6300c1fa2468dc928796aeeccba029cbdf..4b16bc5bbb9a0eb6e6e2f08125d300ed59bd1284 100644 (file)
@@ -32,14 +32,14 @@ import org.sonar.api.utils.DateUtils;
 import org.sonar.api.utils.System2;
 import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.core.persistence.MyBatis;
-import org.sonar.core.rule.RuleDao;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.core.technicaldebt.db.CharacteristicDao;
 import org.sonar.core.technicaldebt.db.CharacteristicDto;
+import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.rule.RuleOperations.RuleChange;
+import org.sonar.server.rule2.persistence.RuleDao;
 import org.sonar.server.user.MockUserSession;
 import org.sonar.server.user.UserSession;
 
@@ -56,7 +56,7 @@ import static org.mockito.Mockito.when;
 public class RuleOperationsTest {
 
   @Mock
-  MyBatis myBatis;
+  DbClient dbClient;
 
   @Mock
   DbSession session;
@@ -67,14 +67,6 @@ public class RuleOperationsTest {
   @Mock
   CharacteristicDao characteristicDao;
 
-  @Mock
-  RuleRegistry ruleRegistry;
-
-  @Mock
-  System2 system;
-
-  Date now = DateUtils.parseDate("2014-03-19");
-
   @Captor
   ArgumentCaptor<RuleDto> ruleCaptor;
 
@@ -84,11 +76,10 @@ public class RuleOperationsTest {
 
   @Before
   public void setUp() throws Exception {
-    when(myBatis.openSession(false)).thenReturn(session);
-
-    when(system.now()).thenReturn(now.getTime());
-
-    operations = new RuleOperations(myBatis, ruleDao, characteristicDao, ruleRegistry, system);
+    when(dbClient.openSession(false)).thenReturn(session);
+    when(dbClient.ruleDao()).thenReturn(ruleDao);
+    when(dbClient.debtCharacteristicDao()).thenReturn(characteristicDao);
+    operations = new RuleOperations(dbClient);
   }
 
   @Test
@@ -97,7 +88,7 @@ public class RuleOperationsTest {
       .setSubCharacteristicId(6).setRemediationFunction("CONSTANT_ISSUE").setRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -114,7 +105,6 @@ public class RuleOperationsTest {
     );
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -124,7 +114,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isEqualTo("LINEAR_OFFSET");
     assertThat(result.getRemediationCoefficient()).isEqualTo("2h");
     assertThat(result.getRemediationOffset()).isEqualTo("20min");
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -134,7 +123,7 @@ public class RuleOperationsTest {
       .setDefaultSubCharacteristicId(2).setDefaultRemediationFunction("CONSTANT_ISSUE").setDefaultRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -150,7 +139,6 @@ public class RuleOperationsTest {
     );
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -160,7 +148,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isNull();
     assertThat(result.getRemediationCoefficient()).isNull();
     assertThat(result.getRemediationOffset()).isNull();
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -169,7 +156,7 @@ public class RuleOperationsTest {
       .setSubCharacteristicId(2).setRemediationFunction("CONSTANT_ISSUE").setRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -182,7 +169,6 @@ public class RuleOperationsTest {
 
     verify(ruleDao, never()).update(any(RuleDto.class), eq(session));
     verify(session, never()).commit();
-    verify(ruleRegistry, never()).reindex(any(RuleDto.class), eq(session));
   }
 
   @Test
@@ -191,7 +177,7 @@ public class RuleOperationsTest {
       .setDefaultSubCharacteristicId(2).setDefaultRemediationFunction("CONSTANT_ISSUE").setDefaultRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -207,7 +193,6 @@ public class RuleOperationsTest {
     );
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -217,7 +202,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isEqualTo("LINEAR_OFFSET");
     assertThat(result.getRemediationCoefficient()).isEqualTo("2h");
     assertThat(result.getRemediationOffset()).isEqualTo("20min");
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -226,7 +210,7 @@ public class RuleOperationsTest {
       .setDefaultSubCharacteristicId(6).setDefaultRemediationFunction("CONSTANT_ISSUE").setDefaultRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -242,7 +226,6 @@ public class RuleOperationsTest {
     );
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -252,7 +235,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isEqualTo("CONSTANT_ISSUE");
     assertThat(result.getRemediationCoefficient()).isNull();
     assertThat(result.getRemediationOffset()).isEqualTo("10min");
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -264,12 +246,11 @@ public class RuleOperationsTest {
       .setRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     operations.updateRule(new RuleChange().setRuleKey(ruleKey).setDebtCharacteristicKey(null), authorizedUserSession);
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -279,7 +260,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isNull();
     assertThat(result.getRemediationCoefficient()).isNull();
     assertThat(result.getRemediationOffset()).isNull();
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -288,7 +268,7 @@ public class RuleOperationsTest {
       .setDefaultSubCharacteristicId(6).setDefaultRemediationFunction("CONSTANT_ISSUE").setDefaultRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -299,7 +279,6 @@ public class RuleOperationsTest {
     operations.updateRule(new RuleChange().setRuleKey(ruleKey).setDebtCharacteristicKey("COMPILER"), authorizedUserSession);
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -309,7 +288,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isNull();
     assertThat(result.getRemediationCoefficient()).isNull();
     assertThat(result.getRemediationOffset()).isNull();
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -317,12 +295,11 @@ public class RuleOperationsTest {
     RuleDto dto = new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     operations.updateRule(new RuleChange().setRuleKey(ruleKey).setDebtCharacteristicKey(null), authorizedUserSession);
 
     verify(ruleDao).update(ruleCaptor.capture(), eq(session));
-    verify(ruleRegistry).reindex(eq(ruleCaptor.getValue()), eq(session));
     verify(session).commit();
 
     RuleDto result = ruleCaptor.getValue();
@@ -332,7 +309,6 @@ public class RuleOperationsTest {
     assertThat(result.getRemediationFunction()).isNull();
     assertThat(result.getRemediationCoefficient()).isNull();
     assertThat(result.getRemediationOffset()).isNull();
-    assertThat(result.getUpdatedAt()).isEqualTo(now);
   }
 
   @Test
@@ -340,7 +316,7 @@ public class RuleOperationsTest {
     RuleDto dto = new RuleDto().setId(1).setRepositoryKey("squid").setRuleKey("UselessImportCheck").setSubCharacteristicId(-1);
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     operations.updateRule(
       new RuleChange().setRuleKey(ruleKey).setDebtCharacteristicKey(null),
@@ -349,14 +325,13 @@ public class RuleOperationsTest {
 
     verify(ruleDao, never()).update(any(RuleDto.class), eq(session));
     verify(session, never()).commit();
-    verify(ruleRegistry, never()).reindex(any(RuleDto.class), eq(session));
   }
 
   @Test
   public void fail_to_update_rule_on_unknown_rule() throws Exception {
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(null);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(null);
 
     try {
       operations.updateRule(
@@ -370,7 +345,6 @@ public class RuleOperationsTest {
 
     verify(ruleDao, never()).update(any(RuleDto.class), eq(session));
     verify(session, never()).commit();
-    verify(ruleRegistry, never()).reindex(any(RuleDto.class), eq(session));
   }
 
   @Test
@@ -379,7 +353,7 @@ public class RuleOperationsTest {
       .setSubCharacteristicId(2).setRemediationFunction("CONSTANT_ISSUE").setRemediationOffset("10min");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(null);
 
@@ -395,7 +369,6 @@ public class RuleOperationsTest {
 
     verify(ruleDao, never()).update(any(RuleDto.class), eq(session));
     verify(session, never()).commit();
-    verify(ruleRegistry, never()).reindex(any(RuleDto.class), eq(session));
   }
 
   @Test
@@ -404,7 +377,7 @@ public class RuleOperationsTest {
       .setSubCharacteristicId(2).setRemediationFunction("LINEAR").setRemediationCoefficient("1h");
     RuleKey ruleKey = RuleKey.of("squid", "UselessImportCheck");
 
-    when(ruleDao.selectByKey(ruleKey, session)).thenReturn(dto);
+    when(ruleDao.getByKey(ruleKey, session)).thenReturn(dto);
 
     CharacteristicDto subCharacteristic = new CharacteristicDto().setId(2).setKey("COMPILER").setName("Compiler").setParentId(1);
     when(characteristicDao.selectByKey("COMPILER", session)).thenReturn(subCharacteristic);
@@ -421,6 +394,5 @@ public class RuleOperationsTest {
 
     verify(ruleDao, never()).update(any(RuleDto.class), eq(session));
     verify(session, never()).commit();
-    verify(ruleRegistry, never()).reindex(any(RuleDto.class), eq(session));
   }
 }
index 6087f6ac1648b08c950f852495b1f26d749ed904..c15a1a17b2fe7319dd8178f2f3607234adde1197 100644 (file)
@@ -334,30 +334,6 @@ public class RuleRegistryTest {
     assertThat(ruleDocument.get(RuleDocument.FIELD_REMEDIATION_OFFSET)).isNull();
   }
 
-  @Test
-  public void remove_all_rules_when_ro_rule_registered() {
-    String[] ids = registry.reindex(session);
-    registry.removeDeletedRules(ids);
-    assertThat(registry.findIds(new HashMap<String, String>())).hasSize(0);
-  }
-
-  @Test
-  public void update_existing_rules_and_forget_deleted_rules() {
-    when(ruleDao.selectEnablesAndNonManual(session)).thenReturn(newArrayList(
-      new RuleDto().setId(1).setRepositoryKey("xoo").setRuleKey("key1").setSeverity(Severity.MINOR),
-      new RuleDto().setId(2).setRepositoryKey("xoo").setRuleKey("key2").setSeverity(Severity.MINOR)
-    ));
-    assertThat(esSetup.exists("rules", "rule", "3")).isTrue();
-
-    String[] ids = registry.reindex(session);
-    registry.removeDeletedRules(ids);
-
-    assertThat(registry.findIds(ImmutableMap.of("repositoryKey", "xoo")))
-      .hasSize(2)
-      .containsOnly(1, 2);
-    assertThat(esSetup.exists("rules", "rule", "3")).isFalse();
-  }
-
   @Test
   public void filter_removed_rules() {
     assertThat(registry.findIds(new HashMap<String, String>())).containsOnly(1, 2, 3);
index 18e72e7df8f116eec1a9fd018f6a9eed171aa1b5..22afd0a2deaf0e34b0691ed13bd3029ff420a763 100644 (file)
@@ -371,8 +371,8 @@ public class RuleIndexMediumTest {
   public void search_by_profile() throws InterruptedException {
     QualityProfileDto qualityProfileDto1 = QualityProfileDto.createFor("profile1", "java");
     QualityProfileDto qualityProfileDto2 = QualityProfileDto.createFor("profile2", "java");
-    dbClient.getDao(QualityProfileDao.class).insert(qualityProfileDto1);
-    dbClient.getDao(QualityProfileDao.class).insert(qualityProfileDto2);
+    dbClient.qualityProfileDao().insert(qualityProfileDto1);
+    dbClient.qualityProfileDao().insert(qualityProfileDto2);
 
     RuleDto rule1 = newRuleDto(RuleKey.of("java", "S001"));
     dao.insert(rule1, dbSession);
@@ -381,15 +381,15 @@ public class RuleIndexMediumTest {
     RuleDto rule3 = newRuleDto(RuleKey.of("java", "S003"));
     dao.insert(rule3, dbSession);
 
-    dbClient.getDao(ActiveRuleDao.class).insert(
+    dbClient.activeRuleDao().insert(
       ActiveRuleDto.createFor(qualityProfileDto1, rule1)
       .setSeverity("BLOCKER"), dbSession);
 
-    dbClient.getDao(ActiveRuleDao.class).insert(
+    dbClient.activeRuleDao().insert(
       ActiveRuleDto.createFor(qualityProfileDto2, rule1)
         .setSeverity("BLOCKER"), dbSession);
 
-    dbClient.getDao(ActiveRuleDao.class).insert(
+    dbClient.activeRuleDao().insert(
       ActiveRuleDto.createFor(qualityProfileDto1, rule2)
         .setSeverity("BLOCKER"), dbSession);
 
index 0321ebc0524538431ba0ba5d341e776b185b6812..7f13a2aba26157923d2869e959c24f5b0b42505c 100644 (file)
@@ -64,7 +64,7 @@ public class SourceServiceTest {
   public void setUp() throws Exception {
     DbClient dbClient = mock(DbClient.class);
     when(dbClient.openSession(false)).thenReturn(session);
-    when(dbClient.getDao(MeasureDao.class)).thenReturn(measureDao);
+    when(dbClient.measureDao()).thenReturn(measureDao);
     service = new SourceService(dbClient, sourceDecorator, deprecatedSourceDecorator);
   }