diff options
author | Shawn O. Pearce <sop@google.com> | 2009-12-19 13:38:19 -0800 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-12-19 13:38:19 -0800 |
commit | 955d00eb812aa02ebabba72c6e593b97a80e4aea (patch) | |
tree | 9e205f3424d57a756ea4ec9a6db4998a212caf97 | |
parent | e194e7f6cabcbeb82ffe5340f2e759df6930be40 (diff) |
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>
16 files changed, 80 insertions, 120 deletions
diff --git a/.gitignore b/.gitignore index 9f3c4e125a..df4eae7d96 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 81c5ae61be..dab246be8d 100644 --- a/Documentation/dev-eclipse.txt +++ b/Documentation/dev-eclipse.txt @@ -82,9 +82,9 @@ Duplicate the existing `pgm_daemon` launch configuration: * 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 @@ Duplicate the existing `pgm_daemon` launch configuration: 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 ab04ed02ca..15b966e573 100644 --- a/gerrit-pgm/pom.xml +++ b/gerrit-pgm/pom.xml @@ -39,11 +39,6 @@ limitations under the License. </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 add0a93de2..8c592e642d 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 0d27391dd8..f7182ae2d1 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 98456f6a84..324bef1bab 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 ff94df1c07..c3270abcb9 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 @@ package com.google.gerrit.pgm.init; 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 f039f0f765..fad587884f 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.savePublic; 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 9d86984476..c7cf057bc1 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.lifecycle.LifecycleModule; 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 a1cbd694be..7cc74a8a9d 100644 --- a/gerrit-server/pom.xml +++ b/gerrit-server/pom.xml @@ -49,6 +49,11 @@ limitations under the License. </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 index 2be4f24eba..91d6346b59 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 8a0d50b35f..233d53dd18 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,47 +53,8 @@ final class ReviewDbDataSourceProvider implements Provider<DataSource>, 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); - } - } - } - - 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()); - } + throw new ProvisionException("No DataSource " + dsName, namingErr); } - return dbprop; } private void closeDataSource(final DataSource ds) { 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 7a4dac0821..8f064c4d74 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.GerritServerConfigModule; 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 @@ public class WebAppInitializer extends GuiceServletContextListener { 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 @@ public class WebAppInitializer extends GuiceServletContextListener { 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 @@ public class WebAppInitializer extends GuiceServletContextListener { 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 a3e0d734f9..0000000000 --- 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 402f041ca2..34a9ed6efd 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 dca7b45149..719bf68d74 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> |