import org.apache.commons.lang.StringUtils;
import org.h2.Driver;
import org.h2.tools.Server;
-import org.picocontainer.Startable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.CoreProperties;
import java.sql.DriverManager;
import java.sql.SQLException;
-public class EmbeddedDatabase implements Startable {
+public class EmbeddedDatabase {
private static final Logger LOG = LoggerFactory.getLogger(EmbeddedDatabase.class);
private final Settings settings;
private Server server;
this.settings = settings;
}
- @Override
public void start() {
File dbHome = getDataDirectory(settings);
if (!dbHome.exists()) {
}
}
- @Override
public void stop() {
if (server != null) {
server.stop();
import com.google.common.annotations.VisibleForTesting;
import org.apache.commons.dbutils.DbUtils;
import org.apache.ibatis.session.SqlSession;
-import org.picocontainer.Startable;
import org.slf4j.LoggerFactory;
import org.sonar.api.ServerComponent;
import org.sonar.core.persistence.Database;
*
* @since 2.12
*/
-public class DatabaseMigrator implements ServerComponent, Startable {
+public class DatabaseMigrator implements ServerComponent {
private final MyBatis myBatis;
private final Database database;
this.migrations = migrations;
}
- @Override
- public void start(){
- createDatabase();
- }
-
- @Override
- public void stop(){
- // Nothing to do
- }
-
/**
* @return true if the database has been created, false if this database is not supported
*/
- @VisibleForTesting
- boolean createDatabase() {
+ public boolean createDatabase() {
if (!DdlUtils.supportsDialect(database.getDialect().getId())) {
return false;
}
import org.sonar.api.test.MutableTestable;
import org.sonar.api.test.TestPlan;
import org.sonar.api.test.Testable;
-import org.sonar.api.web.*;
+import org.sonar.api.web.Footer;
+import org.sonar.api.web.NavigationSection;
+import org.sonar.api.web.Page;
+import org.sonar.api.web.RubyRailsWebservice;
+import org.sonar.api.web.Widget;
import org.sonar.core.component.SnapshotPerspectives;
import org.sonar.core.measure.MeasureFilterEngine;
import org.sonar.core.measure.MeasureFilterResult;
import org.sonar.server.platform.ServerIdGenerator;
import org.sonar.server.platform.ServerSettings;
import org.sonar.server.platform.SettingsChangeNotifier;
-import org.sonar.server.plugins.*;
+import org.sonar.server.plugins.InstalledPluginReferentialFactory;
+import org.sonar.server.plugins.PluginDownloader;
+import org.sonar.server.plugins.ServerPluginJarsInstaller;
+import org.sonar.server.plugins.ServerPluginRepository;
+import org.sonar.server.plugins.UpdateCenterMatrixFactory;
import org.sonar.server.rule.RuleRepositories;
import org.sonar.server.source.CodeColorizers;
import org.sonar.server.user.NewUserNotifier;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
-
import java.net.InetAddress;
import java.sql.Connection;
import java.util.Collection;
return get(Database.class);
}
- // Only used by Java migration
public DatabaseMigrator databaseMigrator() {
return get(DatabaseMigrator.class);
}
def self.automatic_setup
if current_version<=0
+ try_restore_structure_dump()
upgrade_and_start()
elsif uptodate?
load_java_web_services
ActiveRecord::Base.connected?
end
+ def self.try_restore_structure_dump()
+ ::Java::OrgSonarServerUi::JRubyFacade.getInstance().databaseMigrator().createDatabase()
+ end
+
+ def self.execute_sql_requests(requests)
+ requests.each do |request|
+ unless request.blank? || request.start_with?('--')
+ request.chomp!
+ request.chop! if request.end_with?(';')
+ ActiveRecord::Base.connection.execute(request)
+ end
+ end
+ end
+
def self.dialect
::Java::OrgSonarServerUi::JRubyFacade.getInstance().getDatabase().getDialect().getActiveRecordDialectCode()
end
import org.apache.commons.io.FileUtils;
import org.sonar.api.CoreProperties;
+import org.sonar.server.db.migrations.DatabaseMigrator;
import org.sonar.server.platform.Platform;
import java.io.File;
properties.setProperty("sonar.jdbc.url", "jdbc:h2:" + temp.getAbsolutePath() + "/h2");
platform.init(properties);
+ ((DatabaseMigrator) platform.getComponent(DatabaseMigrator.class)).createDatabase();
platform.doStart();
}