Delete the unused SystemConfigProvider

We no longer need to inject the SystemConfig record into any part
of the code, so remove.

Change-Id: I49a6849639b754fb1b9d1964c7d79e76e407a480
This commit is contained in:
Shawn O. Pearce
2011-06-17 08:06:05 -07:00
parent 34f38cf679
commit d8e1ab6071
9 changed files with 42 additions and 52 deletions

View File

@@ -31,6 +31,7 @@ import com.google.gerrit.server.config.CanonicalWebUrlModule;
import com.google.gerrit.server.config.CanonicalWebUrlProvider; import com.google.gerrit.server.config.CanonicalWebUrlProvider;
import com.google.gerrit.server.config.GerritGlobalModule; import com.google.gerrit.server.config.GerritGlobalModule;
import com.google.gerrit.server.config.MasterNodeStartup; import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.schema.SchemaVersionCheck;
import com.google.gerrit.sshd.SshModule; import com.google.gerrit.sshd.SshModule;
import com.google.gerrit.sshd.commands.MasterCommandModule; import com.google.gerrit.sshd.commands.MasterCommandModule;
import com.google.gerrit.sshd.commands.SlaveCommandModule; import com.google.gerrit.sshd.commands.SlaveCommandModule;
@@ -185,6 +186,7 @@ public class Daemon extends SiteProgram {
private Injector createSysInjector() { private Injector createSysInjector() {
final List<Module> modules = new ArrayList<Module>(); final List<Module> modules = new ArrayList<Module>();
modules.add(SchemaVersionCheck.module());
modules.add(new LogFileCompressor.Module()); modules.add(new LogFileCompressor.Module());
modules.add(cfgInjector.getInstance(GerritGlobalModule.class)); modules.add(cfgInjector.getInstance(GerritGlobalModule.class));
if (httpd) { if (httpd) {

View File

@@ -28,7 +28,6 @@ import com.google.gerrit.server.account.AccountCacheImpl;
import com.google.gerrit.server.account.GroupCacheImpl; import com.google.gerrit.server.account.GroupCacheImpl;
import com.google.gerrit.server.cache.CachePool; import com.google.gerrit.server.cache.CachePool;
import com.google.gerrit.server.config.ApprovalTypesProvider; import com.google.gerrit.server.config.ApprovalTypesProvider;
import com.google.gerrit.server.config.AuthConfigModule;
import com.google.gerrit.server.config.CanonicalWebUrl; import com.google.gerrit.server.config.CanonicalWebUrl;
import com.google.gerrit.server.config.CanonicalWebUrlProvider; import com.google.gerrit.server.config.CanonicalWebUrlProvider;
import com.google.gerrit.server.config.FactoryModule; import com.google.gerrit.server.config.FactoryModule;
@@ -36,6 +35,7 @@ import com.google.gerrit.server.git.CodeReviewNoteCreationException;
import com.google.gerrit.server.git.CreateCodeReviewNotes; import com.google.gerrit.server.git.CreateCodeReviewNotes;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.LocalDiskRepositoryManager; import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.schema.SchemaVersionCheck;
import com.google.gwtorm.client.OrmException; import com.google.gwtorm.client.OrmException;
import com.google.gwtorm.client.SchemaFactory; import com.google.gwtorm.client.SchemaFactory;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
@@ -91,6 +91,7 @@ public class ExportReviewNotes extends SiteProgram {
gitInjector = dbInjector.createChildInjector(new AbstractModule() { gitInjector = dbInjector.createChildInjector(new AbstractModule() {
@Override @Override
protected void configure() { protected void configure() {
install(SchemaVersionCheck.module());
bind(ApprovalTypes.class).toProvider(ApprovalTypesProvider.class).in( bind(ApprovalTypes.class).toProvider(ApprovalTypesProvider.class).in(
Scopes.SINGLETON); Scopes.SINGLETON);
bind(String.class).annotatedWith(CanonicalWebUrl.class) bind(String.class).annotatedWith(CanonicalWebUrl.class)
@@ -99,7 +100,6 @@ public class ExportReviewNotes extends SiteProgram {
install(AccountCacheImpl.module()); install(AccountCacheImpl.module());
install(GroupCacheImpl.module()); install(GroupCacheImpl.module());
install(new AuthConfigModule());
install(new FactoryModule() { install(new FactoryModule() {
@Override @Override
protected void configure() { protected void configure() {

View File

@@ -25,6 +25,7 @@ import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.config.TrackingFooters; import com.google.gerrit.server.config.TrackingFooters;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.schema.SchemaVersionCheck;
import com.google.gwtorm.client.OrmException; import com.google.gwtorm.client.OrmException;
import com.google.gwtorm.client.SchemaFactory; import com.google.gwtorm.client.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
@@ -71,7 +72,9 @@ public class ScanTrackingIds extends SiteProgram {
} }
dbInjector = createDbInjector(MULTI_USER); dbInjector = createDbInjector(MULTI_USER);
manager.add(dbInjector); manager.add(
dbInjector,
dbInjector.createChildInjector(SchemaVersionCheck.module()));
manager.start(); manager.start();
dbInjector.injectMembers(this); dbInjector.injectMembers(this);

View File

@@ -17,7 +17,6 @@ package com.google.gerrit.server.config;
import com.google.gerrit.common.auth.openid.OpenIdProviderPattern; import com.google.gerrit.common.auth.openid.OpenIdProviderPattern;
import com.google.gerrit.reviewdb.AccountExternalId; import com.google.gerrit.reviewdb.AccountExternalId;
import com.google.gerrit.reviewdb.AuthType; import com.google.gerrit.reviewdb.AuthType;
import com.google.gerrit.reviewdb.SystemConfig;
import com.google.gwtjsonrpc.server.SignedToken; import com.google.gwtjsonrpc.server.SignedToken;
import com.google.gwtjsonrpc.server.XsrfException; import com.google.gwtjsonrpc.server.XsrfException;
import com.google.inject.Inject; import com.google.inject.Inject;
@@ -46,7 +45,7 @@ public class AuthConfig {
private final boolean allowGoogleAccountUpgrade; private final boolean allowGoogleAccountUpgrade;
@Inject @Inject
AuthConfig(@GerritServerConfig final Config cfg, final SystemConfig s) AuthConfig(@GerritServerConfig final Config cfg)
throws XsrfException { throws XsrfException {
authType = toType(cfg); authType = toType(cfg);
httpHeader = cfg.getString("auth", null, "httpheader"); httpHeader = cfg.getString("auth", null, "httpheader");

View File

@@ -16,14 +16,12 @@ package com.google.gerrit.server.config;
import static com.google.inject.Scopes.SINGLETON; import static com.google.inject.Scopes.SINGLETON;
import com.google.gerrit.reviewdb.SystemConfig;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
/** Creates {@link AuthConfig} from {@link GerritServerConfig}. */ /** Creates {@link AuthConfig} from {@link GerritServerConfig}. */
public class AuthConfigModule extends AbstractModule { public class AuthConfigModule extends AbstractModule {
@Override @Override
protected void configure() { protected void configure() {
bind(SystemConfig.class).toProvider(SystemConfigProvider.class).in(SINGLETON);
bind(AuthConfig.class).in(SINGLETON); bind(AuthConfig.class).in(SINGLETON);
} }
} }

View File

@@ -12,37 +12,43 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
package com.google.gerrit.server.config; package com.google.gerrit.server.schema;
import com.google.gerrit.lifecycle.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.CurrentSchemaVersion; import com.google.gerrit.reviewdb.CurrentSchemaVersion;
import com.google.gerrit.reviewdb.ReviewDb; import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.reviewdb.SystemConfig;
import com.google.gerrit.server.schema.Current;
import com.google.gerrit.server.schema.SchemaVersion;
import com.google.gwtorm.client.OrmException; import com.google.gwtorm.client.OrmException;
import com.google.gwtorm.client.SchemaFactory; import com.google.gwtorm.client.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Module;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.ProvisionException; import com.google.inject.ProvisionException;
import java.util.List; /** Validates the current schema version. */
public class SchemaVersionCheck implements LifecycleListener {
public static Module module () {
return new LifecycleModule() {
@Override
protected void configure() {
listener().to(SchemaVersionCheck.class);
}
};
}
/** Loads the {@link SystemConfig} from the database. */
public class SystemConfigProvider implements Provider<SystemConfig> {
private final SchemaFactory<ReviewDb> schema; private final SchemaFactory<ReviewDb> schema;
@Current @Current
private final Provider<SchemaVersion> version; private final Provider<SchemaVersion> version;
@Inject @Inject
public SystemConfigProvider(final SchemaFactory<ReviewDb> schemaFactory, public SchemaVersionCheck(SchemaFactory<ReviewDb> schemaFactory,
@Current final Provider<SchemaVersion> version) { @Current Provider<SchemaVersion> version) {
this.schema = schemaFactory; this.schema = schemaFactory;
this.version = version; this.version = version;
} }
@Override public void start() {
public SystemConfig get() {
try { try {
final ReviewDb db = schema.open(); final ReviewDb db = schema.open();
try { try {
@@ -50,33 +56,25 @@ public class SystemConfigProvider implements Provider<SystemConfig> {
final int eVer = version.get().getVersionNbr(); final int eVer = version.get().getVersionNbr();
if (sVer == null) { if (sVer == null) {
throw new OrmException("Schema not yet initialized." throw new ProvisionException("Schema not yet initialized."
+ " Run init to initialize the schema."); + " Run init to initialize the schema.");
} }
if (sVer.versionNbr != eVer) { if (sVer.versionNbr != eVer) {
throw new OrmException("Unsupported schema version " throw new ProvisionException("Unsupported schema version "
+ sVer.versionNbr + "; expected schema version " + eVer + sVer.versionNbr + "; expected schema version " + eVer
+ ". Run init to upgrade."); + ". Run init to upgrade.");
} }
final List<SystemConfig> all = db.systemConfig().all().toList();
switch (all.size()) {
case 1:
return all.get(0);
case 0:
throw new OrmException("system_config table is empty");
default:
throw new OrmException("system_config must have exactly 1 row;"
+ " found " + all.size() + " rows instead");
}
} finally { } finally {
db.close(); db.close();
} }
} catch (OrmException e) { } catch (OrmException e) {
throw new ProvisionException("Cannot read system_config", e); throw new ProvisionException("Cannot read schema_version", e);
} }
} }
public void stop() {
}
private CurrentSchemaVersion getSchemaVersion(final ReviewDb db) { private CurrentSchemaVersion getSchemaVersion(final ReviewDb db) {
try { try {
return db.schemaVersion().get(new CurrentSchemaVersion.Key()); return db.schemaVersion().get(new CurrentSchemaVersion.Key());

View File

@@ -68,8 +68,6 @@ public class SchemaCreatorTest extends TestCase {
// //
db.create(); db.create();
db.assertSchemaVersion(); db.assertSchemaVersion();
final SystemConfig config = db.getSystemConfig();
assertNotNull(config);
// By default sitePath is set to the current working directory. // By default sitePath is set to the current working directory.
// //
@@ -77,16 +75,7 @@ public class SchemaCreatorTest extends TestCase {
if (sitePath.getName().equals(".")) { if (sitePath.getName().equals(".")) {
sitePath = sitePath.getParentFile(); sitePath = sitePath.getParentFile();
} }
assertEquals(sitePath.getAbsolutePath(), config.sitePath); assertEquals(sitePath.getAbsolutePath(), db.getSystemConfig().sitePath);
}
public void testSubsequentGetReads() throws OrmException {
db.create();
final SystemConfig exp = db.getSystemConfig();
final SystemConfig act = db.getSystemConfig();
assertNotSame(exp, act);
assertEquals(exp.sitePath, act.sitePath);
} }
public void testCreateSchema_ApprovalCategory_CodeReview() public void testCreateSchema_ApprovalCategory_CodeReview()

View File

@@ -22,7 +22,6 @@ import com.google.gerrit.server.GerritPersonIdentProvider;
import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.config.GerritServerConfig; import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePath; import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.config.SystemConfigProvider;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.LocalDiskRepositoryManager; import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.schema.Current; import com.google.gerrit.server.schema.Current;
@@ -35,7 +34,6 @@ import com.google.gwtorm.jdbc.SimpleDataSource;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Key; import com.google.inject.Key;
import com.google.inject.Provider;
import junit.framework.TestCase; import junit.framework.TestCase;
@@ -177,12 +175,13 @@ public class InMemoryDatabase implements SchemaFactory<ReviewDb> {
} }
} }
public SystemConfig getSystemConfig() { public SystemConfig getSystemConfig() throws OrmException {
return new SystemConfigProvider(this, new Provider<SchemaVersion>() { final ReviewDb c = open();
public SchemaVersion get() { try {
return schemaVersion; return c.systemConfig().get(new SystemConfig.Key());
} } finally {
}).get(); c.close();
}
} }
public CurrentSchemaVersion getSchemaVersion() throws OrmException { public CurrentSchemaVersion getSchemaVersion() throws OrmException {

View File

@@ -28,6 +28,7 @@ import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.schema.DataSourceProvider; import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.gerrit.server.schema.DatabaseModule; import com.google.gerrit.server.schema.DatabaseModule;
import com.google.gerrit.server.schema.SchemaModule; import com.google.gerrit.server.schema.SchemaModule;
import com.google.gerrit.server.schema.SchemaVersionCheck;
import com.google.gerrit.sshd.SshModule; import com.google.gerrit.sshd.SshModule;
import com.google.gerrit.sshd.commands.MasterCommandModule; import com.google.gerrit.sshd.commands.MasterCommandModule;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
@@ -167,6 +168,7 @@ public class WebAppInitializer extends GuiceServletContextListener {
modules.add(new GerritServerConfigModule()); modules.add(new GerritServerConfigModule());
} }
modules.add(new SchemaModule()); modules.add(new SchemaModule());
modules.add(SchemaVersionCheck.module());
modules.add(new AuthConfigModule()); modules.add(new AuthConfigModule());
return dbInjector.createChildInjector(modules); return dbInjector.createChildInjector(modules);
} }