Completely remove GerritServer.properties We now load our database settings in hosted development mode from the $site_path/etc/gerrit.config, just like we would under daemon. This reduces the number of weird configurations that are supported. Change-Id: I0a13f16dd74bdb034d05650eadd5e36771109f3e Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/.gitignore b/.gitignore index 9f3c4e1..df4eae7 100644 --- a/.gitignore +++ b/.gitignore
@@ -1,4 +1,3 @@ /.project /.settings/org.maven.ide.eclipse.prefs -/GerritServer.properties /test_site
diff --git a/Documentation/dev-eclipse.txt b/Documentation/dev-eclipse.txt index 81c5ae6..dab246b 100644 --- a/Documentation/dev-eclipse.txt +++ b/Documentation/dev-eclipse.txt
@@ -82,9 +82,9 @@ * Modify the name to be unique. * Switch to Arguments tab. -* Edit the -d flag to match the path used during 'init'. The - template launch configuration resolves to ../test_site since - that is what the documentation recommends. +* Edit the `-d` program argument flag to match the path used during + 'init'. The template launch configuration resolves to ../test_site + since that is what the documentation recommends. * Switch to Common tab. * Change Save as to be Local file. @@ -93,12 +93,22 @@ Running Hosted Mode ~~~~~~~~~~~~~~~~~~~ -* Copy - `gerrit-war/src/main/webapp/WEB-INF/extra/GerritServer.properties_example` - to - `gerrit-parent/GerritServer.properties`. -* Edit to match your database parameters. -* Run the `gwtui_any` or `gwtui_mac` launch configuration. +Duplicate the existing `gwtui_any` (or `gwtui_mac` if on Mac OS X) +launch configuration: + +* Run -> Debug Configurations ... +* Java Application -> `gwtui_any` +* Right click, Duplicate + +* Modify the name to be unique. + +* Switch to Arguments tab. +* Edit the `-Dgerrit.site_path=` VM argument to match the path + used during 'init'. The template launch configuration resolves + to ../test_site since that is what the documentation recommends. + +* Switch to Common tab. +* Change Save as to be Local file. GERRIT
diff --git a/gerrit-pgm/pom.xml b/gerrit-pgm/pom.xml index ab04ed0..15b966e 100644 --- a/gerrit-pgm/pom.xml +++ b/gerrit-pgm/pom.xml
@@ -39,11 +39,6 @@ </dependency> <dependency> - <groupId>commons-dbcp</groupId> - <artifactId>commons-dbcp</artifactId> - </dependency> - - <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java index add0a93..8c592e6 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
@@ -14,7 +14,7 @@ package com.google.gerrit.pgm; -import static com.google.gerrit.pgm.util.DataSourceProvider.Context.MULTI_USER; +import static com.google.gerrit.server.schema.DataSourceProvider.Context.MULTI_USER; import com.google.gerrit.httpd.HttpCanonicalWebUrlProvider; import com.google.gerrit.httpd.WebModule;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Gsql.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Gsql.java index 0d27391..f7182ae 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Gsql.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Gsql.java
@@ -14,7 +14,7 @@ package com.google.gerrit.pgm; -import static com.google.gerrit.pgm.util.DataSourceProvider.Context.SINGLE_USER; +import static com.google.gerrit.server.schema.DataSourceProvider.Context.SINGLE_USER; import com.google.gerrit.lifecycle.LifecycleManager; import com.google.gerrit.pgm.util.RuntimeShutdown;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java index 98456f6..324bef1 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
@@ -14,7 +14,7 @@ package com.google.gerrit.pgm; -import static com.google.gerrit.pgm.util.DataSourceProvider.Context.SINGLE_USER; +import static com.google.gerrit.server.schema.DataSourceProvider.Context.SINGLE_USER; import static com.google.inject.Stage.PRODUCTION; import com.google.gerrit.common.PageLinks;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitDatabase.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitDatabase.java index ff94df1..c3270ab 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitDatabase.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitDatabase.java
@@ -16,11 +16,11 @@ import static com.google.gerrit.pgm.init.InitUtil.die; import static com.google.gerrit.pgm.init.InitUtil.username; -import static com.google.gerrit.pgm.util.DataSourceProvider.Type.H2; +import static com.google.gerrit.server.schema.DataSourceProvider.Type.H2; import com.google.gerrit.pgm.util.ConsoleUI; -import com.google.gerrit.pgm.util.DataSourceProvider; import com.google.gerrit.server.config.SitePaths; +import com.google.gerrit.server.schema.DataSourceProvider; import com.google.inject.Inject; import com.google.inject.Singleton;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/UpgradeFrom2_0_x.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/UpgradeFrom2_0_x.java index f039f0f..fad5878 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/UpgradeFrom2_0_x.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/UpgradeFrom2_0_x.java
@@ -19,8 +19,8 @@ import static com.google.gerrit.pgm.init.InitUtil.saveSecure; import com.google.gerrit.pgm.util.ConsoleUI; -import com.google.gerrit.pgm.util.DataSourceProvider; import com.google.gerrit.server.config.SitePaths; +import com.google.gerrit.server.schema.DataSourceProvider; import com.google.gerrit.server.util.SocketUtil; import com.google.inject.Inject; import com.google.inject.Singleton;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/SiteProgram.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/SiteProgram.java index 9d86984..c7cf057 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/SiteProgram.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/SiteProgram.java
@@ -21,6 +21,7 @@ import com.google.gerrit.server.config.DatabaseModule; import com.google.gerrit.server.config.GerritServerConfigModule; import com.google.gerrit.server.config.SitePath; +import com.google.gerrit.server.schema.DataSourceProvider; import com.google.gwtorm.client.OrmException; import com.google.inject.AbstractModule; import com.google.inject.CreationException;
diff --git a/gerrit-server/pom.xml b/gerrit-server/pom.xml index a1cbd69..7cc74a8 100644 --- a/gerrit-server/pom.xml +++ b/gerrit-server/pom.xml
@@ -49,6 +49,11 @@ </dependency> <dependency> + <groupId>commons-dbcp</groupId> + <artifactId>commons-dbcp</artifactId> + </dependency> + + <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> </dependency>
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/DataSourceProvider.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java similarity index 99% rename from gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/DataSourceProvider.java rename to gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java index 2be4f24..91d6346 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/DataSourceProvider.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java
@@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.pgm.util; +package com.google.gerrit.server.schema; import com.google.gerrit.lifecycle.LifecycleListener; import com.google.gerrit.server.config.ConfigUtil;
diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/ReviewDbDataSourceProvider.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/ReviewDbDataSourceProvider.java index 8a0d50b..233d53d 100644 --- a/gerrit-war/src/main/java/com/google/gerrit/httpd/ReviewDbDataSourceProvider.java +++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/ReviewDbDataSourceProvider.java
@@ -15,18 +15,10 @@ package com.google.gerrit.httpd; import com.google.gerrit.lifecycle.LifecycleListener; -import com.google.gwtorm.jdbc.SimpleDataSource; import com.google.inject.Provider; import com.google.inject.ProvisionException; import com.google.inject.Singleton; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.sql.SQLException; -import java.util.Map; -import java.util.Properties; - import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; @@ -61,49 +53,10 @@ try { return (DataSource) new InitialContext().lookup(dsName); } catch (NamingException namingErr) { - final Properties p = readGerritDataSource(); - if (p == null) { - throw new ProvisionException("Initialization error:\n" - + " * No DataSource " + dsName + "\n" - + " * No -DGerritServer=GerritServer.properties" - + " on Java command line", namingErr); - } - - try { - return new SimpleDataSource(p); - } catch (SQLException se) { - throw new ProvisionException("Database unavailable", se); - } + throw new ProvisionException("No DataSource " + dsName, namingErr); } } - private static Properties readGerritDataSource() throws ProvisionException { - final Properties srvprop = new Properties(); - String name = System.getProperty("GerritServer"); - if (name == null) { - name = "GerritServer.properties"; - } - try { - final InputStream in = new FileInputStream(name); - try { - srvprop.load(in); - } finally { - in.close(); - } - } catch (IOException e) { - throw new ProvisionException("Cannot read " + name, e); - } - - final Properties dbprop = new Properties(); - for (final Map.Entry<Object, Object> e : srvprop.entrySet()) { - final String key = (String) e.getKey(); - if (key.startsWith("database.")) { - dbprop.put(key.substring("database.".length()), e.getValue()); - } - } - return dbprop; - } - private void closeDataSource(final DataSource ds) { try { Class<?> type = Class.forName("org.apache.commons.dbcp.BasicDataSource");
diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java index 7a4dac0..8f064c4 100644 --- a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java +++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
@@ -27,6 +27,7 @@ import com.google.gerrit.server.config.MasterNodeStartup; import com.google.gerrit.server.config.SitePath; import com.google.gerrit.server.config.SitePathFromSystemConfigProvider; +import com.google.gerrit.server.schema.DataSourceProvider; import com.google.gerrit.sshd.SshModule; import com.google.gerrit.sshd.commands.MasterCommandModule; import com.google.inject.AbstractModule; @@ -57,6 +58,7 @@ private static final Logger log = LoggerFactory.getLogger(WebAppInitializer.class); + private File sitePath; private Injector dbInjector; private Injector cfgInjector; private Injector sysInjector; @@ -66,6 +68,11 @@ private synchronized void init() { if (manager == null) { + final String path = System.getProperty("gerrit.site_path"); + if (path != null) { + sitePath = new File(path); + } + try { dbInjector = createDbInjector(); } catch (CreationException ce) { @@ -115,28 +122,50 @@ private Injector createDbInjector() { final List<Module> modules = new ArrayList<Module>(); - modules.add(new LifecycleModule() { - @Override - protected void configure() { - bind(Key.get(DataSource.class, Names.named("ReviewDb"))).toProvider( - ReviewDbDataSourceProvider.class).in(SINGLETON); - listener().to(ReviewDbDataSourceProvider.class); - } - }); + if (sitePath != null) { + modules.add(new LifecycleModule() { + @Override + protected void configure() { + bind(File.class).annotatedWith(SitePath.class).toInstance(sitePath); + bind(DataSourceProvider.Context.class).toInstance( + DataSourceProvider.Context.MULTI_USER); + bind(Key.get(DataSource.class, Names.named("ReviewDb"))).toProvider( + DataSourceProvider.class).in(SINGLETON); + listener().to(DataSourceProvider.class); + } + }); + modules.add(new GerritServerConfigModule()); + + } else { + modules.add(new LifecycleModule() { + @Override + protected void configure() { + bind(Key.get(DataSource.class, Names.named("ReviewDb"))).toProvider( + ReviewDbDataSourceProvider.class).in(SINGLETON); + listener().to(ReviewDbDataSourceProvider.class); + } + }); + } modules.add(new DatabaseModule()); return Guice.createInjector(PRODUCTION, modules); } private Injector createCfgInjector() { final List<Module> modules = new ArrayList<Module>(); - modules.add(new AbstractModule() { - @Override - protected void configure() { - bind(File.class).annotatedWith(SitePath.class).toProvider( - SitePathFromSystemConfigProvider.class).in(SINGLETON); - } - }); - modules.add(new GerritServerConfigModule()); + if (sitePath == null) { + // If we didn't get the site path from the system property + // we need to get it from the database, as that's our old + // method of locating the site path on disk. + // + modules.add(new AbstractModule() { + @Override + protected void configure() { + bind(File.class).annotatedWith(SitePath.class).toProvider( + SitePathFromSystemConfigProvider.class).in(SINGLETON); + } + }); + modules.add(new GerritServerConfigModule()); + } modules.add(new AuthConfigModule()); return dbInjector.createChildInjector(modules); }
diff --git a/gerrit-war/src/main/webapp/WEB-INF/extra/GerritServer.properties_example b/gerrit-war/src/main/webapp/WEB-INF/extra/GerritServer.properties_example deleted file mode 100644 index a3e0d73..0000000 --- a/gerrit-war/src/main/webapp/WEB-INF/extra/GerritServer.properties_example +++ /dev/null
@@ -1,32 +0,0 @@ -# Any properties starting with "database." will be fed to the JDBC driver, -# after removing the "database." prefix. -# -# The following "special" properties are removed from that set: -# -# database.driver : Class name of the driver to load. -# database.url : The connection URL -# - - -# H2 -# (driver included) -# -# database.driver = org.h2.Driver -# database.url = jdbc:h2:file:ReviewDb - - -# PostgreSQL -# (driver included) -# -# database.driver = org.postgresql.Driver -# database.url = jdbc:postgresql:reviewdb -# database.user = gerrit2 -# database.password = supersecretcode - - -# MySQL 5.0 -# curl -O http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar -# -# database.classpath = mysql-connector-java-5.0.8.jar -# database.driver = com.mysql.jdbc.Driver -# database.url = jdbc:mysql://localhost/reviewdb?user=gerrit2&password=secretcode
diff --git a/tools/gwtui_any.launch b/tools/gwtui_any.launch index 402f041..34a9ed6 100644 --- a/tools/gwtui_any.launch +++ b/tools/gwtui_any.launch
@@ -32,5 +32,5 @@ <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl / -war ${resource_loc:/gerrit-gwtui/target}/gwt-hosted-mode -server com.google.gerrit.gwtdebug.GerritDebugLauncher com.google.gerrit.GerritGwtUI"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-gwtdbug"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M -DGerritServer=${resource_loc:/gerrit-parent/GerritServer.properties} -Dcom.google.gerrit.httpd.auth.become=true"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M -Dcom.google.gerrit.httpd.auth.become=true -Dgerrit.site_path=${resource_loc:/gerrit-parent}/../android_codereview"/> </launchConfiguration>
diff --git a/tools/gwtui_mac.launch b/tools/gwtui_mac.launch index dca7b45..719bf68 100644 --- a/tools/gwtui_mac.launch +++ b/tools/gwtui_mac.launch
@@ -32,5 +32,5 @@ <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl / -war ${resource_loc:/gerrit-gwtui/target}/gwt-hosted-mode -server com.google.gerrit.gwtdebug.GerritDebugLauncher com.google.gerrit.GerritGwtUI"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-gwtdbug"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XstartOnFirstThread -Xmx256M -DGerritServer=${resource_loc:/gerrit-parent/GerritServer.properties} -Dcom.google.gerrit.httpd.auth.become=true"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XstartOnFirstThread -Xmx256M -Dcom.google.gerrit.httpd.auth.become=true -Dgerrit.site_path=${resource_loc:/gerrit-parent}/../test_site"/> </launchConfiguration>