Bind SecureStore and SecureStoreClassName in WebAppInitializer
Bug: Issue 3255 Change-Id: I71265720be581dc961d717096e44a84c6858ba55
This commit is contained in:
committed by
David Pursehouse
parent
c33a9108e8
commit
9eb14549a0
@@ -16,14 +16,61 @@ package com.google.gerrit.server.config;
|
||||
|
||||
import static com.google.inject.Scopes.SINGLETON;
|
||||
|
||||
import com.google.gerrit.server.securestore.DefaultSecureStore;
|
||||
import com.google.gerrit.server.securestore.SecureStore;
|
||||
import com.google.gerrit.server.securestore.SecureStoreProvider;
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.ProvisionException;
|
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.storage.file.FileBasedConfig;
|
||||
import org.eclipse.jgit.util.FS;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/** Creates {@link GerritServerConfig}. */
|
||||
public class GerritServerConfigModule extends AbstractModule {
|
||||
public static String getSecureStoreClassName(final File sitePath) {
|
||||
if (sitePath != null) {
|
||||
return getSecureStoreFromGerritConfig(sitePath);
|
||||
}
|
||||
|
||||
String secureStoreProperty = System.getProperty("gerrit.secure_store_class");
|
||||
return nullToDefault(secureStoreProperty);
|
||||
}
|
||||
|
||||
private static String getSecureStoreFromGerritConfig(final File sitePath) {
|
||||
AbstractModule m = new AbstractModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(File.class).annotatedWith(SitePath.class).toInstance(sitePath);
|
||||
bind(SitePaths.class);
|
||||
}
|
||||
};
|
||||
Injector injector = Guice.createInjector(m);
|
||||
SitePaths site = injector.getInstance(SitePaths.class);
|
||||
FileBasedConfig cfg = new FileBasedConfig(site.gerrit_config, FS.DETECTED);
|
||||
if (!cfg.getFile().exists()) {
|
||||
return DefaultSecureStore.class.getName();
|
||||
}
|
||||
|
||||
try {
|
||||
cfg.load();
|
||||
String className = cfg.getString("gerrit", null, "secureStoreClass");
|
||||
return nullToDefault(className);
|
||||
} catch (IOException | ConfigInvalidException e) {
|
||||
throw new ProvisionException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private static String nullToDefault(String className) {
|
||||
return className != null ? className : DefaultSecureStore.class.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(SitePaths.class);
|
||||
|
||||
Reference in New Issue
Block a user