]> source.dussan.org Git - sonarqube.git/commitdiff
Replace DaoUtils by DaoModule
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 23 Jul 2015 10:03:23 +0000 (12:03 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 23 Jul 2015 10:03:23 +0000 (12:03 +0200)
server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java
sonar-db/src/main/java/org/sonar/db/DaoModule.java [new file with mode: 0644]
sonar-db/src/main/java/org/sonar/db/DaoUtils.java [deleted file]
sonar-db/src/test/java/org/sonar/db/DaoModuleTest.java [new file with mode: 0644]
sonar-db/src/test/java/org/sonar/db/DaoUtilsTest.java [deleted file]
sonar-db/src/test/java/org/sonar/db/DbTester.java

index a79e3056a0131ac9969923cf1802783213e08acf..06a92b144eb98396ac275058bc779df84f3fbbe5 100644 (file)
@@ -29,7 +29,9 @@ import org.sonar.server.rule.db.RuleDao;
 /**
  * Should be replaced by {@link org.sonar.db.DbClient}, but some DAOs
  * still depend on other sonar-server classes.
+ * @deprecated since 5.2 - should be removed as soon as the remaining daos are moved to sonar-db
  */
+@Deprecated
 public class DbClient extends org.sonar.db.DbClient {
 
   private ActiveRuleDao activeRuleDao;
index 459386824a70a178ef5d007876a7d390a8978f15..5532dc702df55c1d6fa6b5f1e089a6236bfc9bb4 100644 (file)
@@ -25,7 +25,7 @@ import org.sonar.api.utils.System2;
 import org.sonar.api.utils.internal.TempFolderCleaner;
 import org.sonar.core.config.CorePropertyDefinitions;
 import org.sonar.core.config.Logback;
-import org.sonar.db.DaoUtils;
+import org.sonar.db.DaoModule;
 import org.sonar.db.DatabaseChecker;
 import org.sonar.db.DefaultDatabase;
 import org.sonar.db.MyBatis;
@@ -96,6 +96,7 @@ public class PlatformLevel1 extends PlatformLevel {
 
       // DB
       DbClient.class,
+      DaoModule.class,
 
       // Elasticsearch
       EsSearchModule.class,
@@ -118,7 +119,6 @@ public class PlatformLevel1 extends PlatformLevel {
       org.sonar.core.persistence.MyBatis.class);
     addAll(CorePropertyDefinitions.all());
     add(MigrationStepModule.class);
-    addAll(DaoUtils.getDaoClasses());
   }
 
   private void addExtraRootComponents() {
diff --git a/sonar-db/src/main/java/org/sonar/db/DaoModule.java b/sonar-db/src/main/java/org/sonar/db/DaoModule.java
new file mode 100644 (file)
index 0000000..6300c25
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * 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.db;
+
+import com.google.common.collect.ImmutableList;
+import java.util.List;
+import org.sonar.core.platform.Module;
+import org.sonar.db.activity.ActivityDao;
+import org.sonar.db.component.ComponentDao;
+import org.sonar.db.component.ComponentLinkDao;
+import org.sonar.db.component.ResourceDao;
+import org.sonar.db.component.ResourceIndexDao;
+import org.sonar.db.component.ResourceKeyUpdaterDao;
+import org.sonar.db.component.SnapshotDao;
+import org.sonar.db.compute.AnalysisReportDao;
+import org.sonar.db.dashboard.ActiveDashboardDao;
+import org.sonar.db.dashboard.DashboardDao;
+import org.sonar.db.dashboard.WidgetDao;
+import org.sonar.db.dashboard.WidgetPropertyDao;
+import org.sonar.db.debt.CharacteristicDao;
+import org.sonar.db.duplication.DuplicationDao;
+import org.sonar.db.event.EventDao;
+import org.sonar.db.issue.ActionPlanDao;
+import org.sonar.db.issue.ActionPlanStatsDao;
+import org.sonar.db.issue.IssueChangeDao;
+import org.sonar.db.issue.IssueDao;
+import org.sonar.db.issue.IssueFilterDao;
+import org.sonar.db.issue.IssueFilterFavouriteDao;
+import org.sonar.db.loadedtemplate.LoadedTemplateDao;
+import org.sonar.db.measure.MeasureDao;
+import org.sonar.db.measure.MeasureFilterDao;
+import org.sonar.db.measure.custom.CustomMeasureDao;
+import org.sonar.db.metric.MetricDao;
+import org.sonar.db.notification.NotificationQueueDao;
+import org.sonar.db.permission.PermissionDao;
+import org.sonar.db.permission.PermissionTemplateDao;
+import org.sonar.db.property.PropertiesDao;
+import org.sonar.db.purge.PurgeDao;
+import org.sonar.db.qualitygate.ProjectQgateAssociationDao;
+import org.sonar.db.qualitygate.QualityGateConditionDao;
+import org.sonar.db.qualitygate.QualityGateDao;
+import org.sonar.db.qualityprofile.QualityProfileDao;
+import org.sonar.db.source.FileSourceDao;
+import org.sonar.db.user.AuthorDao;
+import org.sonar.db.user.AuthorizationDao;
+import org.sonar.db.user.GroupDao;
+import org.sonar.db.user.GroupMembershipDao;
+import org.sonar.db.user.RoleDao;
+import org.sonar.db.user.UserDao;
+import org.sonar.db.user.UserGroupDao;
+
+public class DaoModule extends Module {
+  private static final List<Class<? extends Dao>> classes = ImmutableList.<Class<? extends Dao>>builder().add(
+    ActionPlanDao.class,
+    ActionPlanStatsDao.class,
+    ActiveDashboardDao.class,
+    ActivityDao.class,
+    AnalysisReportDao.class,
+    AuthorDao.class,
+    AuthorizationDao.class,
+    ComponentDao.class,
+    ComponentLinkDao.class,
+    CustomMeasureDao.class,
+    DashboardDao.class,
+    DuplicationDao.class,
+    EventDao.class,
+    FileSourceDao.class,
+    GroupDao.class,
+    GroupMembershipDao.class,
+    IssueDao.class,
+    IssueChangeDao.class,
+    IssueFilterDao.class,
+    IssueFilterFavouriteDao.class,
+    LoadedTemplateDao.class,
+    MeasureDao.class,
+    MeasureFilterDao.class,
+    MetricDao.class,
+    NotificationQueueDao.class,
+    PermissionDao.class,
+    PermissionTemplateDao.class,
+    PropertiesDao.class,
+    QualityGateDao.class,
+    QualityGateConditionDao.class,
+    ProjectQgateAssociationDao.class,
+    QualityProfileDao.class,
+    PurgeDao.class,
+    CharacteristicDao.class,
+    ResourceIndexDao.class,
+    ResourceDao.class,
+    ResourceKeyUpdaterDao.class,
+    RoleDao.class,
+    SnapshotDao.class,
+    UserDao.class,
+    UserGroupDao.class,
+    WidgetDao.class,
+    WidgetPropertyDao.class).build();
+
+  @Override
+  protected void configureModule() {
+    add(classes.toArray());
+  }
+
+  public static List<Class<? extends Dao>> classes() {
+    return classes;
+  }
+}
diff --git a/sonar-db/src/main/java/org/sonar/db/DaoUtils.java b/sonar-db/src/main/java/org/sonar/db/DaoUtils.java
deleted file mode 100644 (file)
index e0f02da..0000000
+++ /dev/null
@@ -1,121 +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.db;
-
-import java.util.Arrays;
-import java.util.List;
-import org.sonar.db.activity.ActivityDao;
-import org.sonar.db.component.ComponentDao;
-import org.sonar.db.component.ComponentLinkDao;
-import org.sonar.db.component.ResourceDao;
-import org.sonar.db.component.ResourceIndexDao;
-import org.sonar.db.component.ResourceKeyUpdaterDao;
-import org.sonar.db.component.SnapshotDao;
-import org.sonar.db.compute.AnalysisReportDao;
-import org.sonar.db.dashboard.ActiveDashboardDao;
-import org.sonar.db.dashboard.DashboardDao;
-import org.sonar.db.dashboard.WidgetDao;
-import org.sonar.db.dashboard.WidgetPropertyDao;
-import org.sonar.db.debt.CharacteristicDao;
-import org.sonar.db.duplication.DuplicationDao;
-import org.sonar.db.event.EventDao;
-import org.sonar.db.issue.ActionPlanDao;
-import org.sonar.db.issue.ActionPlanStatsDao;
-import org.sonar.db.issue.IssueChangeDao;
-import org.sonar.db.issue.IssueDao;
-import org.sonar.db.issue.IssueFilterDao;
-import org.sonar.db.issue.IssueFilterFavouriteDao;
-import org.sonar.db.loadedtemplate.LoadedTemplateDao;
-import org.sonar.db.measure.MeasureDao;
-import org.sonar.db.measure.MeasureFilterDao;
-import org.sonar.db.measure.custom.CustomMeasureDao;
-import org.sonar.db.metric.MetricDao;
-import org.sonar.db.notification.NotificationQueueDao;
-import org.sonar.db.permission.PermissionDao;
-import org.sonar.db.permission.PermissionTemplateDao;
-import org.sonar.db.property.PropertiesDao;
-import org.sonar.db.purge.PurgeDao;
-import org.sonar.db.qualitygate.ProjectQgateAssociationDao;
-import org.sonar.db.qualitygate.QualityGateConditionDao;
-import org.sonar.db.qualitygate.QualityGateDao;
-import org.sonar.db.qualityprofile.QualityProfileDao;
-import org.sonar.db.source.FileSourceDao;
-import org.sonar.db.user.AuthorDao;
-import org.sonar.db.user.AuthorizationDao;
-import org.sonar.db.user.GroupDao;
-import org.sonar.db.user.GroupMembershipDao;
-import org.sonar.db.user.RoleDao;
-import org.sonar.db.user.UserDao;
-import org.sonar.db.user.UserGroupDao;
-
-public final class DaoUtils {
-
-  private DaoUtils() {
-    // only static stuff
-  }
-
-  public static List<Class<? extends Dao>> getDaoClasses() {
-    return Arrays.asList(
-      ActionPlanDao.class,
-      ActionPlanStatsDao.class,
-      ActiveDashboardDao.class,
-      ActivityDao.class,
-      AnalysisReportDao.class,
-      AuthorDao.class,
-      AuthorizationDao.class,
-      ComponentDao.class,
-      ComponentLinkDao.class,
-      CustomMeasureDao.class,
-      DashboardDao.class,
-      DuplicationDao.class,
-      EventDao.class,
-      FileSourceDao.class,
-      GroupDao.class,
-      GroupMembershipDao.class,
-      IssueDao.class,
-      IssueChangeDao.class,
-      IssueFilterDao.class,
-      IssueFilterFavouriteDao.class,
-      LoadedTemplateDao.class,
-      MeasureDao.class,
-      MeasureFilterDao.class,
-      MetricDao.class,
-      NotificationQueueDao.class,
-      PermissionDao.class,
-      PermissionTemplateDao.class,
-      PropertiesDao.class,
-      QualityGateDao.class,
-      QualityGateConditionDao.class,
-      ProjectQgateAssociationDao.class,
-      QualityProfileDao.class,
-      PurgeDao.class,
-      CharacteristicDao.class,
-      ResourceIndexDao.class,
-      ResourceDao.class,
-      ResourceKeyUpdaterDao.class,
-      RoleDao.class,
-      SnapshotDao.class,
-      UserDao.class,
-      UserGroupDao.class,
-      WidgetDao.class,
-      WidgetPropertyDao.class
-    );
-  }
-}
diff --git a/sonar-db/src/test/java/org/sonar/db/DaoModuleTest.java b/sonar-db/src/test/java/org/sonar/db/DaoModuleTest.java
new file mode 100644 (file)
index 0000000..a99a08a
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * 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.db;
+
+import org.junit.Test;
+import org.sonar.core.platform.ComponentContainer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class DaoModuleTest {
+  @Test
+  public void verify_count_of_added_components() {
+    ComponentContainer container = new ComponentContainer();
+    new DaoModule().configure(container);
+    assertThat(container.size()).isEqualTo(45);
+  }
+}
diff --git a/sonar-db/src/test/java/org/sonar/db/DaoUtilsTest.java b/sonar-db/src/test/java/org/sonar/db/DaoUtilsTest.java
deleted file mode 100644 (file)
index fc7c4b1..0000000
+++ /dev/null
@@ -1,32 +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.db;
-
-import org.junit.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class DaoUtilsTest {
-
-  @Test
-  public void list_all_dao_classes() {
-    assertThat(DaoUtils.getDaoClasses()).isNotEmpty();
-  }
-}
index 41d1ea5623aee23be62007d2e6f606de58d5cb91..80728e047273dc368db72d0a821c0ea7b65aab58 100644 (file)
@@ -118,7 +118,7 @@ public class DbTester extends ExternalResource {
       TransientPicoContainer ioc = new TransientPicoContainer();
       ioc.addComponent(db.getMyBatis());
       ioc.addComponent(system2);
-      for (Class daoClass : DaoUtils.getDaoClasses()) {
+      for (Class daoClass : DaoModule.classes()) {
         ioc.addComponent(daoClass);
       }
       List<Dao> daos = ioc.getComponents(Dao.class);