From 3b68afa0caf9afbffe0d2584fa0000a9c7c3c0ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C5=A1a=20=C5=BDivkov?= Date: Wed, 11 Nov 2015 10:33:41 -0800 Subject: [PATCH] Add AccountInfo to the GitReferenceUpdatedListener.Event Change-Id: I19d27885a5c75c7e22031e3f0e80fff33b20d7f6 --- gerrit-extension-api/BUCK | 3 + .../events/GitReferenceUpdatedListener.java | 6 + .../rpc/project/ChangeProjectAccess.java | 2 +- .../gerrit/pgm/util/BatchProgramModule.java | 4 + .../server/extensions/events/EventUtil.java | 45 +++++++ .../events/GitReferenceUpdated.java | 124 +++++++++++++----- .../google/gerrit/server/git/BatchUpdate.java | 6 +- .../gerrit/server/git/MetaDataUpdate.java | 11 +- .../gerrit/server/git/NotesBranchUtil.java | 3 +- .../gerrit/server/git/ReceiveCommits.java | 4 +- .../google/gerrit/server/git/SubmoduleOp.java | 2 +- .../gerrit/server/project/CreateBranch.java | 4 +- .../gerrit/server/project/CreateProject.java | 3 +- .../gerrit/server/project/DeleteBranch.java | 3 +- .../gerrit/server/project/DeleteBranches.java | 3 +- .../gerrit/server/project/PutConfig.java | 2 +- .../gerrit/server/project/PutDescription.java | 2 +- 17 files changed, 180 insertions(+), 47 deletions(-) create mode 100644 gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/EventUtil.java diff --git a/gerrit-extension-api/BUCK b/gerrit-extension-api/BUCK index 67bfdc101e..79336650db 100644 --- a/gerrit-extension-api/BUCK +++ b/gerrit-extension-api/BUCK @@ -38,6 +38,9 @@ java_library( java_library( name = 'api', srcs = glob([SRC + '**/*.java']), + deps = [ + '//gerrit-common:annotations', + ], provided_deps = [ '//lib/guice:guice', '//lib/guice:guice-assistedinject', diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/GitReferenceUpdatedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/GitReferenceUpdatedListener.java index a838bafb43..c20c9e0f12 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/GitReferenceUpdatedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/GitReferenceUpdatedListener.java @@ -14,7 +14,9 @@ package com.google.gerrit.extensions.events; +import com.google.gerrit.common.Nullable; import com.google.gerrit.extensions.annotations.ExtensionPoint; +import com.google.gerrit.extensions.common.AccountInfo; /** Notified when one or more references are modified. */ @ExtensionPoint @@ -28,6 +30,10 @@ public interface GitReferenceUpdatedListener { boolean isCreate(); boolean isDelete(); boolean isNonFastForward(); + /** + * The updater, could be null if it's the server. + */ + @Nullable AccountInfo getUpdater(); } void onGitReferenceUpdated(Event event); diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java index 223629d3fd..da19b5e245 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/project/ChangeProjectAccess.java @@ -87,7 +87,7 @@ class ChangeProjectAccess extends ProjectAccessHandler { RevCommit commit = config.commit(md); gitRefUpdated.fire(config.getProject().getNameKey(), RefNames.REFS_CONFIG, - base, commit.getId()); + base, commit.getId(), user.asIdentifiedUser().getAccount()); hooks.doRefUpdatedHook( new Branch.NameKey(config.getProject().getNameKey(), RefNames.REFS_CONFIG), base, commit.getId(), user.asIdentifiedUser().getAccount()); diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/BatchProgramModule.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/BatchProgramModule.java index d701afa160..be061c725e 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/BatchProgramModule.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/BatchProgramModule.java @@ -33,6 +33,7 @@ import com.google.gerrit.server.account.GroupIncludeCacheImpl; import com.google.gerrit.server.account.Realm; import com.google.gerrit.server.cache.CacheRemovalListener; import com.google.gerrit.server.cache.h2.DefaultCacheFactory; +import com.google.gerrit.server.change.ChangeJson; import com.google.gerrit.server.change.ChangeKindCacheImpl; import com.google.gerrit.server.change.MergeabilityCacheImpl; import com.google.gerrit.server.change.PatchSetInserter; @@ -139,5 +140,8 @@ public class BatchProgramModule extends FactoryModule { factory(CapabilityControl.Factory.class); factory(ChangeData.Factory.class); factory(ProjectState.Factory.class); + + bind(ChangeJson.Factory.class).toProvider( + Providers.of(null)); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/EventUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/EventUtil.java new file mode 100644 index 0000000000..cb30eea6cb --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/EventUtil.java @@ -0,0 +1,45 @@ +// Copyright (C) 2015 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.server.extensions.events; + +import com.google.gerrit.extensions.common.AccountInfo; +import com.google.gerrit.reviewdb.client.Account; +import com.google.gerrit.server.account.AccountCache; +import com.google.inject.Inject; + +public class EventUtil { + + private final AccountCache accountCache; + + @Inject + EventUtil(AccountCache accountCache) { + this.accountCache = accountCache; + } + + public AccountInfo accountInfo(Account a) { + if (a == null || a.getId() == null) { + return null; + } + AccountInfo ai = new AccountInfo(a.getId().get()); + ai.email = a.getPreferredEmail(); + ai.name = a.getFullName(); + ai.username = a.getUserName(); + return ai; + } + + public AccountInfo accountInfo(Account.Id accountId) { + return accountInfo(accountCache.get(accountId).getAccount()); + } +} diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/GitReferenceUpdated.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/GitReferenceUpdated.java index 7eef0ee937..6eac07c5f5 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/GitReferenceUpdated.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/GitReferenceUpdated.java @@ -14,8 +14,10 @@ package com.google.gerrit.server.extensions.events; +import com.google.gerrit.extensions.common.AccountInfo; import com.google.gerrit.extensions.events.GitReferenceUpdatedListener; import com.google.gerrit.extensions.registration.DynamicSet; +import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Project; import com.google.inject.Inject; @@ -26,42 +28,111 @@ import org.eclipse.jgit.transport.ReceiveCommand; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collections; - public class GitReferenceUpdated { private static final Logger log = LoggerFactory .getLogger(GitReferenceUpdated.class); - public static final GitReferenceUpdated DISABLED = new GitReferenceUpdated( - Collections. emptyList()); + public static final GitReferenceUpdated DISABLED = new GitReferenceUpdated() { + @Override + public void fire(Project.NameKey project, RefUpdate refUpdate, + ReceiveCommand.Type type, Account updater) {} + + @Override + public void fire(Project.NameKey project, RefUpdate refUpdate, + ReceiveCommand.Type type, Account.Id updater) {} + + @Override + public void fire(Project.NameKey project, RefUpdate refUpdate, + Account updater) {} + + @Override + public void fire(Project.NameKey project, RefUpdate refUpdate, + AccountInfo updater) {} + + @Override + public void fire(Project.NameKey project, String ref, ObjectId oldObjectId, + ObjectId newObjectId, Account updater) {} + + @Override + public void fire(Project.NameKey project, ReceiveCommand cmd, + Account updater) {} + + @Override + public void fire(Project.NameKey project, BatchRefUpdate batchRefUpdate, + Account.Id updater) {} + }; private final Iterable listeners; + private final EventUtil util; @Inject - GitReferenceUpdated(DynamicSet listeners) { + GitReferenceUpdated(DynamicSet listeners, + EventUtil util) { this.listeners = listeners; + this.util = util; } - GitReferenceUpdated(Iterable listeners) { - this.listeners = listeners; + private GitReferenceUpdated() { + this.listeners = null; + this.util = null; } public void fire(Project.NameKey project, RefUpdate refUpdate, - ReceiveCommand.Type type) { + ReceiveCommand.Type type, Account updater) { fire(project, refUpdate.getName(), refUpdate.getOldObjectId(), - refUpdate.getNewObjectId(), type); + refUpdate.getNewObjectId(), type, util.accountInfo(updater)); } - public void fire(Project.NameKey project, RefUpdate refUpdate) { + public void fire(Project.NameKey project, RefUpdate refUpdate, + ReceiveCommand.Type type, Account.Id updater) { fire(project, refUpdate.getName(), refUpdate.getOldObjectId(), - refUpdate.getNewObjectId(), ReceiveCommand.Type.UPDATE); + refUpdate.getNewObjectId(), type, util.accountInfo(updater)); + } + + public void fire(Project.NameKey project, RefUpdate refUpdate, + Account updater) { + fire(project, refUpdate.getName(), refUpdate.getOldObjectId(), + refUpdate.getNewObjectId(), ReceiveCommand.Type.UPDATE, + util.accountInfo(updater)); + } + + public void fire(Project.NameKey project, RefUpdate refUpdate, + AccountInfo updater) { + fire(project, refUpdate.getName(), refUpdate.getOldObjectId(), + refUpdate.getNewObjectId(), ReceiveCommand.Type.UPDATE, updater); } public void fire(Project.NameKey project, String ref, ObjectId oldObjectId, - ObjectId newObjectId, ReceiveCommand.Type type) { + ObjectId newObjectId, Account updater) { + fire(project, ref, oldObjectId, newObjectId, ReceiveCommand.Type.UPDATE, + util.accountInfo(updater)); + } + + public void fire(Project.NameKey project, ReceiveCommand cmd, Account updater) { + fire(project, cmd.getRefName(), cmd.getOldId(), cmd.getNewId(), cmd.getType(), + util.accountInfo(updater)); + } + + public void fire(Project.NameKey project, BatchRefUpdate batchRefUpdate, + Account.Id updater) { + for (ReceiveCommand cmd : batchRefUpdate.getCommands()) { + if (cmd.getResult() == ReceiveCommand.Result.OK) { + fire(project, cmd, util.accountInfo(updater)); + } + } + } + + private void fire(Project.NameKey project, ReceiveCommand cmd, + AccountInfo updater) { + fire(project, cmd.getRefName(), cmd.getOldId(), cmd.getNewId(), cmd.getType(), + updater); + } + + private void fire(Project.NameKey project, String ref, ObjectId oldObjectId, + ObjectId newObjectId, ReceiveCommand.Type type, AccountInfo updater) { ObjectId o = oldObjectId != null ? oldObjectId : ObjectId.zeroId(); ObjectId n = newObjectId != null ? newObjectId : ObjectId.zeroId(); - Event event = new Event(project, ref, o.name(), n.name(), type); + Event event = new Event(project, ref, o.name(), n.name(), type, updater); for (GitReferenceUpdatedListener l : listeners) { try { l.onGitReferenceUpdated(event); @@ -71,38 +142,24 @@ public class GitReferenceUpdated { } } - public void fire(Project.NameKey project, String ref, ObjectId oldObjectId, - ObjectId newObjectId) { - fire(project, ref, oldObjectId, newObjectId, ReceiveCommand.Type.UPDATE); - } - - public void fire(Project.NameKey project, ReceiveCommand cmd) { - fire(project, cmd.getRefName(), cmd.getOldId(), cmd.getNewId(), cmd.getType()); - } - - public void fire(Project.NameKey project, BatchRefUpdate batchRefUpdate) { - for (ReceiveCommand cmd : batchRefUpdate.getCommands()) { - if (cmd.getResult() == ReceiveCommand.Result.OK) { - fire(project, cmd); - } - } - } - private static class Event implements GitReferenceUpdatedListener.Event { private final String projectName; private final String ref; private final String oldObjectId; private final String newObjectId; private final ReceiveCommand.Type type; + private final AccountInfo updater; Event(Project.NameKey project, String ref, String oldObjectId, String newObjectId, - ReceiveCommand.Type type) { + ReceiveCommand.Type type, + AccountInfo updater) { this.projectName = project.get(); this.ref = ref; this.oldObjectId = oldObjectId; this.newObjectId = newObjectId; this.type = type; + this.updater = updater; } @Override @@ -140,6 +197,11 @@ public class GitReferenceUpdated { return type == ReceiveCommand.Type.UPDATE_NONFASTFORWARD; } + @Override + public AccountInfo getUpdater() { + return updater; + } + @Override public String toString() { return String.format("%s[%s,%s: %s -> %s]", getClass().getSimpleName(), diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java index 982777db5b..c1ff470a17 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java @@ -26,6 +26,7 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestApiException; +import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; @@ -350,7 +351,10 @@ public class BatchUpdate implements AutoCloseable { // callers may assume a patch set ref being created means the change // was created, or a branch advancing meaning some changes were // closed. - u.gitRefUpdated.fire(u.project, u.batchRefUpdate); + u.gitRefUpdated.fire( + u.project, + u.batchRefUpdate, + u.getUser().isIdentifiedUser() ? u.getUser().getAccountId() : null); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java index 540d47956c..477da3fc81 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MetaDataUpdate.java @@ -125,8 +125,8 @@ public class MetaDataUpdate implements AutoCloseable { public MetaDataUpdate create(Project.NameKey name, Repository repository, IdentifiedUser user, BatchRefUpdate batch) { MetaDataUpdate md = factory.create(name, repository, batch); - md.getCommitBuilder().setAuthor(createPersonIdent(user)); md.getCommitBuilder().setCommitter(serverIdent); + md.setAuthor(user); return md; } @@ -176,6 +176,7 @@ public class MetaDataUpdate implements AutoCloseable { private final CommitBuilder commit; private boolean allowEmpty; private boolean insertChangeId; + private IdentifiedUser author; @AssistedInject public MetaDataUpdate(GitReferenceUpdated gitRefUpdated, @@ -198,8 +199,9 @@ public class MetaDataUpdate implements AutoCloseable { getCommitBuilder().setMessage(message); } - public void setAuthor(IdentifiedUser user) { - getCommitBuilder().setAuthor(user.newCommitterIdent( + public void setAuthor(IdentifiedUser author) { + this.author = author; + getCommitBuilder().setAuthor(author.newCommitterIdent( getCommitBuilder().getCommitter().getWhen(), getCommitBuilder().getCommitter().getTimeZone())); } @@ -244,6 +246,7 @@ public class MetaDataUpdate implements AutoCloseable { } void fireGitRefUpdatedEvent(RefUpdate ru) { - gitRefUpdated.fire(projectName, ru); + gitRefUpdated.fire( + projectName, ru, author == null ? null : author.getAccount()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/NotesBranchUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/NotesBranchUtil.java index 2c5e512f81..d7424c6a7e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/NotesBranchUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/NotesBranchUtil.java @@ -14,6 +14,7 @@ package com.google.gerrit.server.git; +import com.google.gerrit.extensions.common.AccountInfo; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.extensions.events.GitReferenceUpdated; @@ -261,7 +262,7 @@ public class NotesBranchUtil { throw new IOException("Couldn't update " + notesBranch + ". " + result.name()); } else { - gitRefUpdated.fire(project, refUpdate); + gitRefUpdated.fire(project, refUpdate, (AccountInfo) null); break; } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index 8bf0070b5e..60d939ca4a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -667,7 +667,7 @@ public class ReceiveCommits { // We only fire gitRefUpdated for direct refs updates. // Events for change refs are fired when they are created. // - gitRefUpdated.fire(project.getNameKey(), c); + gitRefUpdated.fire(project.getNameKey(), c, user.getAccount()); hooks.doRefUpdatedHook( new Branch.NameKey(project.getNameKey(), c.getRefName()), c.getOldId(), @@ -2180,7 +2180,7 @@ public class ReceiveCommits { PatchSet newPatchSet = replaceOp.getPatchSet(); gitRefUpdated.fire(project.getNameKey(), newPatchSet.getRefName(), - ObjectId.zeroId(), newCommit); + ObjectId.zeroId(), newCommit, user.getAccount()); if (magicBranch != null && magicBranch.submit) { submit(changeCtl, newPatchSet); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java index 63c71a16af..3ecc1ef1ae 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java @@ -324,7 +324,7 @@ public class SubmoduleOp { switch (rfu.update()) { case NEW: case FAST_FORWARD: - gitRefUpdated.fire(subscriber.getParentKey(), rfu); + gitRefUpdated.fire(subscriber.getParentKey(), rfu, account); changeHooks.doRefUpdatedHook(subscriber, rfu, account); // TODO since this is performed "in the background" no mail will be // sent to inform users about the updated branch diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java index bc4d8f3801..e41acbe272 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java @@ -148,7 +148,9 @@ public class CreateBranch implements RestModifyView { case FAST_FORWARD: case NEW: case NO_CHANGE: - referenceUpdated.fire(name.getParentKey(), u, ReceiveCommand.Type.CREATE); + referenceUpdated.fire( + name.getParentKey(), u, ReceiveCommand.Type.CREATE, + identifiedUser.get().getAccount()); hooks.doRefUpdatedHook(name, u, identifiedUser.get().getAccount()); break; case LOCK_FAILURE: diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java index a73ed0ec29..ecc618e0ac 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java @@ -370,7 +370,8 @@ public class CreateProject implements RestModifyView { case NO_CHANGE: case FAST_FORWARD: case FORCED: - referenceUpdated.fire(rsrc.getNameKey(), u, ReceiveCommand.Type.DELETE); + referenceUpdated.fire(rsrc.getNameKey(), u, ReceiveCommand.Type.DELETE, + identifiedUser.get().getAccount()); hooks.doRefUpdatedHook(rsrc.getBranchKey(), u, identifiedUser.get().getAccount()); break; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranches.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranches.java index b851f9e1a6..daecc1d0cf 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranches.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranches.java @@ -162,7 +162,8 @@ class DeleteBranches implements RestModifyView { } private void postDeletion(ProjectResource project, ReceiveCommand cmd) { - referenceUpdated.fire(project.getNameKey(), cmd); + referenceUpdated.fire(project.getNameKey(), cmd, + identifiedUser.get().getAccount()); Branch.NameKey branchKey = new Branch.NameKey(project.getNameKey(), cmd.getRefName()); hooks.doRefUpdatedHook(branchKey, cmd.getOldId(), cmd.getNewId(), diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java index 86f98ffd4f..4b0ecf0d0c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java @@ -196,7 +196,7 @@ public class PutConfig implements RestModifyView { // Only fire hook if project was actually changed. if (!Objects.equals(baseRev, commitRev)) { gitRefUpdated.fire(projectName, RefNames.REFS_CONFIG, - baseRev, commitRev); + baseRev, commitRev, user.get().asIdentifiedUser().getAccount()); hooks.doRefUpdatedHook( new Branch.NameKey(projectName, RefNames.REFS_CONFIG), baseRev, commitRev, user.get().asIdentifiedUser().getAccount()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java index 7cf426dad2..b136821bbe 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java @@ -94,7 +94,7 @@ public class PutDescription implements RestModifyView