diff options
author | David Ostrovsky <david@ostrovsky.org> | 2018-11-27 06:50:32 +0100 |
---|---|---|
committer | David Ostrovsky <david@ostrovsky.org> | 2021-02-09 19:57:30 +0100 |
commit | a6452e1b1fc0a1d0153f6221c138613af689727f (patch) | |
tree | 0c01bd97da8cf3d6153511081fd269d5928b1483 | |
parent | 1965e0b3dd5c843369833ce530fa92089a755491 (diff) |
GroupsOnInit: Remove unused dependency on ReviewDb
Change-Id: Icd472f927db0c7231549fb4eead4afe9fd54b9fa
-rw-r--r-- | java/com/google/gerrit/pgm/init/GroupsOnInit.java | 24 | ||||
-rw-r--r-- | java/com/google/gerrit/pgm/init/InitAdminUser.java | 111 |
2 files changed, 57 insertions, 78 deletions
diff --git a/java/com/google/gerrit/pgm/init/GroupsOnInit.java b/java/com/google/gerrit/pgm/init/GroupsOnInit.java index 8e06aa16e2..584d8af54a 100644 --- a/java/com/google/gerrit/pgm/init/GroupsOnInit.java +++ b/java/com/google/gerrit/pgm/init/GroupsOnInit.java @@ -25,7 +25,6 @@ import com.google.gerrit.pgm.init.api.AllUsersNameOnInitProvider; import com.google.gerrit.pgm.init.api.InitFlags; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.GerritPersonIdentProvider; import com.google.gerrit.server.config.AllUsersName; import com.google.gerrit.server.config.GerritServerIdProvider; @@ -37,7 +36,6 @@ import com.google.gerrit.server.group.db.AuditLogFormatter; import com.google.gerrit.server.group.db.GroupConfig; import com.google.gerrit.server.group.db.GroupNameNotes; import com.google.gerrit.server.group.db.InternalGroupUpdate; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import java.io.File; import java.io.IOException; @@ -54,9 +52,8 @@ import org.eclipse.jgit.util.FS; /** * A database accessor for calls related to groups. * - * <p>All calls which read or write group related details to the database <strong>during - * init</strong> (either ReviewDb or NoteDb) are gathered here. For non-init cases, use {@code - * Groups} or {@code GroupsUpdate} instead. + * <p>All calls which read or write group related details to the NoteDb <strong>during init</strong> + * are gathered here. For non-init cases, use {@code Groups} or {@code GroupsUpdate} instead. * * <p>All methods of this class refer to <em>internal</em> groups. */ @@ -76,16 +73,14 @@ public class GroupsOnInit { /** * Returns the {@code AccountGroup} for the specified {@code GroupReference}. * - * @param db the {@code ReviewDb} instance to use for lookups * @param groupReference the {@code GroupReference} of the group * @return the {@code InternalGroup} represented by the {@code GroupReference} - * @throws OrmException if the group couldn't be retrieved from ReviewDb * @throws IOException if an error occurs while reading from NoteDb * @throws ConfigInvalidException if the data in NoteDb is in an incorrect format * @throws NoSuchGroupException if a group with such a name doesn't exist */ - public InternalGroup getExistingGroup(ReviewDb db, GroupReference groupReference) - throws OrmException, NoSuchGroupException, IOException, ConfigInvalidException { + public InternalGroup getExistingGroup(GroupReference groupReference) + throws NoSuchGroupException, IOException, ConfigInvalidException { File allUsersRepoPath = getPathToAllUsersRepository(); if (allUsersRepoPath != null) { try (Repository allUsersRepo = new FileRepository(allUsersRepoPath)) { @@ -102,14 +97,11 @@ public class GroupsOnInit { /** * Returns {@code GroupReference}s for all internal groups. * - * @param db the {@code ReviewDb} instance to use for lookups * @return a stream of the {@code GroupReference}s of all internal groups - * @throws OrmException if an error occurs while reading from ReviewDb * @throws IOException if an error occurs while reading from NoteDb * @throws ConfigInvalidException if the data in NoteDb is in an incorrect format */ - public Stream<GroupReference> getAllGroupReferences(ReviewDb db) - throws OrmException, IOException, ConfigInvalidException { + public Stream<GroupReference> getAllGroupReferences() throws IOException, ConfigInvalidException { File allUsersRepoPath = getPathToAllUsersRepository(); if (allUsersRepoPath != null) { try (Repository allUsersRepo = new FileRepository(allUsersRepoPath)) { @@ -126,14 +118,12 @@ public class GroupsOnInit { * <p><strong>Note</strong>: This method doesn't check whether the account exists! It also doesn't * update the account index! * - * @param db the {@code ReviewDb} instance to update * @param groupUuid the UUID of the group * @param account the account to add - * @throws OrmException if an error occurs while reading/writing from/to ReviewDb * @throws NoSuchGroupException if the specified group doesn't exist */ - public void addGroupMember(ReviewDb db, AccountGroup.UUID groupUuid, Account account) - throws OrmException, NoSuchGroupException, IOException, ConfigInvalidException { + public void addGroupMember(AccountGroup.UUID groupUuid, Account account) + throws NoSuchGroupException, IOException, ConfigInvalidException { File allUsersRepoPath = getPathToAllUsersRepository(); if (allUsersRepoPath != null) { try (Repository repository = new FileRepository(allUsersRepoPath)) { diff --git a/java/com/google/gerrit/pgm/init/InitAdminUser.java b/java/com/google/gerrit/pgm/init/InitAdminUser.java index 64827fe003..f19cf39dc1 100644 --- a/java/com/google/gerrit/pgm/init/InitAdminUser.java +++ b/java/com/google/gerrit/pgm/init/InitAdminUser.java @@ -26,7 +26,6 @@ import com.google.gerrit.pgm.init.api.InitFlags; import com.google.gerrit.pgm.init.api.InitStep; import com.google.gerrit.pgm.init.api.SequencesOnInit; import com.google.gerrit.reviewdb.client.Account; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.account.AccountSshKey; import com.google.gerrit.server.account.AccountState; import com.google.gerrit.server.account.externalids.ExternalId; @@ -36,9 +35,7 @@ import com.google.gerrit.server.index.account.AccountIndex; import com.google.gerrit.server.index.account.AccountIndexCollection; import com.google.gerrit.server.index.group.GroupIndex; import com.google.gerrit.server.index.group.GroupIndexCollection; -import com.google.gerrit.server.schema.ReviewDbFactory; import com.google.gerrit.server.util.time.TimeUtil; -import com.google.gwtorm.server.SchemaFactory; import com.google.inject.Inject; import java.io.IOException; import java.nio.file.Files; @@ -58,7 +55,6 @@ public class InitAdminUser implements InitStep { private final ExternalIdsOnInit externalIds; private final SequencesOnInit sequencesOnInit; private final GroupsOnInit groupsOnInit; - private SchemaFactory<ReviewDb> dbFactory; private AccountIndexCollection accountIndexCollection; private GroupIndexCollection groupIndexCollection; @@ -85,11 +81,6 @@ public class InitAdminUser implements InitStep { @Override public void run() {} - @Inject(optional = true) - void set(@ReviewDbFactory SchemaFactory<ReviewDb> dbProvider) { - this.dbFactory = dbProvider; - } - @Inject void set(AccountIndexCollection accountIndexCollection) { this.accountIndexCollection = accountIndexCollection; @@ -107,58 +98,56 @@ public class InitAdminUser implements InitStep { return; } - try (ReviewDb db = dbFactory.open()) { - if (!accounts.hasAnyAccount()) { - ui.header("Gerrit Administrator"); - if (ui.yesno(true, "Create administrator user")) { - Account.Id id = new Account.Id(sequencesOnInit.nextAccountId()); - String username = ui.readString("admin", "username"); - String name = ui.readString("Administrator", "name"); - String httpPassword = ui.readString("secret", "HTTP password"); - AccountSshKey sshKey = readSshKey(id); - String email = readEmail(sshKey); - - List<ExternalId> extIds = new ArrayList<>(2); - extIds.add(ExternalId.createUsername(username, id, httpPassword)); - - if (email != null) { - extIds.add(ExternalId.createEmail(id, email)); - } - externalIds.insert("Add external IDs for initial admin user", extIds); - - Account a = new Account(id, TimeUtil.nowTs()); - a.setFullName(name); - a.setPreferredEmail(email); - accounts.insert(a); - - // Only two groups should exist at this point in time and hence iterating over all of them - // is cheap. - Optional<GroupReference> adminGroupReference = - groupsOnInit - .getAllGroupReferences(db) - .filter(group -> group.getName().equals("Administrators")) - .findAny(); - if (!adminGroupReference.isPresent()) { - throw new NoSuchGroupException("Administrators"); - } - GroupReference adminGroup = adminGroupReference.get(); - groupsOnInit.addGroupMember(db, adminGroup.getUUID(), a); - - if (sshKey != null) { - VersionedAuthorizedKeysOnInit authorizedKeys = authorizedKeysFactory.create(id).load(); - authorizedKeys.addKey(sshKey.sshPublicKey()); - authorizedKeys.save("Add SSH key for initial admin user\n"); - } - - AccountState as = AccountState.forAccount(new AllUsersName(allUsers.get()), a, extIds); - for (AccountIndex accountIndex : accountIndexCollection.getWriteIndexes()) { - accountIndex.replace(as); - } - - InternalGroup adminInternalGroup = groupsOnInit.getExistingGroup(db, adminGroup); - for (GroupIndex groupIndex : groupIndexCollection.getWriteIndexes()) { - groupIndex.replace(adminInternalGroup); - } + if (!accounts.hasAnyAccount()) { + ui.header("Gerrit Administrator"); + if (ui.yesno(true, "Create administrator user")) { + Account.Id id = new Account.Id(sequencesOnInit.nextAccountId()); + String username = ui.readString("admin", "username"); + String name = ui.readString("Administrator", "name"); + String httpPassword = ui.readString("secret", "HTTP password"); + AccountSshKey sshKey = readSshKey(id); + String email = readEmail(sshKey); + + List<ExternalId> extIds = new ArrayList<>(2); + extIds.add(ExternalId.createUsername(username, id, httpPassword)); + + if (email != null) { + extIds.add(ExternalId.createEmail(id, email)); + } + externalIds.insert("Add external IDs for initial admin user", extIds); + + Account a = new Account(id, TimeUtil.nowTs()); + a.setFullName(name); + a.setPreferredEmail(email); + accounts.insert(a); + + // Only two groups should exist at this point in time and hence iterating over all of them + // is cheap. + Optional<GroupReference> adminGroupReference = + groupsOnInit + .getAllGroupReferences() + .filter(group -> group.getName().equals("Administrators")) + .findAny(); + if (!adminGroupReference.isPresent()) { + throw new NoSuchGroupException("Administrators"); + } + GroupReference adminGroup = adminGroupReference.get(); + groupsOnInit.addGroupMember(adminGroup.getUUID(), a); + + if (sshKey != null) { + VersionedAuthorizedKeysOnInit authorizedKeys = authorizedKeysFactory.create(id).load(); + authorizedKeys.addKey(sshKey.sshPublicKey()); + authorizedKeys.save("Add SSH key for initial admin user\n"); + } + + AccountState as = AccountState.forAccount(new AllUsersName(allUsers.get()), a, extIds); + for (AccountIndex accountIndex : accountIndexCollection.getWriteIndexes()) { + accountIndex.replace(as); + } + + InternalGroup adminInternalGroup = groupsOnInit.getExistingGroup(adminGroup); + for (GroupIndex groupIndex : groupIndexCollection.getWriteIndexes()) { + groupIndex.replace(adminInternalGroup); } } } |