From: Teryk Bellahsene Date: Thu, 23 Jul 2015 10:03:23 +0000 (+0200) Subject: Replace DaoUtils by DaoModule X-Git-Tag: 5.2-RC1~1012 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d55de7dbda057f2aeb56d9d1b047da65510bd7c3;p=sonarqube.git Replace DaoUtils by DaoModule --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java b/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java index a79e3056a01..06a92b144eb 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java +++ b/server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java @@ -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; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java index 459386824a7..5532dc702df 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java @@ -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 index 00000000000..6300c253adf --- /dev/null +++ b/sonar-db/src/main/java/org/sonar/db/DaoModule.java @@ -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> classes = ImmutableList.>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> 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 index e0f02da0fa3..00000000000 --- a/sonar-db/src/main/java/org/sonar/db/DaoUtils.java +++ /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> 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 index 00000000000..a99a08aa856 --- /dev/null +++ b/sonar-db/src/test/java/org/sonar/db/DaoModuleTest.java @@ -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 index fc7c4b1ef80..00000000000 --- a/sonar-db/src/test/java/org/sonar/db/DaoUtilsTest.java +++ /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(); - } -} diff --git a/sonar-db/src/test/java/org/sonar/db/DbTester.java b/sonar-db/src/test/java/org/sonar/db/DbTester.java index 41d1ea5623a..80728e04727 100644 --- a/sonar-db/src/test/java/org/sonar/db/DbTester.java +++ b/sonar-db/src/test/java/org/sonar/db/DbTester.java @@ -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 daos = ioc.getComponents(Dao.class);