]> source.dussan.org Git - sonarqube.git/commitdiff
add module for MigrationStep
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 13 May 2015 11:50:15 +0000 (13:50 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 27 May 2015 10:11:37 +0000 (12:11 +0200)
which removes ugly solo constant in interface

server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationStep.java
server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationStepModule.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationSteps.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java
server/sonar-server/src/test/java/org/sonar/server/db/migrations/MigrationStepModuleTest.java [new file with mode: 0644]
server/sonar-server/src/test/java/org/sonar/server/db/migrations/MigrationStepsTest.java [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/README.txt

index eddf1244a559c287726dafa8bd025422f26c0f5d..f2c051e083ca92194ea5520b96200cf4fd20b32f 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.server.db.migrations;
 import java.sql.SQLException;
 
 /**
- * Java alternative of ActiveRecord::Migration. Do not forget to declare implementation classes in {@link MigrationSteps#CLASSES}
+ * Java alternative of ActiveRecord::Migration. Do not forget to declare implementation classes in {@link MigrationStepModule}
  * @since 3.7
  */
 public interface MigrationStep {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationStepModule.java b/server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationStepModule.java
new file mode 100644 (file)
index 0000000..cde817e
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * 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.server.db.migrations;
+
+import org.sonar.core.component.Module;
+import org.sonar.server.db.migrations.v36.ViolationMigrationStep;
+import org.sonar.server.db.migrations.v42.CompleteIssueMessageMigrationStep;
+import org.sonar.server.db.migrations.v42.PackageKeysMigrationStep;
+import org.sonar.server.db.migrations.v43.ConvertIssueDebtToMinutesMigrationStep;
+import org.sonar.server.db.migrations.v43.DevelopmentCostMeasuresMigrationStep;
+import org.sonar.server.db.migrations.v43.IssueChangelogMigrationStep;
+import org.sonar.server.db.migrations.v43.NotResolvedIssuesOnRemovedComponentsMigrationStep;
+import org.sonar.server.db.migrations.v43.RequirementMeasuresMigrationStep;
+import org.sonar.server.db.migrations.v43.TechnicalDebtMeasuresMigrationStep;
+import org.sonar.server.db.migrations.v44.ChangeLogMigrationStep;
+import org.sonar.server.db.migrations.v44.ConvertProfileMeasuresMigrationStep;
+import org.sonar.server.db.migrations.v44.FeedQProfileDatesMigrationStep;
+import org.sonar.server.db.migrations.v44.FeedQProfileKeysMigrationStep;
+import org.sonar.server.db.migrations.v44.IssueActionPlanKeyMigrationStep;
+import org.sonar.server.db.migrations.v44.MeasureDataMigrationStep;
+import org.sonar.server.db.migrations.v45.AddMissingRuleParameterDefaultValuesMigrationStep;
+import org.sonar.server.db.migrations.v45.DeleteMeasuresOnDeletedProfilesMigrationStep;
+import org.sonar.server.db.migrations.v451.AddMissingCustomRuleParametersMigrationStep;
+import org.sonar.server.db.migrations.v451.DeleteUnescapedActivities;
+import org.sonar.server.db.migrations.v50.FeedFileSources;
+import org.sonar.server.db.migrations.v50.FeedIssueLongDates;
+import org.sonar.server.db.migrations.v50.FeedSnapshotSourcesUpdatedAt;
+import org.sonar.server.db.migrations.v50.InsertProjectsAuthorizationUpdatedAtMigrationStep;
+import org.sonar.server.db.migrations.v50.PopulateProjectsUuidColumnsMigrationStep;
+import org.sonar.server.db.migrations.v50.RemoveSortFieldFromIssueFiltersMigrationStep;
+import org.sonar.server.db.migrations.v50.ReplaceIssueFiltersProjectKeyByUuid;
+import org.sonar.server.db.migrations.v51.AddIssuesColumns;
+import org.sonar.server.db.migrations.v51.AddNewCharacteristics;
+import org.sonar.server.db.migrations.v51.CopyScmAccountsFromAuthorsToUsers;
+import org.sonar.server.db.migrations.v51.DropIssuesColumns;
+import org.sonar.server.db.migrations.v51.FeedAnalysisReportsLongDates;
+import org.sonar.server.db.migrations.v51.FeedEventsLongDates;
+import org.sonar.server.db.migrations.v51.FeedFileSourcesBinaryData;
+import org.sonar.server.db.migrations.v51.FeedIssueChangesLongDates;
+import org.sonar.server.db.migrations.v51.FeedIssueComponentUuids;
+import org.sonar.server.db.migrations.v51.FeedIssueTags;
+import org.sonar.server.db.migrations.v51.FeedIssuesLongDates;
+import org.sonar.server.db.migrations.v51.FeedManualMeasuresLongDates;
+import org.sonar.server.db.migrations.v51.FeedSemaphoresLongDates;
+import org.sonar.server.db.migrations.v51.FeedSnapshotsLongDates;
+import org.sonar.server.db.migrations.v51.FeedUsersLongDates;
+import org.sonar.server.db.migrations.v51.RemovePermissionsOnModulesMigrationStep;
+import org.sonar.server.db.migrations.v51.RenameComponentRelatedParamsInIssueFilters;
+import org.sonar.server.db.migrations.v51.UpdateProjectsModuleUuidPath;
+import org.sonar.server.db.migrations.v52.AddDependenciesColumns;
+import org.sonar.server.db.migrations.v52.AddDependenciesComponentUuidColumns;
+import org.sonar.server.db.migrations.v52.DropDependenciesComponentColumns;
+import org.sonar.server.db.migrations.v52.FeedDependenciesComponentUuids;
+import org.sonar.server.db.migrations.v52.FeedEventsComponentUuid;
+import org.sonar.server.db.migrations.v52.FeedFileSourcesDataType;
+import org.sonar.server.db.migrations.v52.FeedProjectLinksComponentUuid;
+import org.sonar.server.db.migrations.v52.MoveProjectProfileAssociation;
+
+public class MigrationStepModule extends Module {
+  @Override
+  protected void configureModule() {
+    add(
+      // 3.6
+      ViolationMigrationStep.class,
+
+      // 4.2
+      PackageKeysMigrationStep.class, CompleteIssueMessageMigrationStep.class,
+
+      // 4.3
+      ConvertIssueDebtToMinutesMigrationStep.class,
+      IssueChangelogMigrationStep.class,
+      TechnicalDebtMeasuresMigrationStep.class,
+      DevelopmentCostMeasuresMigrationStep.class,
+      RequirementMeasuresMigrationStep.class,
+      NotResolvedIssuesOnRemovedComponentsMigrationStep.class,
+
+      // 4.4
+      IssueActionPlanKeyMigrationStep.class,
+      MeasureDataMigrationStep.class,
+      FeedQProfileKeysMigrationStep.class,
+      FeedQProfileDatesMigrationStep.class,
+      ChangeLogMigrationStep.class,
+      ConvertProfileMeasuresMigrationStep.class,
+
+      // 4.5
+      AddMissingRuleParameterDefaultValuesMigrationStep.class,
+      DeleteMeasuresOnDeletedProfilesMigrationStep.class,
+
+      // 4.5.1
+      AddMissingCustomRuleParametersMigrationStep.class,
+      DeleteUnescapedActivities.class,
+
+      // 5.0
+      InsertProjectsAuthorizationUpdatedAtMigrationStep.class,
+      PopulateProjectsUuidColumnsMigrationStep.class,
+      ReplaceIssueFiltersProjectKeyByUuid.class,
+      FeedSnapshotSourcesUpdatedAt.class,
+      FeedFileSources.class,
+      FeedIssueLongDates.class,
+      RemoveSortFieldFromIssueFiltersMigrationStep.class,
+
+      // 5.1
+      FeedIssueTags.class,
+      FeedUsersLongDates.class,
+      RenameComponentRelatedParamsInIssueFilters.class,
+      CopyScmAccountsFromAuthorsToUsers.class,
+      FeedIssueChangesLongDates.class,
+      FeedAnalysisReportsLongDates.class,
+      UpdateProjectsModuleUuidPath.class,
+      FeedIssueComponentUuids.class,
+      FeedSnapshotsLongDates.class,
+      FeedIssuesLongDates.class,
+      FeedFileSourcesBinaryData.class,
+      FeedSemaphoresLongDates.class,
+      FeedManualMeasuresLongDates.class,
+      FeedEventsLongDates.class,
+      AddNewCharacteristics.class,
+      RemovePermissionsOnModulesMigrationStep.class,
+      AddIssuesColumns.class,
+      DropIssuesColumns.class,
+
+      // 5.2
+      FeedProjectLinksComponentUuid.class,
+      FeedEventsComponentUuid.class,
+      MoveProjectProfileAssociation.class,
+      AddDependenciesComponentUuidColumns.class,
+      FeedDependenciesComponentUuids.class,
+      DropDependenciesComponentColumns.class,
+      FeedFileSourcesDataType.class,
+      AddDependenciesColumns.class);
+  }
+}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationSteps.java b/server/sonar-server/src/main/java/org/sonar/server/db/migrations/MigrationSteps.java
deleted file mode 100644 (file)
index a27a4c4..0000000
+++ /dev/null
@@ -1,150 +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.server.db.migrations;
-
-import com.google.common.collect.ImmutableList;
-import org.sonar.server.db.migrations.v36.ViolationMigrationStep;
-import org.sonar.server.db.migrations.v42.CompleteIssueMessageMigrationStep;
-import org.sonar.server.db.migrations.v42.PackageKeysMigrationStep;
-import org.sonar.server.db.migrations.v43.ConvertIssueDebtToMinutesMigrationStep;
-import org.sonar.server.db.migrations.v43.DevelopmentCostMeasuresMigrationStep;
-import org.sonar.server.db.migrations.v43.IssueChangelogMigrationStep;
-import org.sonar.server.db.migrations.v43.NotResolvedIssuesOnRemovedComponentsMigrationStep;
-import org.sonar.server.db.migrations.v43.RequirementMeasuresMigrationStep;
-import org.sonar.server.db.migrations.v43.TechnicalDebtMeasuresMigrationStep;
-import org.sonar.server.db.migrations.v44.ChangeLogMigrationStep;
-import org.sonar.server.db.migrations.v44.ConvertProfileMeasuresMigrationStep;
-import org.sonar.server.db.migrations.v44.FeedQProfileDatesMigrationStep;
-import org.sonar.server.db.migrations.v44.FeedQProfileKeysMigrationStep;
-import org.sonar.server.db.migrations.v44.IssueActionPlanKeyMigrationStep;
-import org.sonar.server.db.migrations.v44.MeasureDataMigrationStep;
-import org.sonar.server.db.migrations.v45.AddMissingRuleParameterDefaultValuesMigrationStep;
-import org.sonar.server.db.migrations.v45.DeleteMeasuresOnDeletedProfilesMigrationStep;
-import org.sonar.server.db.migrations.v451.AddMissingCustomRuleParametersMigrationStep;
-import org.sonar.server.db.migrations.v451.DeleteUnescapedActivities;
-import org.sonar.server.db.migrations.v50.FeedFileSources;
-import org.sonar.server.db.migrations.v50.FeedIssueLongDates;
-import org.sonar.server.db.migrations.v50.FeedSnapshotSourcesUpdatedAt;
-import org.sonar.server.db.migrations.v50.InsertProjectsAuthorizationUpdatedAtMigrationStep;
-import org.sonar.server.db.migrations.v50.PopulateProjectsUuidColumnsMigrationStep;
-import org.sonar.server.db.migrations.v50.RemoveSortFieldFromIssueFiltersMigrationStep;
-import org.sonar.server.db.migrations.v50.ReplaceIssueFiltersProjectKeyByUuid;
-import org.sonar.server.db.migrations.v51.AddIssuesColumns;
-import org.sonar.server.db.migrations.v51.AddNewCharacteristics;
-import org.sonar.server.db.migrations.v51.CopyScmAccountsFromAuthorsToUsers;
-import org.sonar.server.db.migrations.v51.DropIssuesColumns;
-import org.sonar.server.db.migrations.v51.FeedAnalysisReportsLongDates;
-import org.sonar.server.db.migrations.v51.FeedEventsLongDates;
-import org.sonar.server.db.migrations.v51.FeedFileSourcesBinaryData;
-import org.sonar.server.db.migrations.v51.FeedIssueChangesLongDates;
-import org.sonar.server.db.migrations.v51.FeedIssueComponentUuids;
-import org.sonar.server.db.migrations.v51.FeedIssueTags;
-import org.sonar.server.db.migrations.v51.FeedIssuesLongDates;
-import org.sonar.server.db.migrations.v51.FeedManualMeasuresLongDates;
-import org.sonar.server.db.migrations.v51.FeedSemaphoresLongDates;
-import org.sonar.server.db.migrations.v51.FeedSnapshotsLongDates;
-import org.sonar.server.db.migrations.v51.FeedUsersLongDates;
-import org.sonar.server.db.migrations.v51.RemovePermissionsOnModulesMigrationStep;
-import org.sonar.server.db.migrations.v51.RenameComponentRelatedParamsInIssueFilters;
-import org.sonar.server.db.migrations.v51.UpdateProjectsModuleUuidPath;
-import org.sonar.server.db.migrations.v52.AddDependenciesColumns;
-import org.sonar.server.db.migrations.v52.AddDependenciesComponentUuidColumns;
-import org.sonar.server.db.migrations.v52.DropDependenciesComponentColumns;
-import org.sonar.server.db.migrations.v52.FeedDependenciesComponentUuids;
-import org.sonar.server.db.migrations.v52.FeedEventsComponentUuid;
-import org.sonar.server.db.migrations.v52.FeedFileSourcesDataType;
-import org.sonar.server.db.migrations.v52.FeedProjectLinksComponentUuid;
-import org.sonar.server.db.migrations.v52.MoveProjectProfileAssociation;
-
-import java.util.List;
-
-public interface MigrationSteps {
-
-  List<Class<? extends MigrationStep>> CLASSES = ImmutableList.of(
-    // 3.6
-    ViolationMigrationStep.class,
-
-    // 4.2
-    PackageKeysMigrationStep.class, CompleteIssueMessageMigrationStep.class,
-
-    // 4.3
-    ConvertIssueDebtToMinutesMigrationStep.class,
-    IssueChangelogMigrationStep.class,
-    TechnicalDebtMeasuresMigrationStep.class,
-    DevelopmentCostMeasuresMigrationStep.class,
-    RequirementMeasuresMigrationStep.class,
-    NotResolvedIssuesOnRemovedComponentsMigrationStep.class,
-
-    // 4.4
-    IssueActionPlanKeyMigrationStep.class,
-    MeasureDataMigrationStep.class,
-    FeedQProfileKeysMigrationStep.class,
-    FeedQProfileDatesMigrationStep.class,
-    ChangeLogMigrationStep.class,
-    ConvertProfileMeasuresMigrationStep.class,
-
-    // 4.5
-    AddMissingRuleParameterDefaultValuesMigrationStep.class,
-    DeleteMeasuresOnDeletedProfilesMigrationStep.class,
-
-    // 4.5.1
-    AddMissingCustomRuleParametersMigrationStep.class,
-    DeleteUnescapedActivities.class,
-
-    // 5.0
-    InsertProjectsAuthorizationUpdatedAtMigrationStep.class,
-    PopulateProjectsUuidColumnsMigrationStep.class,
-    ReplaceIssueFiltersProjectKeyByUuid.class,
-    FeedSnapshotSourcesUpdatedAt.class,
-    FeedFileSources.class,
-    FeedIssueLongDates.class,
-    RemoveSortFieldFromIssueFiltersMigrationStep.class,
-
-    // 5.1
-    FeedIssueTags.class,
-    FeedUsersLongDates.class,
-    RenameComponentRelatedParamsInIssueFilters.class,
-    CopyScmAccountsFromAuthorsToUsers.class,
-    FeedIssueChangesLongDates.class,
-    FeedAnalysisReportsLongDates.class,
-    UpdateProjectsModuleUuidPath.class,
-    FeedIssueComponentUuids.class,
-    FeedSnapshotsLongDates.class,
-    FeedIssuesLongDates.class,
-    FeedFileSourcesBinaryData.class,
-    FeedSemaphoresLongDates.class,
-    FeedManualMeasuresLongDates.class,
-    FeedEventsLongDates.class,
-    AddNewCharacteristics.class,
-    RemovePermissionsOnModulesMigrationStep.class,
-    AddIssuesColumns.class,
-    DropIssuesColumns.class,
-
-    // 5.2
-    FeedProjectLinksComponentUuid.class,
-    FeedEventsComponentUuid.class,
-    MoveProjectProfileAssociation.class,
-    AddDependenciesComponentUuidColumns.class,
-    FeedDependenciesComponentUuids.class,
-    DropDependenciesComponentColumns.class,
-    FeedFileSourcesDataType.class,
-    AddDependenciesColumns.class
-    );
-}
index 379715cd497ac56da4bbbaa184368613e9c15116..8216f74dfa197869b5e990c8eacbd0d06e441f20 100644 (file)
@@ -45,7 +45,7 @@ import org.sonar.server.dashboard.db.WidgetPropertyDao;
 import org.sonar.server.db.DatabaseChecker;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.db.EmbeddedDatabaseFactory;
-import org.sonar.server.db.migrations.MigrationSteps;
+import org.sonar.server.db.migrations.MigrationStepModule;
 import org.sonar.server.event.db.EventDao;
 import org.sonar.server.issue.db.IssueDao;
 import org.sonar.server.issue.index.IssueIndex;
@@ -158,7 +158,7 @@ public class PlatformLevel1 extends PlatformLevel {
       AnalysisReportDao.class,
       FileSourceDao.class);
     addAll(CorePropertyDefinitions.all());
-    addAll(MigrationSteps.CLASSES);
+    add(MigrationStepModule.class);
     addAll(DaoUtils.getDaoClasses());
   }
 
diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/MigrationStepModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/MigrationStepModuleTest.java
new file mode 100644 (file)
index 0000000..b052256
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * 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.server.db.migrations;
+
+import org.junit.Test;
+import org.sonar.core.platform.ComponentContainer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class MigrationStepModuleTest {
+  @Test
+  public void verify_count_of_added_MigrationStep_types() throws Exception {
+    ComponentContainer container = new ComponentContainer();
+    new MigrationStepModule().configure(container);
+    assertThat(container.size()).isEqualTo(54);
+  }
+}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/MigrationStepsTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/MigrationStepsTest.java
deleted file mode 100644 (file)
index 75ab063..0000000
+++ /dev/null
@@ -1,33 +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.server.db.migrations;
-
-import org.junit.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class MigrationStepsTest {
-
-  @Test
-  public void check_number_of_migrations() {
-    assertThat(MigrationSteps.CLASSES).isNotEmpty();
-  }
-}
index 796cd8b6f32ba9a4acedf948f1556719a6da677b..6788e4cd28c6c44533ee13dedf430f6051393f8d 100644 (file)
@@ -9,7 +9,7 @@ HOW TO ADD A MIGRATION
 * If a table is added or removed, then edit sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
 * Changes in bulk must be handled using Java migrations based on org.sonar.server.db.migrations.MassUpdate :
   + Create the class for the Java migration in package package org.sonar.server.db.migrations.vXYZ, where XYZ is the version of SQ without dots
-  + Add the class to org.sonar.server.db.migrations.MigrationSteps.CLASSES
+  + Add the class to org.sonar.server.db.migrations.MigrationStepModule
   + Create a Ruby migration which calls execute_java_migration('org.sonar.server.db.migrations.vXYZ.MyMigration')
   + Simple, "one to one" migrations that only need to be split by 1000 can rely on class org.sonar.server.db.migrations.BaseDataChange