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 {
+public class EmbeddedDatabase implements Startable {
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 {
+public class DatabaseMigrator implements ServerComponent, Startable {
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
*/
- public boolean createDatabase() {
+ @VisibleForTesting
+ 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.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.api.web.*;
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.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.plugins.*;
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();
}