Refactor ProjectConfig constructors to live in a Factory

In the future, we would like to add a few injected dependencies of
ProjectConfig. The fact that we can't use an assisted factory will
hopefully prevent us from adding too many. Regardless, it's reasonable
to group together the few "read" static constructor method into a single
class along with the bare create method.

Change-Id: I391ae8e37086c22c10e7f342d46e08dd2242df71
This commit is contained in:
Dave Borowitz
2018-11-02 14:06:33 -07:00
parent dabc6604eb
commit 0ff5bceaa2
41 changed files with 204 additions and 82 deletions

View File

@@ -73,6 +73,7 @@ public class AllProjectsCreator {
private final AllProjectsName allProjectsName;
private final PersonIdent serverUser;
private final NotesMigration notesMigration;
private final ProjectConfig.Factory projectConfigFactory;
private final GroupReference anonymous;
private final GroupReference registered;
private final GroupReference owners;
@@ -90,11 +91,13 @@ public class AllProjectsCreator {
AllProjectsName allProjectsName,
@GerritPersonIdent PersonIdent serverUser,
NotesMigration notesMigration,
SystemGroupBackend systemGroupBackend) {
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory) {
this.repositoryManager = repositoryManager;
this.allProjectsName = allProjectsName;
this.serverUser = serverUser;
this.notesMigration = notesMigration;
this.projectConfigFactory = projectConfigFactory;
this.anonymous = systemGroupBackend.getGroup(ANONYMOUS_USERS);
this.registered = systemGroupBackend.getGroup(REGISTERED_USERS);
@@ -170,7 +173,7 @@ public class AllProjectsCreator {
Strings.emptyToNull(message),
"Initialized Gerrit Code Review " + Version.getVersion()));
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
Project p = config.getProject();
p.setDescription("Access inherited by all other projects.");
p.setBooleanConfig(BooleanProjectConfig.REQUIRE_CHANGE_ID, InheritableBoolean.TRUE);

View File

@@ -35,6 +35,7 @@ import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.meta.MetaDataUpdate;
import com.google.gerrit.server.group.SystemGroupBackend;
import com.google.gerrit.server.project.ProjectConfig;
import com.google.gerrit.server.project.ProjectConfig.Factory;
import com.google.gerrit.server.project.RefPattern;
import com.google.inject.Inject;
import java.io.IOException;
@@ -50,6 +51,7 @@ public class AllUsersCreator {
private final GitRepositoryManager mgr;
private final AllUsersName allUsersName;
private final PersonIdent serverUser;
private final ProjectConfig.Factory projectConfigFactory;
private final GroupReference registered;
@Nullable private GroupReference admin;
@@ -60,11 +62,13 @@ public class AllUsersCreator {
GitRepositoryManager mgr,
AllUsersName allUsersName,
SystemGroupBackend systemGroupBackend,
@GerritPersonIdent PersonIdent serverUser) {
@GerritPersonIdent PersonIdent serverUser,
Factory projectConfigFactory) {
this.mgr = mgr;
this.allUsersName = allUsersName;
this.serverUser = serverUser;
this.registered = systemGroupBackend.getGroup(REGISTERED_USERS);
this.projectConfigFactory = projectConfigFactory;
this.codeReviewLabel = getDefaultCodeReviewLabel();
}
@@ -107,7 +111,7 @@ public class AllUsersCreator {
md.getCommitBuilder().setCommitter(serverUser);
md.setMessage("Initialized Gerrit Code Review " + Version.getVersion());
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
Project project = config.getProject();
project.setDescription("Individual user settings and preferences.");

View File

@@ -42,15 +42,18 @@ import org.eclipse.jgit.transport.RefSpec;
public class Schema_120 extends SchemaVersion {
private final GitRepositoryManager mgr;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
Schema_120(
Provider<Schema_119> prior,
GitRepositoryManager mgr,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.mgr = mgr;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -64,7 +67,7 @@ public class Schema_120 extends SchemaVersion {
md.getCommitBuilder().setAuthor(serverUser);
md.getCommitBuilder().setCommitter(serverUser);
md.setMessage("Added superproject subscription during upgrade");
ProjectConfig pc = ProjectConfig.read(md);
ProjectConfig pc = projectConfigFactory.read(md);
SubscribeSection s = null;
for (SubscribeSection s1 : pc.getSubscribeSections(subbranch)) {

View File

@@ -57,6 +57,7 @@ public class Schema_125 extends SchemaVersion {
private final AllUsersName allUsersName;
private final AllProjectsName allProjectsName;
private final SystemGroupBackend systemGroupBackend;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -66,12 +67,14 @@ public class Schema_125 extends SchemaVersion {
AllUsersName allUsersName,
AllProjectsName allProjectsName,
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allUsersName = allUsersName;
this.allProjectsName = allProjectsName;
this.systemGroupBackend = systemGroupBackend;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -79,7 +82,7 @@ public class Schema_125 extends SchemaVersion {
protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException {
try (Repository git = repoManager.openRepository(allUsersName);
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, allUsersName, git)) {
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
config
.getAccessSection(RefNames.REFS_USERS + "*", true)
@@ -114,7 +117,7 @@ public class Schema_125 extends SchemaVersion {
while (parent != null) {
try (Repository git = repoManager.openRepository(parent);
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, parent, git)) {
ProjectConfig parentConfig = ProjectConfig.read(md);
ProjectConfig parentConfig = projectConfigFactory.read(md);
for (LabelType lt : parentConfig.getLabelSections().values()) {
if (!labelTypes.containsKey(lt.getName())) {
labelTypes.put(lt.getName(), lt);

View File

@@ -44,6 +44,7 @@ public class Schema_126 extends SchemaVersion {
private final GitRepositoryManager repoManager;
private final AllUsersName allUsersName;
private final SystemGroupBackend systemGroupBackend;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -52,11 +53,13 @@ public class Schema_126 extends SchemaVersion {
GitRepositoryManager repoManager,
AllUsersName allUsersName,
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allUsersName = allUsersName;
this.systemGroupBackend = systemGroupBackend;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -64,7 +67,7 @@ public class Schema_126 extends SchemaVersion {
protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException {
try (Repository git = repoManager.openRepository(allUsersName);
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, allUsersName, git)) {
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
String refsUsersShardedId = RefNames.REFS_USERS + "${" + RefPattern.USERID_SHARDED + "}";
config.remove(config.getAccessSection(refsUsersShardedId));

View File

@@ -42,6 +42,7 @@ public class Schema_128 extends SchemaVersion {
private final GitRepositoryManager repoManager;
private final AllProjectsName allProjectsName;
private final SystemGroupBackend systemGroupBackend;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -50,11 +51,13 @@ public class Schema_128 extends SchemaVersion {
GitRepositoryManager repoManager,
AllProjectsName allProjectsName,
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allProjectsName = allProjectsName;
this.systemGroupBackend = systemGroupBackend;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -63,7 +66,7 @@ public class Schema_128 extends SchemaVersion {
try (Repository git = repoManager.openRepository(allProjectsName);
MetaDataUpdate md =
new MetaDataUpdate(GitReferenceUpdated.DISABLED, allProjectsName, git)) {
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
GroupReference registered = systemGroupBackend.getGroup(REGISTERED_USERS);
AccessSection refsFor = config.getAccessSection("refs/for/*", true);

View File

@@ -38,15 +38,18 @@ public class Schema_131 extends SchemaVersion {
"Rename 'Push Annotated/Signed Tag' permission to 'Create Annotated/Signed Tag'";
private final GitRepositoryManager repoManager;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
Schema_131(
Provider<Schema_130> prior,
GitRepositoryManager repoManager,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -58,7 +61,7 @@ public class Schema_131 extends SchemaVersion {
for (Project.NameKey projectName : repoList) {
try (Repository git = repoManager.openRepository(projectName);
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, projectName, git)) {
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
if (config.hasLegacyPermissions()) {
md.getCommitBuilder().setAuthor(serverUser);
md.getCommitBuilder().setCommitter(serverUser);

View File

@@ -48,6 +48,7 @@ public class Schema_135 extends SchemaVersion {
private final GitRepositoryManager repoManager;
private final AllProjectsName allProjectsName;
private final SystemGroupBackend systemGroupBackend;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -56,11 +57,13 @@ public class Schema_135 extends SchemaVersion {
GitRepositoryManager repoManager,
AllProjectsName allProjectsName,
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allProjectsName = allProjectsName;
this.systemGroupBackend = systemGroupBackend;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -69,7 +72,7 @@ public class Schema_135 extends SchemaVersion {
try (Repository git = repoManager.openRepository(allProjectsName);
MetaDataUpdate md =
new MetaDataUpdate(GitReferenceUpdated.DISABLED, allProjectsName, git)) {
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
AccessSection meta = config.getAccessSection(RefNames.REFS_CONFIG, true);
Permission createRefsMetaConfigPermission = meta.getPermission(Permission.CREATE, true);

View File

@@ -34,6 +34,7 @@ public class Schema_162 extends SchemaVersion {
private final GitRepositoryManager repoManager;
private final AllProjectsName allProjectsName;
private final AllUsersName allUsersName;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -42,11 +43,13 @@ public class Schema_162 extends SchemaVersion {
GitRepositoryManager repoManager,
AllProjectsName allProjectsName,
AllUsersName allUsersName,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allProjectsName = allProjectsName;
this.allUsersName = allUsersName;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -54,7 +57,7 @@ public class Schema_162 extends SchemaVersion {
protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException {
try (Repository git = repoManager.openRepository(allUsersName);
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, allUsersName, git)) {
ProjectConfig cfg = ProjectConfig.read(md);
ProjectConfig cfg = projectConfigFactory.read(md);
if (allProjectsName.equals(cfg.getProject().getParent(allProjectsName))) {
return;
}

View File

@@ -44,6 +44,7 @@ public class Schema_164 extends SchemaVersion {
private final GitRepositoryManager repoManager;
private final AllUsersName allUsersName;
private final SystemGroupBackend systemGroupBackend;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -52,11 +53,13 @@ public class Schema_164 extends SchemaVersion {
GitRepositoryManager repoManager,
AllUsersName allUsersName,
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allUsersName = allUsersName;
this.systemGroupBackend = systemGroupBackend;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -68,7 +71,7 @@ public class Schema_164 extends SchemaVersion {
md.getCommitBuilder().setCommitter(serverUser);
md.setMessage(COMMIT_MSG);
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
AccessSection groups = config.getAccessSection(RefNames.REFS_GROUPS + "*", true);
grant(
config,

View File

@@ -48,6 +48,7 @@ public class Schema_165 extends SchemaVersion {
private final GitRepositoryManager repoManager;
private final AllUsersName allUsersName;
private final SystemGroupBackend systemGroupBackend;
private final ProjectConfig.Factory projectConfigFactory;
private final PersonIdent serverUser;
@Inject
@@ -56,11 +57,13 @@ public class Schema_165 extends SchemaVersion {
GitRepositoryManager repoManager,
AllUsersName allUsersName,
SystemGroupBackend systemGroupBackend,
ProjectConfig.Factory projectConfigFactory,
@GerritPersonIdent PersonIdent serverUser) {
super(prior);
this.repoManager = repoManager;
this.allUsersName = allUsersName;
this.systemGroupBackend = systemGroupBackend;
this.projectConfigFactory = projectConfigFactory;
this.serverUser = serverUser;
}
@@ -68,7 +71,7 @@ public class Schema_165 extends SchemaVersion {
protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException {
try (Repository git = repoManager.openRepository(allUsersName);
MetaDataUpdate md = new MetaDataUpdate(GitReferenceUpdated.DISABLED, allUsersName, git)) {
ProjectConfig config = ProjectConfig.read(md);
ProjectConfig config = projectConfigFactory.read(md);
Optional<Permission> permission = findDefaultPermission(config);
if (!permission.isPresent()) {
// the default permission was not found, hence it cannot be fixed