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:
@@ -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) {
|
||||||
|
@@ -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() {
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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");
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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());
|
@@ -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()
|
||||||
|
@@ -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 {
|
||||||
|
c.close();
|
||||||
}
|
}
|
||||||
}).get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CurrentSchemaVersion getSchemaVersion() throws OrmException {
|
public CurrentSchemaVersion getSchemaVersion() throws OrmException {
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user