From 1d7e72cf67781dc52d2d1e0ab7f6ed496926e4ac Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Thu, 8 Dec 2016 11:53:37 +0100 Subject: [PATCH] SONAR-8445 move PlatformDatabaseMigration to package migration instead of package migrations, so that it is located as if it was in sonar-db-migration --- .../DatabaseMigrationExecutorService.java} | 6 ++--- ...DatabaseMigrationExecutorServiceImpl.java} | 10 ++++---- .../DatabaseMigrationImpl.java} | 14 +++++------ .../platform/db/migration/package-info.java | 23 +++++++++++++++++++ .../platformlevel/PlatformLevel2.java | 4 ++-- .../platformlevel/PlatformLevelSafeMode.java | 4 ++-- ...abaseMigrationExecutorServiceAdaptor.java} | 6 ++--- ...atabaseMigrationImplAsynchronousTest.java} | 9 ++++---- ...aseMigrationImplConcurrentAccessTest.java} | 11 ++++----- .../DatabaseMigrationImplTest.java} | 13 ++++------- 10 files changed, 58 insertions(+), 42 deletions(-) rename server/sonar-server/src/main/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigrationExecutorService.java => migration/DatabaseMigrationExecutorService.java} (85%) rename server/sonar-server/src/main/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigrationExecutorServiceImpl.java => migration/DatabaseMigrationExecutorServiceImpl.java} (83%) rename server/sonar-server/src/main/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigration.java => migration/DatabaseMigrationImpl.java} (87%) create mode 100644 server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/package-info.java rename server/sonar-server/src/test/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigrationExecutorServiceAdaptor.java => migration/DatabaseMigrationExecutorServiceAdaptor.java} (91%) rename server/sonar-server/src/test/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigrationAsynchronousTest.java => migration/DatabaseMigrationImplAsynchronousTest.java} (79%) rename server/sonar-server/src/test/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigrationConcurrentAccessTest.java => migration/DatabaseMigrationImplConcurrentAccessTest.java} (87%) rename server/sonar-server/src/test/java/org/sonar/server/platform/db/{migrations/PlatformDatabaseMigrationTest.java => migration/DatabaseMigrationImplTest.java} (86%) diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorService.java b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorService.java similarity index 85% rename from server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorService.java rename to server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorService.java index 3efc61e846d..4e6f70b9481 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorService.java @@ -17,13 +17,13 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import java.util.concurrent.ExecutorService; /** - * Flag interface for the ExecutorService to be used by the {@link PlatformDatabaseMigration} + * Flag interface for the ExecutorService to be used by the {@link DatabaseMigrationImpl} * component. */ -public interface PlatformDatabaseMigrationExecutorService extends ExecutorService { +public interface DatabaseMigrationExecutorService extends ExecutorService { } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorServiceImpl.java b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorServiceImpl.java similarity index 83% rename from server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorServiceImpl.java rename to server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorServiceImpl.java index 39d438d8a36..6afec117b70 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorServiceImpl.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorServiceImpl.java @@ -17,7 +17,7 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.sonar.server.util.AbstractStoppableExecutorService; @@ -25,14 +25,14 @@ import org.sonar.server.util.AbstractStoppableExecutorService; import java.util.concurrent.Executors; /** - * Since only one DB migration can run at a time, this implementation of PlatformDatabaseMigrationExecutorService + * Since only one DB migration can run at a time, this implementation of DatabaseMigrationExecutorService * wraps a single thread executor from the JDK. */ -public class PlatformDatabaseMigrationExecutorServiceImpl +public class DatabaseMigrationExecutorServiceImpl extends AbstractStoppableExecutorService - implements PlatformDatabaseMigrationExecutorService { + implements DatabaseMigrationExecutorService { - public PlatformDatabaseMigrationExecutorServiceImpl() { + public DatabaseMigrationExecutorServiceImpl() { super( Executors.newSingleThreadExecutor( new ThreadFactoryBuilder() diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigration.java b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationImpl.java similarity index 87% rename from server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigration.java rename to server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationImpl.java index 6390a3e2f93..4770873e53b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigration.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/DatabaseMigrationImpl.java @@ -17,7 +17,7 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import java.util.Date; import java.util.concurrent.atomic.AtomicBoolean; @@ -26,8 +26,6 @@ import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.api.utils.log.Profiler; import org.sonar.server.platform.Platform; -import org.sonar.server.platform.db.migration.DatabaseMigration; -import org.sonar.server.platform.db.migration.MutableDatabaseMigrationState; import org.sonar.server.ruby.RubyBridge; import static org.sonar.server.platform.db.migration.DatabaseMigrationState.Status; @@ -35,15 +33,15 @@ import static org.sonar.server.platform.db.migration.DatabaseMigrationState.Stat /** * Handles concurrency to make sure only one DB migration can run at a time. */ -public class PlatformDatabaseMigration implements DatabaseMigration { +public class DatabaseMigrationImpl implements DatabaseMigration { - private static final Logger LOGGER = Loggers.get(PlatformDatabaseMigration.class); + private static final Logger LOGGER = Loggers.get(DatabaseMigrationImpl.class); private final RubyBridge rubyBridge; /** * ExecutorService implements threads management. */ - private final PlatformDatabaseMigrationExecutorService executorService; + private final DatabaseMigrationExecutorService executorService; private final Platform platform; private final MutableDatabaseMigrationState migrationState; /** @@ -60,8 +58,8 @@ public class PlatformDatabaseMigration implements DatabaseMigration { */ private final AtomicBoolean running = new AtomicBoolean(false); - public PlatformDatabaseMigration(RubyBridge rubyBridge, PlatformDatabaseMigrationExecutorService executorService, Platform platform, - MutableDatabaseMigrationState migrationState) { + public DatabaseMigrationImpl(RubyBridge rubyBridge, DatabaseMigrationExecutorService executorService, Platform platform, + MutableDatabaseMigrationState migrationState) { this.rubyBridge = rubyBridge; this.executorService = executorService; this.platform = platform; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/package-info.java b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/package-info.java new file mode 100644 index 00000000000..2c2419edf2c --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/db/migration/package-info.java @@ -0,0 +1,23 @@ +/* + * SonarQube + * Copyright (C) 2009-2016 SonarSource SA + * mailto:contact AT sonarsource DOT com + * + * This program 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. + * + * This program 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. + */ +@ParametersAreNonnullByDefault +package org.sonar.server.platform.db.migration; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel2.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel2.java index 0242d9348de..9e9f2e95479 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel2.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel2.java @@ -29,10 +29,10 @@ import org.sonar.db.version.MigrationStepModule; import org.sonar.server.platform.DefaultServerUpgradeStatus; import org.sonar.server.platform.StartupMetadataProvider; import org.sonar.server.platform.db.CheckDatabaseCharsetAtStartup; +import org.sonar.server.platform.db.migration.DatabaseMigrationExecutorServiceImpl; import org.sonar.server.platform.db.migration.DatabaseMigrationStateImpl; import org.sonar.server.platform.db.migration.history.MigrationHistoryTableImpl; import org.sonar.server.platform.db.migrations.DatabaseMigrator; -import org.sonar.server.platform.db.migrations.PlatformDatabaseMigrationExecutorServiceImpl; import org.sonar.server.platform.web.RailsAppsDeployer; import org.sonar.server.plugins.InstalledPluginReferentialFactory; import org.sonar.server.plugins.ServerPluginJarExploder; @@ -73,7 +73,7 @@ public class PlatformLevel2 extends PlatformLevel { // Full Java DB Migration framework and configuration addIfStartupLeader(MigrationHistoryTableImpl.class); add(DatabaseMigrationStateImpl.class, - PlatformDatabaseMigrationExecutorServiceImpl.class); + DatabaseMigrationExecutorServiceImpl.class); // Ruby DB Migration add( DatabaseMigrator.class, diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevelSafeMode.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevelSafeMode.java index fa46f387a9d..5d86d638fce 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevelSafeMode.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevelSafeMode.java @@ -21,7 +21,7 @@ package org.sonar.server.platform.platformlevel; import org.sonar.server.organization.NoopDefaultOrganizationCache; import org.sonar.server.platform.ServerImpl; -import org.sonar.server.platform.db.migrations.PlatformDatabaseMigration; +import org.sonar.server.platform.db.migration.DatabaseMigrationImpl; import org.sonar.server.platform.web.WebPagesFilter; import org.sonar.server.platform.ws.DbMigrationStatusAction; import org.sonar.server.platform.ws.IndexAction; @@ -62,6 +62,6 @@ public class PlatformLevelSafeMode extends PlatformLevel { WebServiceFilter.class, NoopDefaultOrganizationCache.class); - add(PlatformDatabaseMigration.class); + add(DatabaseMigrationImpl.class); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorServiceAdaptor.java b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorServiceAdaptor.java similarity index 91% rename from server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorServiceAdaptor.java rename to server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorServiceAdaptor.java index 2e05ba02b65..5e62812e53a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationExecutorServiceAdaptor.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationExecutorServiceAdaptor.java @@ -17,7 +17,7 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import java.util.Collection; import java.util.List; @@ -28,10 +28,10 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; /** - * Adaptor for the PlatformDatabaseMigrationExecutorService interface which implementation of methods all throw + * Adaptor for the DatabaseMigrationExecutorService interface which implementation of methods all throw * UnsupportedOperationException. */ -class PlatformDatabaseMigrationExecutorServiceAdaptor implements PlatformDatabaseMigrationExecutorService { +class DatabaseMigrationExecutorServiceAdaptor implements DatabaseMigrationExecutorService { @Override public void execute(Runnable command) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationAsynchronousTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplAsynchronousTest.java similarity index 79% rename from server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationAsynchronousTest.java rename to server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplAsynchronousTest.java index b76610d14d6..d5904c95389 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationAsynchronousTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplAsynchronousTest.java @@ -17,24 +17,23 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import org.junit.Test; import org.sonar.server.platform.Platform; -import org.sonar.server.platform.db.migration.MutableDatabaseMigrationState; import org.sonar.server.ruby.RubyBridge; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; -public class PlatformDatabaseMigrationAsynchronousTest { +public class DatabaseMigrationImplAsynchronousTest { private boolean taskSuppliedForAsyncProcess = false; /** * Implementation of execute wraps specified Runnable to add a delay of 200 ms before passing it * to a SingleThread executor to execute asynchronously. */ - private PlatformDatabaseMigrationExecutorService executorService = new PlatformDatabaseMigrationExecutorServiceAdaptor() { + private DatabaseMigrationExecutorService executorService = new DatabaseMigrationExecutorServiceAdaptor() { @Override public void execute(final Runnable command) { taskSuppliedForAsyncProcess = true; @@ -43,7 +42,7 @@ public class PlatformDatabaseMigrationAsynchronousTest { private RubyBridge rubyBridge = mock(RubyBridge.class); private Platform platform = mock(Platform.class); private MutableDatabaseMigrationState migrationState = mock(MutableDatabaseMigrationState.class); - private PlatformDatabaseMigration underTest = new PlatformDatabaseMigration(rubyBridge, executorService, platform, migrationState); + private DatabaseMigrationImpl underTest = new DatabaseMigrationImpl(rubyBridge, executorService, platform, migrationState); @Test public void testName() throws Exception { diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationConcurrentAccessTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplConcurrentAccessTest.java similarity index 87% rename from server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationConcurrentAccessTest.java rename to server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplConcurrentAccessTest.java index 18f4594013a..75fe3d42753 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationConcurrentAccessTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplConcurrentAccessTest.java @@ -17,7 +17,7 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import com.google.common.base.Throwables; import java.util.concurrent.CountDownLatch; @@ -28,7 +28,6 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.After; import org.junit.Test; import org.sonar.server.platform.Platform; -import org.sonar.server.platform.db.migration.MutableDatabaseMigrationState; import org.sonar.server.ruby.RubyBridge; import org.sonar.server.ruby.RubyDatabaseMigration; import org.sonar.server.ruby.RubyRailsRoutes; @@ -37,11 +36,11 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class PlatformDatabaseMigrationConcurrentAccessTest { +public class DatabaseMigrationImplConcurrentAccessTest { private ExecutorService pool = Executors.newFixedThreadPool(2); /** - * Latch is used to make sure both testing threads try and call {@link PlatformDatabaseMigration#startIt()} at the + * Latch is used to make sure both testing threads try and call {@link DatabaseMigrationImpl#startIt()} at the * same time */ private CountDownLatch latch = new CountDownLatch(2); @@ -49,7 +48,7 @@ public class PlatformDatabaseMigrationConcurrentAccessTest { /** * Implementation of execute runs Runnable synchronously */ - private PlatformDatabaseMigrationExecutorService executorService = new PlatformDatabaseMigrationExecutorServiceAdaptor() { + private DatabaseMigrationExecutorService executorService = new DatabaseMigrationExecutorServiceAdaptor() { @Override public void execute(Runnable command) { command.run(); @@ -77,7 +76,7 @@ public class PlatformDatabaseMigrationConcurrentAccessTest { private Platform platform = mock(Platform.class); private RubyRailsRoutes railsRoutes = mock(RubyRailsRoutes.class); private MutableDatabaseMigrationState migrationState = mock(MutableDatabaseMigrationState.class); - private PlatformDatabaseMigration underTest = new PlatformDatabaseMigration(rubyBridge, executorService, platform, migrationState); + private DatabaseMigrationImpl underTest = new DatabaseMigrationImpl(rubyBridge, executorService, platform, migrationState); @After public void tearDown() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplTest.java similarity index 86% rename from server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationTest.java rename to server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplTest.java index fb9601ea72a..a1a248a074e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/db/migrations/PlatformDatabaseMigrationTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/DatabaseMigrationImplTest.java @@ -17,15 +17,12 @@ * 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.platform.db.migrations; +package org.sonar.server.platform.db.migration; import java.util.Date; import org.junit.Test; import org.mockito.InOrder; import org.sonar.server.platform.Platform; -import org.sonar.server.platform.db.migration.DatabaseMigrationState; -import org.sonar.server.platform.db.migration.DatabaseMigrationStateImpl; -import org.sonar.server.platform.db.migration.MutableDatabaseMigrationState; import org.sonar.server.ruby.RubyBridge; import org.sonar.server.ruby.RubyDatabaseMigration; import org.sonar.server.ruby.RubyRailsRoutes; @@ -38,15 +35,15 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** - * Unit test for PlatformDatabaseMigration which does not test any of its concurrency management and asynchronous execution code. + * Unit test for DatabaseMigrationImpl which does not test any of its concurrency management and asynchronous execution code. */ -public class PlatformDatabaseMigrationTest { +public class DatabaseMigrationImplTest { private static final Throwable AN_ERROR = new RuntimeException("runtime exception created on purpose"); /** * Implementation of execute runs Runnable synchronously. */ - private PlatformDatabaseMigrationExecutorService executorService = new PlatformDatabaseMigrationExecutorServiceAdaptor() { + private DatabaseMigrationExecutorService executorService = new DatabaseMigrationExecutorServiceAdaptor() { @Override public void execute(Runnable command) { command.run(); @@ -59,7 +56,7 @@ public class PlatformDatabaseMigrationTest { private MutableDatabaseMigrationState migrationState = new DatabaseMigrationStateImpl(); private InOrder inOrder = inOrder(rubyDatabaseMigration, rubyBridge, rubyRailsRoutes, platform); - private PlatformDatabaseMigration underTest = new PlatformDatabaseMigration(rubyBridge, executorService, platform, migrationState); + private DatabaseMigrationImpl underTest = new DatabaseMigrationImpl(rubyBridge, executorService, platform, migrationState); @Test public void startit_calls_databasemigration_trigger_in_a_separate_thread() { -- 2.39.5