in src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java [122:168]
private void updateWatchEntries(Project.NameKey newProjectKey)
throws IOException, ConfigInvalidException {
for (AccountState a : accountQueryProvider.get().byWatchedProject(oldProjectKey)) {
Account.Id accountId = a.account().id();
ImmutableMap<ProjectWatchKey, ImmutableSet<NotifyType>> projectWatches = a.projectWatches();
Map<ProjectWatchKey, Set<NotifyType>> newProjectWatches = new HashMap<>();
List<ProjectWatchKey> oldProjectWatches = new ArrayList<>();
for (ProjectWatchKey watchKey : a.projectWatches().keySet()) {
if (oldProjectKey.equals(watchKey.project())) {
newProjectWatches.put(
ProjectWatchKey.create(newProjectKey, watchKey.filter()),
projectWatches.get(watchKey));
oldProjectWatches.add(watchKey);
try {
accountsUpdateProvider
.get()
.update(
"Add watch entry",
accountId,
(accountState, update) ->
update.updateProjectWatches(newProjectWatches).build());
accountsUpdateProvider
.get()
.update(
"Remove watch entry",
accountId,
(accountState, update) ->
update.deleteProjectWatches(oldProjectWatches).build());
} catch (ConfigInvalidException e) {
log.error(
"Updating watch entry for user {} in project {} failed. Watch config found invalid.",
a.userName(),
newProjectKey.get(),
e);
throw e;
} catch (IOException e) {
log.error(
"Updating watch entry for user {} in project {} failed.",
a.userName(),
newProjectKey.get(),
e);
throw e;
}
}
}
}
}