Make hooks/events listen to the new API Events.
Create a ChangeHookApiListener to listen to the new API Events and forward these events to the old legacy ChangeHookRunner. This decouples the hooks and stream events from the internal events. This also decouples the ChangeHooks interface (and implementations) from all internal classes except for the new ChangeHookApiListener. This decoupling should now make it very easy to move all of these classes to plugins. Change-Id: I9153dca45727f1c7ea10a8d003e1acf2171b39ac
This commit is contained in:
committed by
David Pursehouse
parent
59cdd227a9
commit
d432c83a72
@@ -0,0 +1,349 @@
|
||||
// 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.common;
|
||||
|
||||
import static com.google.gerrit.reviewdb.client.RefNames.REFS_CHANGES;
|
||||
import static org.eclipse.jgit.lib.Constants.R_HEADS;
|
||||
|
||||
import com.google.gerrit.common.ChangeHookRunner.HookResult;
|
||||
import com.google.gerrit.extensions.common.AccountInfo;
|
||||
import com.google.gerrit.extensions.common.ApprovalInfo;
|
||||
import com.google.gerrit.extensions.common.ChangeInfo;
|
||||
import com.google.gerrit.extensions.common.RevisionInfo;
|
||||
import com.google.gerrit.extensions.events.AgreementSignupListener;
|
||||
import com.google.gerrit.extensions.events.ChangeAbandonedListener;
|
||||
import com.google.gerrit.extensions.events.ChangeMergedListener;
|
||||
import com.google.gerrit.extensions.events.ChangeRestoredListener;
|
||||
import com.google.gerrit.extensions.events.CommentAddedListener;
|
||||
import com.google.gerrit.extensions.events.DraftPublishedListener;
|
||||
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
|
||||
import com.google.gerrit.extensions.events.HashtagsEditedListener;
|
||||
import com.google.gerrit.extensions.events.NewProjectCreatedListener;
|
||||
import com.google.gerrit.extensions.events.ReviewerAddedListener;
|
||||
import com.google.gerrit.extensions.events.RevisionCreatedListener;
|
||||
import com.google.gerrit.extensions.events.TopicEditedListener;
|
||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Branch;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.PatchSetUtil;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.gerrit.server.account.AccountCache;
|
||||
import com.google.gerrit.server.events.CommitReceivedEvent;
|
||||
import com.google.gerrit.server.git.validators.CommitValidationListener;
|
||||
import com.google.gerrit.server.git.validators.CommitValidationMessage;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||
import com.google.gerrit.server.git.validators.CommitValidationException;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
@Singleton
|
||||
public class ChangeHookApiListener implements
|
||||
AgreementSignupListener,
|
||||
ChangeAbandonedListener,
|
||||
ChangeMergedListener,
|
||||
ChangeRestoredListener,
|
||||
CommentAddedListener,
|
||||
DraftPublishedListener,
|
||||
GitReferenceUpdatedListener,
|
||||
HashtagsEditedListener,
|
||||
NewProjectCreatedListener,
|
||||
ReviewerAddedListener,
|
||||
RevisionCreatedListener,
|
||||
TopicEditedListener {
|
||||
/** A logger for this class. */
|
||||
private static final Logger log =
|
||||
LoggerFactory.getLogger(ChangeHookApiListener.class);
|
||||
|
||||
public static class Module extends LifecycleModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
DynamicSet.bind(binder(), AgreementSignupListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), ChangeAbandonedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), ChangeMergedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), ChangeRestoredListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), CommentAddedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), DraftPublishedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), GitReferenceUpdatedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), HashtagsEditedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), NewProjectCreatedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), ReviewerAddedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), RevisionCreatedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), TopicEditedListener.class)
|
||||
.to(ChangeHookApiListener.class);
|
||||
DynamicSet.bind(binder(), CommitValidationListener.class)
|
||||
.to(ChangeHookValidator.class);
|
||||
}
|
||||
}
|
||||
|
||||
/** Reject commits that don't pass user-supplied ref-update hook. */
|
||||
public static class ChangeHookValidator implements
|
||||
CommitValidationListener {
|
||||
private final ChangeHooks hooks;
|
||||
|
||||
@Inject
|
||||
public ChangeHookValidator(ChangeHooks hooks) {
|
||||
this.hooks = hooks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CommitValidationMessage> onCommitReceived(
|
||||
CommitReceivedEvent receiveEvent) throws CommitValidationException {
|
||||
IdentifiedUser user = receiveEvent.user;
|
||||
String refname = receiveEvent.refName;
|
||||
ObjectId old = ObjectId.zeroId();
|
||||
if (receiveEvent.commit.getParentCount() > 0) {
|
||||
old = receiveEvent.commit.getParent(0);
|
||||
}
|
||||
|
||||
if (receiveEvent.command.getRefName().startsWith(REFS_CHANGES)) {
|
||||
/*
|
||||
* If the ref-update hook tries to distinguish behavior between pushes to
|
||||
* refs/heads/... and refs/for/..., make sure we send it the correct
|
||||
* refname.
|
||||
* Also, if this is targetting refs/for/, make sure we behave the same as
|
||||
* what a push to refs/for/ would behave; in particular, setting oldrev
|
||||
* to 0000000000000000000000000000000000000000.
|
||||
*/
|
||||
refname = refname.replace(R_HEADS, "refs/for/refs/heads/");
|
||||
old = ObjectId.zeroId();
|
||||
}
|
||||
HookResult result = hooks.doRefUpdateHook(receiveEvent.project, refname,
|
||||
user.getAccount(), old, receiveEvent.commit);
|
||||
if (result != null && result.getExitValue() != 0) {
|
||||
throw new CommitValidationException(result.toString().trim());
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
private final Provider<ReviewDb> db;
|
||||
private final AccountCache accounts;
|
||||
private final ChangeHooks hooks;
|
||||
private final PatchSetUtil psUtil;
|
||||
private final ChangeNotes.Factory changeNotesFactory;
|
||||
|
||||
@Inject
|
||||
public ChangeHookApiListener(
|
||||
Provider<ReviewDb> db,
|
||||
AccountCache accounts,
|
||||
ChangeHooks hooks,
|
||||
PatchSetUtil psUtil,
|
||||
ChangeNotes.Factory changeNotesFactory) {
|
||||
this.db = db;
|
||||
this.accounts = accounts;
|
||||
this.hooks = hooks;
|
||||
this.psUtil = psUtil;
|
||||
this.changeNotesFactory = changeNotesFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewProjectCreated(NewProjectCreatedListener.Event ev) {
|
||||
hooks.doProjectCreatedHook(new Project.NameKey(ev.getProjectName()),
|
||||
ev.getHeadName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRevisionCreated(RevisionCreatedListener.Event ev) {
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doPatchsetCreatedHook(notes.getChange(),
|
||||
getPatchSet(notes, ev.getRevision()), db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("PatchsetCreated hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDraftPublished(DraftPublishedListener.Event ev) {
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doDraftPublishedHook(notes.getChange(),
|
||||
getPatchSet(notes, ev.getRevision()), db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("DraftPublished hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommentAdded(CommentAddedListener.Event ev) {
|
||||
Map<String, Short> approvals = convertApprovalsMap(ev.getApprovals());
|
||||
Map<String, Short> oldApprovals = convertApprovalsMap(ev.getOldApprovals());
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doCommentAddedHook(notes.getChange(),
|
||||
getAccount(ev.getAuthor()),
|
||||
getPatchSet(notes, ev.getRevision()),
|
||||
ev.getComment(), approvals, oldApprovals, db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("CommentAdded hook failed to fun" + ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeMerged(ChangeMergedListener.Event ev) {
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doChangeMergedHook(notes.getChange(),
|
||||
getAccount(ev.getMerger()),
|
||||
getPatchSet(notes, ev.getRevision()),
|
||||
db.get(), ev.getNewRevisionId());
|
||||
} catch (OrmException e) {
|
||||
log.error("ChangeMerged hook failed to run " + ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeAbandoned(ChangeAbandonedListener.Event ev) {
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doChangeAbandonedHook(notes.getChange(),
|
||||
getAccount(ev.getAbandoner()),
|
||||
getPatchSet(notes, ev.getRevision()),
|
||||
ev.getReason(), db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("ChangeAbandoned hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeRestored(ChangeRestoredListener.Event ev) {
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doChangeRestoredHook(notes.getChange(),
|
||||
getAccount(ev.getRestorer()),
|
||||
getPatchSet(notes, ev.getRevision()),
|
||||
ev.getReason(), db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("ChangeRestored hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGitReferenceUpdated(GitReferenceUpdatedListener.Event ev) {
|
||||
hooks.doRefUpdatedHook(
|
||||
new Branch.NameKey(ev.getProjectName(), ev.getRefName()),
|
||||
ObjectId.fromString(ev.getOldObjectId()),
|
||||
ObjectId.fromString(ev.getNewObjectId()),
|
||||
getAccount(ev.getUpdater()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReviewerAdded(ReviewerAddedListener.Event ev) {
|
||||
try {
|
||||
ChangeNotes notes = getNotes(ev.getChange());
|
||||
hooks.doReviewerAddedHook(notes.getChange(),
|
||||
getAccount(ev.getReviewer()),
|
||||
psUtil.current(db.get(), notes),
|
||||
db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("ReviewerAdded hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTopicEdited(TopicEditedListener.Event ev) {
|
||||
try {
|
||||
hooks.doTopicChangedHook(getNotes(ev.getChange()).getChange(),
|
||||
getAccount(ev.getEditor()), ev.getOldTopic(), db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("TopicChanged hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHashtagsEdited(HashtagsEditedListener.Event ev) {
|
||||
try {
|
||||
hooks.doHashtagsChangedHook(getNotes(ev.getChange()).getChange(),
|
||||
getAccount(ev.getEditor()),
|
||||
new HashSet<>(ev.getAddedHashtags()),
|
||||
new HashSet<>(ev.getRemovedHashtags()),
|
||||
new HashSet<>(ev.getHashtags()),
|
||||
db.get());
|
||||
} catch (OrmException e) {
|
||||
log.error("HashtagsChanged hook failed to run "
|
||||
+ ev.getChange()._number, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAgreementSignup(AgreementSignupListener.Event ev) {
|
||||
hooks.doClaSignupHook(getAccount(ev.getAccount()), ev.getAgreementName());
|
||||
}
|
||||
|
||||
private ChangeNotes getNotes(ChangeInfo info) throws OrmException {
|
||||
try {
|
||||
return changeNotesFactory.createChecked(new Change.Id(info._number));
|
||||
} catch (NoSuchChangeException e) {
|
||||
throw new OrmException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private PatchSet getPatchSet(ChangeNotes notes, RevisionInfo info)
|
||||
throws OrmException {
|
||||
return psUtil.get(db.get(), notes, PatchSet.Id.fromRef(info.ref));
|
||||
}
|
||||
|
||||
private Account getAccount(AccountInfo info) {
|
||||
return accounts.get(new Account.Id(info._accountId)).getAccount();
|
||||
}
|
||||
|
||||
private static Map<String, Short> convertApprovalsMap(
|
||||
Map<String, ApprovalInfo> approvals) {
|
||||
Map<String, Short> result = new HashMap<>();
|
||||
for (Entry<String, ApprovalInfo> e : approvals.entrySet()) {
|
||||
Short value =
|
||||
e.getValue().value == null ? null : e.getValue().value.shortValue();
|
||||
result.put(e.getKey(), value);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -22,9 +22,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import com.google.gerrit.common.data.LabelType;
|
||||
import com.google.gerrit.common.data.LabelTypes;
|
||||
import com.google.gerrit.extensions.events.LifecycleListener;
|
||||
import com.google.gerrit.extensions.events.NewProjectCreatedListener;
|
||||
import com.google.gerrit.extensions.registration.DynamicItem;
|
||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Branch;
|
||||
@@ -93,8 +91,7 @@ import java.util.concurrent.TimeoutException;
|
||||
|
||||
/** Spawns local executables when a hook action occurs. */
|
||||
@Singleton
|
||||
public class ChangeHookRunner implements ChangeHooks, LifecycleListener,
|
||||
NewProjectCreatedListener {
|
||||
public class ChangeHookRunner implements ChangeHooks, LifecycleListener {
|
||||
/** A logger for this class. */
|
||||
private static final Logger log = LoggerFactory.getLogger(ChangeHookRunner.class);
|
||||
|
||||
@@ -103,7 +100,6 @@ public class ChangeHookRunner implements ChangeHooks, LifecycleListener,
|
||||
protected void configure() {
|
||||
bind(ChangeHookRunner.class);
|
||||
bind(ChangeHooks.class).to(ChangeHookRunner.class);
|
||||
DynamicSet.bind(binder(), NewProjectCreatedListener.class).to(ChangeHookRunner.class);
|
||||
listener().to(ChangeHookRunner.class);
|
||||
}
|
||||
}
|
||||
@@ -1140,10 +1136,4 @@ public class ChangeHookRunner implements ChangeHooks, LifecycleListener,
|
||||
super.runHook();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewProjectCreated(NewProjectCreatedListener.Event event) {
|
||||
Project.NameKey project = new Project.NameKey(event.getProjectName());
|
||||
doProjectCreatedHook(project, event.getHeadName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package com.google.gerrit.server.change;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.extensions.api.changes.AbandonInput;
|
||||
import com.google.gerrit.extensions.common.ChangeInfo;
|
||||
@@ -55,7 +54,6 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
|
||||
UiAction<ChangeResource> {
|
||||
private static final Logger log = LoggerFactory.getLogger(Abandon.class);
|
||||
|
||||
private final ChangeHooks hooks;
|
||||
private final AbandonedSender.Factory abandonedSenderFactory;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final ChangeJson.Factory json;
|
||||
@@ -65,15 +63,13 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
|
||||
private final ChangeAbandoned changeAbandoned;
|
||||
|
||||
@Inject
|
||||
Abandon(ChangeHooks hooks,
|
||||
AbandonedSender.Factory abandonedSenderFactory,
|
||||
Abandon(AbandonedSender.Factory abandonedSenderFactory,
|
||||
Provider<ReviewDb> dbProvider,
|
||||
ChangeJson.Factory json,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
PatchSetUtil psUtil,
|
||||
BatchUpdate.Factory batchUpdateFactory,
|
||||
ChangeAbandoned changeAbandoned) {
|
||||
this.hooks = hooks;
|
||||
this.abandonedSenderFactory = abandonedSenderFactory;
|
||||
this.dbProvider = dbProvider;
|
||||
this.json = json;
|
||||
@@ -176,11 +172,6 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
|
||||
log.error("Cannot email update for change " + change.getId(), e);
|
||||
}
|
||||
changeAbandoned.fire(change, patchSet, account, msgTxt);
|
||||
hooks.doChangeAbandonedHook(change,
|
||||
account,
|
||||
patchSet,
|
||||
Strings.emptyToNull(msgTxt),
|
||||
ctx.getDb());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.gerrit.reviewdb.client.Change.INITIAL_PATCH_SET_ID;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.FooterConstants;
|
||||
import com.google.gerrit.common.data.LabelType;
|
||||
import com.google.gerrit.common.data.LabelTypes;
|
||||
@@ -90,7 +89,6 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
|
||||
private final ChangeControl.GenericFactory changeControlFactory;
|
||||
private final PatchSetInfoFactory patchSetInfoFactory;
|
||||
private final PatchSetUtil psUtil;
|
||||
private final ChangeHooks hooks;
|
||||
private final ApprovalsUtil approvalsUtil;
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final CreateChangeSender.Factory createChangeSenderFactory;
|
||||
@@ -132,7 +130,6 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
|
||||
ChangeControl.GenericFactory changeControlFactory,
|
||||
PatchSetInfoFactory patchSetInfoFactory,
|
||||
PatchSetUtil psUtil,
|
||||
ChangeHooks hooks,
|
||||
ApprovalsUtil approvalsUtil,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
CreateChangeSender.Factory createChangeSenderFactory,
|
||||
@@ -147,7 +144,6 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||
this.psUtil = psUtil;
|
||||
this.hooks = hooks;
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
this.cmUtil = cmUtil;
|
||||
this.createChangeSenderFactory = createChangeSenderFactory;
|
||||
@@ -406,11 +402,9 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
|
||||
*/
|
||||
if (runHooks) {
|
||||
revisionCreated.fire(change, patchSet, ctx.getUser().getAccountId());
|
||||
ReviewDb db = ctx.getDb();
|
||||
hooks.doPatchsetCreatedHook(change, patchSet, db);
|
||||
if (approvals != null && !approvals.isEmpty()) {
|
||||
ChangeControl changeControl = changeControlFactory.controlFor(
|
||||
db, change, ctx.getUser());
|
||||
ctx.getDb(), change, ctx.getUser());
|
||||
List<LabelType> labels = changeControl.getLabelTypes().getLabelTypes();
|
||||
Map<String, Short> allApprovals = new HashMap<>();
|
||||
Map<String, Short> oldApprovals = new HashMap<>();
|
||||
@@ -427,9 +421,6 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
|
||||
commentAdded.fire(change, patchSet,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(), null,
|
||||
allApprovals, oldApprovals, ctx.getWhen());
|
||||
hooks.doCommentAddedHook(change,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(), patchSet, null,
|
||||
allApprovals, oldApprovals, db);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.gerrit.server.notedb.ReviewerStateInternal.CC;
|
||||
import static com.google.gerrit.server.notedb.ReviewerStateInternal.REVIEWER;
|
||||
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||
@@ -72,7 +71,6 @@ public class PatchSetInserter extends BatchUpdate.Op {
|
||||
}
|
||||
|
||||
// Injected fields.
|
||||
private final ChangeHooks hooks;
|
||||
private final PatchSetInfoFactory patchSetInfoFactory;
|
||||
private final ReviewDb db;
|
||||
private final CommitValidators.Factory commitValidatorsFactory;
|
||||
@@ -111,8 +109,7 @@ public class PatchSetInserter extends BatchUpdate.Op {
|
||||
private ReviewerSet oldReviewers;
|
||||
|
||||
@AssistedInject
|
||||
public PatchSetInserter(ChangeHooks hooks,
|
||||
ReviewDb db,
|
||||
public PatchSetInserter(ReviewDb db,
|
||||
ApprovalsUtil approvalsUtil,
|
||||
ApprovalCopier approvalCopier,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
@@ -124,7 +121,6 @@ public class PatchSetInserter extends BatchUpdate.Op {
|
||||
@Assisted ChangeControl ctl,
|
||||
@Assisted PatchSet.Id psId,
|
||||
@Assisted RevCommit commit) {
|
||||
this.hooks = hooks;
|
||||
this.db = db;
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
this.approvalCopier = approvalCopier;
|
||||
@@ -279,7 +275,6 @@ public class PatchSetInserter extends BatchUpdate.Op {
|
||||
|
||||
if (runHooks) {
|
||||
revisionCreated.fire(change, patchSet, ctx.getUser().getAccountId());
|
||||
hooks.doPatchsetCreatedHook(change, patchSet, ctx.getDb());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.google.common.collect.Ordering;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.hash.HashCode;
|
||||
import com.google.common.hash.Hashing;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.common.data.LabelType;
|
||||
@@ -110,7 +109,6 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
private final PatchListCache patchListCache;
|
||||
private final AccountsCollection accounts;
|
||||
private final EmailReviewComments.Factory email;
|
||||
private final ChangeHooks hooks;
|
||||
private final CommentAdded commentAdded;
|
||||
|
||||
@Inject
|
||||
@@ -125,7 +123,6 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
PatchListCache patchListCache,
|
||||
AccountsCollection accounts,
|
||||
EmailReviewComments.Factory email,
|
||||
ChangeHooks hooks,
|
||||
CommentAdded commentAdded) {
|
||||
this.db = db;
|
||||
this.batchUpdateFactory = batchUpdateFactory;
|
||||
@@ -138,7 +135,6 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
this.cmUtil = cmUtil;
|
||||
this.accounts = accounts;
|
||||
this.email = email;
|
||||
this.hooks = hooks;
|
||||
this.commentAdded = commentAdded;
|
||||
}
|
||||
|
||||
@@ -387,15 +383,9 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
message,
|
||||
comments).sendAsync();
|
||||
}
|
||||
try {
|
||||
commentAdded.fire(
|
||||
notes.getChange(), ps, user.getAccount(), message.getMessage(),
|
||||
approvals, oldApprovals, ctx.getWhen());
|
||||
hooks.doCommentAddedHook(notes.getChange(), user.getAccount(), ps,
|
||||
message.getMessage(), approvals, oldApprovals, ctx.getDb());
|
||||
} catch (OrmException e) {
|
||||
log.warn("ChangeHook.doCommentAddedHook invocation failed", e);
|
||||
}
|
||||
commentAdded.fire(
|
||||
notes.getChange(), ps, user.getAccount(), message.getMessage(),
|
||||
approvals, oldApprovals, ctx.getWhen());
|
||||
}
|
||||
|
||||
private boolean insertComments(ChangeContext ctx) throws OrmException {
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.google.gerrit.server.change;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.common.data.GroupDescription;
|
||||
import com.google.gerrit.common.errors.NoSuchGroupException;
|
||||
@@ -89,7 +88,6 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
|
||||
private final Provider<IdentifiedUser> user;
|
||||
private final IdentifiedUser.GenericFactory identifiedUserFactory;
|
||||
private final Config cfg;
|
||||
private final ChangeHooks hooks;
|
||||
private final AccountCache accountCache;
|
||||
private final ReviewerJson json;
|
||||
private final ReviewerAdded reviewerAdded;
|
||||
@@ -108,7 +106,6 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
|
||||
Provider<IdentifiedUser> user,
|
||||
IdentifiedUser.GenericFactory identifiedUserFactory,
|
||||
@GerritServerConfig Config cfg,
|
||||
ChangeHooks hooks,
|
||||
AccountCache accountCache,
|
||||
ReviewerJson json,
|
||||
ReviewerAdded reviewerAdded) {
|
||||
@@ -125,7 +122,6 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
|
||||
this.user = user;
|
||||
this.identifiedUserFactory = identifiedUserFactory;
|
||||
this.cfg = cfg;
|
||||
this.hooks = hooks;
|
||||
this.accountCache = accountCache;
|
||||
this.json = json;
|
||||
this.reviewerAdded = reviewerAdded;
|
||||
@@ -294,8 +290,6 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
|
||||
for (PatchSetApproval psa : added) {
|
||||
Account account = accountCache.get(psa.getAccountId()).getAccount();
|
||||
reviewerAdded.fire(rsrc.getChange(), patchSet, account);
|
||||
hooks.doReviewerAddedHook(
|
||||
rsrc.getChange(), account, patchSet, dbProvider.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ package com.google.gerrit.server.change;
|
||||
|
||||
import static com.google.gerrit.server.mail.MailUtil.getRecipientsFromFooters;
|
||||
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.common.data.LabelTypes;
|
||||
@@ -77,7 +76,6 @@ public class PublishDraftPatchSet implements RestModifyView<RevisionResource, In
|
||||
private final AccountResolver accountResolver;
|
||||
private final ApprovalsUtil approvalsUtil;
|
||||
private final BatchUpdate.Factory updateFactory;
|
||||
private final ChangeHooks hooks;
|
||||
private final CreateChangeSender.Factory createChangeSenderFactory;
|
||||
private final PatchSetInfoFactory patchSetInfoFactory;
|
||||
private final PatchSetUtil psUtil;
|
||||
@@ -90,7 +88,6 @@ public class PublishDraftPatchSet implements RestModifyView<RevisionResource, In
|
||||
AccountResolver accountResolver,
|
||||
ApprovalsUtil approvalsUtil,
|
||||
BatchUpdate.Factory updateFactory,
|
||||
ChangeHooks hooks,
|
||||
CreateChangeSender.Factory createChangeSenderFactory,
|
||||
PatchSetInfoFactory patchSetInfoFactory,
|
||||
PatchSetUtil psUtil,
|
||||
@@ -100,7 +97,6 @@ public class PublishDraftPatchSet implements RestModifyView<RevisionResource, In
|
||||
this.accountResolver = accountResolver;
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
this.updateFactory = updateFactory;
|
||||
this.hooks = hooks;
|
||||
this.createChangeSenderFactory = createChangeSenderFactory;
|
||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||
this.psUtil = psUtil;
|
||||
@@ -228,7 +224,6 @@ public class PublishDraftPatchSet implements RestModifyView<RevisionResource, In
|
||||
@Override
|
||||
public void postUpdate(Context ctx) throws OrmException {
|
||||
draftPublished.fire(change, patchSet, ctx.getUser().getAccountId());
|
||||
hooks.doDraftPublishedHook(change, patchSet, ctx.getDb());
|
||||
if (patchSet.isDraft() && change.getStatus() == Change.Status.DRAFT) {
|
||||
// Skip emails if the patch set is still a draft.
|
||||
return;
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package com.google.gerrit.server.change;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.extensions.restapi.AuthException;
|
||||
import com.google.gerrit.extensions.restapi.DefaultInput;
|
||||
@@ -45,7 +44,6 @@ import com.google.inject.Singleton;
|
||||
public class PutTopic implements RestModifyView<ChangeResource, Input>,
|
||||
UiAction<ChangeResource> {
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final ChangeHooks hooks;
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final BatchUpdate.Factory batchUpdateFactory;
|
||||
private final TopicEdited topicEdited;
|
||||
@@ -57,12 +55,10 @@ public class PutTopic implements RestModifyView<ChangeResource, Input>,
|
||||
|
||||
@Inject
|
||||
PutTopic(Provider<ReviewDb> dbProvider,
|
||||
ChangeHooks hooks,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
BatchUpdate.Factory batchUpdateFactory,
|
||||
TopicEdited topicEdited) {
|
||||
this.dbProvider = dbProvider;
|
||||
this.hooks = hooks;
|
||||
this.cmUtil = cmUtil;
|
||||
this.batchUpdateFactory = batchUpdateFactory;
|
||||
this.topicEdited = topicEdited;
|
||||
@@ -131,16 +127,11 @@ public class PutTopic implements RestModifyView<ChangeResource, Input>,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postUpdate(Context ctx) throws OrmException {
|
||||
public void postUpdate(Context ctx) {
|
||||
if (change != null) {
|
||||
topicEdited.fire(change,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(),
|
||||
oldTopicName);
|
||||
hooks.doTopicChangedHook(
|
||||
change,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(),
|
||||
oldTopicName,
|
||||
ctx.getDb());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
package com.google.gerrit.server.change;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.extensions.api.changes.RestoreInput;
|
||||
import com.google.gerrit.extensions.common.ChangeInfo;
|
||||
@@ -54,7 +53,6 @@ public class Restore implements RestModifyView<ChangeResource, RestoreInput>,
|
||||
UiAction<ChangeResource> {
|
||||
private static final Logger log = LoggerFactory.getLogger(Restore.class);
|
||||
|
||||
private final ChangeHooks hooks;
|
||||
private final RestoredSender.Factory restoredSenderFactory;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final ChangeJson.Factory json;
|
||||
@@ -64,15 +62,13 @@ public class Restore implements RestModifyView<ChangeResource, RestoreInput>,
|
||||
private final ChangeRestored changeRestored;
|
||||
|
||||
@Inject
|
||||
Restore(ChangeHooks hooks,
|
||||
RestoredSender.Factory restoredSenderFactory,
|
||||
Restore(RestoredSender.Factory restoredSenderFactory,
|
||||
Provider<ReviewDb> dbProvider,
|
||||
ChangeJson.Factory json,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
PatchSetUtil psUtil,
|
||||
BatchUpdate.Factory batchUpdateFactory,
|
||||
ChangeRestored changeRestored) {
|
||||
this.hooks = hooks;
|
||||
this.restoredSenderFactory = restoredSenderFactory;
|
||||
this.dbProvider = dbProvider;
|
||||
this.json = json;
|
||||
@@ -161,11 +157,6 @@ public class Restore implements RestModifyView<ChangeResource, RestoreInput>,
|
||||
changeRestored.fire(change, patchSet,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(),
|
||||
Strings.emptyToNull(input.message));
|
||||
hooks.doChangeRestoredHook(change,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(),
|
||||
patchSet,
|
||||
Strings.emptyToNull(input.message),
|
||||
ctx.getDb());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import static com.google.gerrit.server.change.HashtagsUtil.extractTags;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
import com.google.common.collect.Ordering;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.extensions.api.changes.HashtagsInput;
|
||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||
@@ -55,7 +54,6 @@ public class SetHashtagsOp extends BatchUpdate.Op {
|
||||
|
||||
private final NotesMigration notesMigration;
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final ChangeHooks hooks;
|
||||
private final DynamicSet<HashtagValidationListener> validationListeners;
|
||||
private final HashtagsEdited hashtagsEdited;
|
||||
private final HashtagsInput input;
|
||||
@@ -71,13 +69,11 @@ public class SetHashtagsOp extends BatchUpdate.Op {
|
||||
SetHashtagsOp(
|
||||
NotesMigration notesMigration,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
ChangeHooks hooks,
|
||||
DynamicSet<HashtagValidationListener> validationListeners,
|
||||
HashtagsEdited hashtagsEdited,
|
||||
@Assisted @Nullable HashtagsInput input) {
|
||||
this.notesMigration = notesMigration;
|
||||
this.cmUtil = cmUtil;
|
||||
this.hooks = hooks;
|
||||
this.validationListeners = validationListeners;
|
||||
this.hashtagsEdited = hashtagsEdited;
|
||||
this.input = input;
|
||||
@@ -172,10 +168,6 @@ public class SetHashtagsOp extends BatchUpdate.Op {
|
||||
if (updated() && runHooks) {
|
||||
hashtagsEdited.fire(change, ctx.getUser().getAccountId(), updatedHashtags,
|
||||
toAdd, toRemove);
|
||||
hooks.doHashtagsChangedHook(
|
||||
change, ctx.getUser().asIdentifiedUser().getAccount(),
|
||||
toAdd, toRemove, updatedHashtags,
|
||||
ctx.getDb());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,6 @@ package com.google.gerrit.server.git;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||
import com.google.gerrit.reviewdb.client.LabelId;
|
||||
@@ -62,7 +60,6 @@ public class MergedByPushOp extends BatchUpdate.Op {
|
||||
|
||||
private final RequestScopePropagator requestScopePropagator;
|
||||
private final PatchSetInfoFactory patchSetInfoFactory;
|
||||
private final ChangeHooks hooks;
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final MergedSender.Factory mergedSenderFactory;
|
||||
private final PatchSetUtil psUtil;
|
||||
@@ -81,7 +78,6 @@ public class MergedByPushOp extends BatchUpdate.Op {
|
||||
@AssistedInject
|
||||
MergedByPushOp(
|
||||
PatchSetInfoFactory patchSetInfoFactory,
|
||||
ChangeHooks hooks,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
MergedSender.Factory mergedSenderFactory,
|
||||
PatchSetUtil psUtil,
|
||||
@@ -91,7 +87,6 @@ public class MergedByPushOp extends BatchUpdate.Op {
|
||||
@Assisted PatchSet.Id psId,
|
||||
@Assisted String refName) {
|
||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||
this.hooks = hooks;
|
||||
this.cmUtil = cmUtil;
|
||||
this.mergedSenderFactory = mergedSenderFactory;
|
||||
this.psUtil = psUtil;
|
||||
@@ -175,7 +170,7 @@ public class MergedByPushOp extends BatchUpdate.Op {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postUpdate(final Context ctx) throws OrmException {
|
||||
public void postUpdate(final Context ctx) {
|
||||
if (!correctBranch) {
|
||||
return;
|
||||
}
|
||||
@@ -199,11 +194,9 @@ public class MergedByPushOp extends BatchUpdate.Op {
|
||||
}
|
||||
}));
|
||||
|
||||
Account account = ctx.getUser().asIdentifiedUser().getAccount();
|
||||
hooks.doChangeMergedHook(
|
||||
change, account, patchSet,
|
||||
ctx.getDb(), patchSet.getRevision().get());
|
||||
changeMerged.fire(change, patchSet, account, patchSet.getRevision().get());
|
||||
changeMerged.fire(change, patchSet,
|
||||
ctx.getUser().asIdentifiedUser().getAccount(),
|
||||
patchSet.getRevision().get());
|
||||
}
|
||||
|
||||
private PatchSetInfo getPatchSetInfo(ChangeContext ctx) throws IOException {
|
||||
|
||||
@@ -52,7 +52,6 @@ import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.SortedSetMultimap;
|
||||
import com.google.common.util.concurrent.CheckedFuture;
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.common.data.Capable;
|
||||
@@ -284,7 +283,6 @@ public class ReceiveCommits {
|
||||
private final CmdLineParser.Factory optionParserFactory;
|
||||
private final GitReferenceUpdated gitRefUpdated;
|
||||
private final PatchSetInfoFactory patchSetInfoFactory;
|
||||
private final ChangeHooks hooks;
|
||||
private final PatchSetUtil psUtil;
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final ProjectCache projectCache;
|
||||
@@ -348,7 +346,6 @@ public class ReceiveCommits {
|
||||
CmdLineParser.Factory optionParserFactory,
|
||||
GitReferenceUpdated gitRefUpdated,
|
||||
PatchSetInfoFactory patchSetInfoFactory,
|
||||
ChangeHooks hooks,
|
||||
PatchSetUtil psUtil,
|
||||
ProjectCache projectCache,
|
||||
GitRepositoryManager repoManager,
|
||||
@@ -387,7 +384,6 @@ public class ReceiveCommits {
|
||||
this.optionParserFactory = optionParserFactory;
|
||||
this.gitRefUpdated = gitRefUpdated;
|
||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||
this.hooks = hooks;
|
||||
this.psUtil = psUtil;
|
||||
this.projectCache = projectCache;
|
||||
this.repoManager = repoManager;
|
||||
@@ -644,11 +640,6 @@ public class ReceiveCommits {
|
||||
// Events for change refs are fired when they are created.
|
||||
//
|
||||
gitRefUpdated.fire(project.getNameKey(), c, user.getAccount());
|
||||
hooks.doRefUpdatedHook(
|
||||
new Branch.NameKey(project.getNameKey(), refName),
|
||||
c.getOldId(),
|
||||
c.getNewId(),
|
||||
user.getAccount());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ package com.google.gerrit.server.git;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.common.data.SubscribeSection;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
@@ -77,7 +76,6 @@ public class SubmoduleOp {
|
||||
private final ProjectCache projectCache;
|
||||
private final ProjectState.Factory projectStateFactory;
|
||||
private final Account account;
|
||||
private final ChangeHooks changeHooks;
|
||||
private final boolean verboseSuperProject;
|
||||
private final boolean enableSuperProjectSubscriptions;
|
||||
private final MergeOpRepoManager orm;
|
||||
@@ -91,7 +89,6 @@ public class SubmoduleOp {
|
||||
ProjectCache projectCache,
|
||||
ProjectState.Factory projectStateFactory,
|
||||
@Nullable Account account,
|
||||
ChangeHooks changeHooks,
|
||||
@Assisted MergeOpRepoManager orm) {
|
||||
this.gitmodulesFactory = gitmodulesFactory;
|
||||
this.myIdent = myIdent;
|
||||
@@ -99,7 +96,6 @@ public class SubmoduleOp {
|
||||
this.projectCache = projectCache;
|
||||
this.projectStateFactory = projectStateFactory;
|
||||
this.account = account;
|
||||
this.changeHooks = changeHooks;
|
||||
this.verboseSuperProject = cfg.getBoolean("submodule",
|
||||
"verboseSuperprojectUpdate", true);
|
||||
this.enableSuperProjectSubscriptions = cfg.getBoolean("submodule",
|
||||
@@ -370,7 +366,6 @@ public class SubmoduleOp {
|
||||
case NEW:
|
||||
case FAST_FORWARD:
|
||||
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
|
||||
break;
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.google.gerrit.server.git.strategy;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.api.changes.ReviewInput.NotifyHandling;
|
||||
import com.google.gerrit.extensions.client.SubmitType;
|
||||
import com.google.gerrit.extensions.config.FactoryModule;
|
||||
@@ -30,6 +29,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.PatchSetUtil;
|
||||
import com.google.gerrit.server.account.AccountCache;
|
||||
import com.google.gerrit.server.change.RebaseChangeOp;
|
||||
import com.google.gerrit.server.extensions.events.ChangeMerged;
|
||||
import com.google.gerrit.server.git.BatchUpdate;
|
||||
import com.google.gerrit.server.git.CodeReviewCommit;
|
||||
import com.google.gerrit.server.git.CodeReviewCommit.CodeReviewRevWalk;
|
||||
@@ -100,7 +100,7 @@ public abstract class SubmitStrategy {
|
||||
final ApprovalsUtil approvalsUtil;
|
||||
final BatchUpdate.Factory batchUpdateFactory;
|
||||
final ChangeControl.GenericFactory changeControlFactory;
|
||||
final ChangeHooks hooks;
|
||||
final ChangeMerged changeMerged;
|
||||
final ChangeMessagesUtil cmUtil;
|
||||
final EmailMerge.Factory mergedSenderFactory;
|
||||
final GitRepositoryManager repoManager;
|
||||
@@ -136,7 +136,7 @@ public abstract class SubmitStrategy {
|
||||
ApprovalsUtil approvalsUtil,
|
||||
BatchUpdate.Factory batchUpdateFactory,
|
||||
ChangeControl.GenericFactory changeControlFactory,
|
||||
ChangeHooks hooks,
|
||||
ChangeMerged changeMerged,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
EmailMerge.Factory mergedSenderFactory,
|
||||
GitRepositoryManager repoManager,
|
||||
@@ -165,7 +165,7 @@ public abstract class SubmitStrategy {
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
this.batchUpdateFactory = batchUpdateFactory;
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.hooks = hooks;
|
||||
this.changeMerged = changeMerged;
|
||||
this.mergedSenderFactory = mergedSenderFactory;
|
||||
this.repoManager = repoManager;
|
||||
this.cmUtil = cmUtil;
|
||||
|
||||
@@ -69,10 +69,6 @@ public class SubmitStrategyListener extends BatchUpdate.Listener {
|
||||
if (args.mergeTip.getCurrentTip().equals(args.mergeTip.getInitialTip())) {
|
||||
continue;
|
||||
}
|
||||
args.hooks.doRefUpdatedHook(args.destBranch,
|
||||
args.mergeTip.getInitialTip(),
|
||||
args.mergeTip.getCurrentTip(),
|
||||
args.accountCache.get(args.caller.getAccountId()).getAccount());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -523,13 +523,11 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op {
|
||||
log.error("Cannot email merged notification for " + getId(), e);
|
||||
}
|
||||
if (mergeResultRev != null) {
|
||||
try {
|
||||
args.hooks.doChangeMergedHook(updatedChange,
|
||||
args.accountCache.get(submitter.getAccountId()).getAccount(),
|
||||
mergedPatchSet, ctx.getDb(), args.mergeTip.getCurrentTip().name());
|
||||
} catch (OrmException ex) {
|
||||
logError("Cannot run hook for submitted patch set " + getId(), ex);
|
||||
}
|
||||
args.changeMerged.fire(
|
||||
updatedChange,
|
||||
mergedPatchSet,
|
||||
args.accountCache.get(submitter.getAccountId()).getAccount(),
|
||||
args.mergeTip.getCurrentTip().name());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,13 +15,9 @@
|
||||
package com.google.gerrit.server.git.validators;
|
||||
|
||||
import static com.google.gerrit.reviewdb.client.Change.CHANGE_ID_PATTERN;
|
||||
import static com.google.gerrit.reviewdb.client.RefNames.REFS_CHANGES;
|
||||
import static com.google.gerrit.reviewdb.client.RefNames.REFS_CONFIG;
|
||||
import static org.eclipse.jgit.lib.Constants.R_HEADS;
|
||||
|
||||
import com.google.common.base.CharMatcher;
|
||||
import com.google.gerrit.common.ChangeHookRunner.HookResult;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.FooterConstants;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.common.PageLinks;
|
||||
@@ -45,7 +41,6 @@ import com.jcraft.jsch.HostKey;
|
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.notes.NoteMap;
|
||||
@@ -90,7 +85,6 @@ public class CommitValidators {
|
||||
private final String installCommitMsgHookCommand;
|
||||
private final SshInfo sshInfo;
|
||||
private final Repository repo;
|
||||
private final ChangeHooks hooks;
|
||||
private final DynamicSet<CommitValidationListener> commitValidationListeners;
|
||||
|
||||
@Inject
|
||||
@@ -98,7 +92,6 @@ public class CommitValidators {
|
||||
@CanonicalWebUrl @Nullable final String canonicalWebUrl,
|
||||
@GerritServerConfig final Config config,
|
||||
final DynamicSet<CommitValidationListener> commitValidationListeners,
|
||||
final ChangeHooks hooks,
|
||||
@Assisted final SshInfo sshInfo,
|
||||
@Assisted final Repository repo, @Assisted final RefControl refControl) {
|
||||
this.gerritIdent = gerritIdent;
|
||||
@@ -108,7 +101,6 @@ public class CommitValidators {
|
||||
config.getString("gerrit", null, "installCommitMsgHookCommand");
|
||||
this.sshInfo = sshInfo;
|
||||
this.repo = repo;
|
||||
this.hooks = hooks;
|
||||
this.commitValidationListeners = commitValidationListeners;
|
||||
}
|
||||
|
||||
@@ -133,7 +125,6 @@ public class CommitValidators {
|
||||
validators.add(new ConfigValidator(refControl, repo));
|
||||
validators.add(new BannedCommitsValidator(rejectCommits));
|
||||
validators.add(new PluginCommitValidationListener(commitValidationListeners));
|
||||
validators.add(new ChangeHookValidator(hooks));
|
||||
|
||||
List<CommitValidationMessage> messages = new LinkedList<>();
|
||||
|
||||
@@ -167,7 +158,6 @@ public class CommitValidators {
|
||||
}
|
||||
validators.add(new ConfigValidator(refControl, repo));
|
||||
validators.add(new PluginCommitValidationListener(commitValidationListeners));
|
||||
validators.add(new ChangeHookValidator(hooks));
|
||||
|
||||
List<CommitValidationMessage> messages = new LinkedList<>();
|
||||
|
||||
@@ -569,45 +559,6 @@ public class CommitValidators {
|
||||
}
|
||||
}
|
||||
|
||||
/** Reject commits that don't pass user-supplied ref-update hook. */
|
||||
public static class ChangeHookValidator implements
|
||||
CommitValidationListener {
|
||||
private final ChangeHooks hooks;
|
||||
|
||||
public ChangeHookValidator(ChangeHooks hooks) {
|
||||
this.hooks = hooks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CommitValidationMessage> onCommitReceived(
|
||||
CommitReceivedEvent receiveEvent) throws CommitValidationException {
|
||||
IdentifiedUser user = receiveEvent.user;
|
||||
String refname = receiveEvent.refName;
|
||||
ObjectId old = ObjectId.zeroId();
|
||||
if (receiveEvent.commit.getParentCount() > 0) {
|
||||
old = receiveEvent.commit.getParent(0);
|
||||
}
|
||||
|
||||
if (receiveEvent.command.getRefName().startsWith(REFS_CHANGES)) {
|
||||
/*
|
||||
* If the ref-update hook tries to distinguish behavior between pushes to
|
||||
* refs/heads/... and refs/for/..., make sure we send it the correct refname.
|
||||
* Also, if this is targetting refs/for/, make sure we behave the same as
|
||||
* what a push to refs/for/ would behave; in particular, setting oldrev to
|
||||
* 0000000000000000000000000000000000000000.
|
||||
*/
|
||||
refname = refname.replace(R_HEADS, "refs/for/refs/heads/");
|
||||
old = ObjectId.zeroId();
|
||||
}
|
||||
HookResult result = hooks.doRefUpdateHook(receiveEvent.project, refname,
|
||||
user.getAccount(), old, receiveEvent.commit);
|
||||
if (result != null && result.getExitValue() != 0) {
|
||||
throw new CommitValidationException(result.toString().trim());
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
private static CommitValidationMessage getInvalidEmailError(RevCommit c, String type,
|
||||
PersonIdent who, IdentifiedUser currentUser, String canonicalWebUrl) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
package com.google.gerrit.server.project;
|
||||
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.api.projects.BranchInfo;
|
||||
import com.google.gerrit.extensions.api.projects.BranchInput;
|
||||
import com.google.gerrit.extensions.restapi.AuthException;
|
||||
@@ -56,7 +55,6 @@ public class CreateBranch implements RestModifyView<ProjectResource, BranchInput
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final Provider<ReviewDb> db;
|
||||
private final GitReferenceUpdated referenceUpdated;
|
||||
private final ChangeHooks hooks;
|
||||
private String ref;
|
||||
|
||||
@Inject
|
||||
@@ -64,13 +62,11 @@ public class CreateBranch implements RestModifyView<ProjectResource, BranchInput
|
||||
GitRepositoryManager repoManager,
|
||||
Provider<ReviewDb> db,
|
||||
GitReferenceUpdated referenceUpdated,
|
||||
ChangeHooks hooks,
|
||||
@Assisted String ref) {
|
||||
this.identifiedUser = identifiedUser;
|
||||
this.repoManager = repoManager;
|
||||
this.db = db;
|
||||
this.referenceUpdated = referenceUpdated;
|
||||
this.hooks = hooks;
|
||||
this.ref = ref;
|
||||
}
|
||||
|
||||
@@ -136,7 +132,6 @@ public class CreateBranch implements RestModifyView<ProjectResource, BranchInput
|
||||
referenceUpdated.fire(
|
||||
name.getParentKey(), u, ReceiveCommand.Type.CREATE,
|
||||
identifiedUser.get().getAccount());
|
||||
hooks.doRefUpdatedHook(name, u, identifiedUser.get().getAccount());
|
||||
break;
|
||||
case LOCK_FAILURE:
|
||||
if (repo.getRefDatabase().exactRef(ref) != null) {
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
package com.google.gerrit.server.project;
|
||||
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.restapi.AuthException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.Response;
|
||||
@@ -51,18 +50,16 @@ public class DeleteBranch implements RestModifyView<BranchResource, Input> {
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final Provider<InternalChangeQuery> queryProvider;
|
||||
private final GitReferenceUpdated referenceUpdated;
|
||||
private final ChangeHooks hooks;
|
||||
|
||||
@Inject
|
||||
DeleteBranch(Provider<IdentifiedUser> identifiedUser,
|
||||
GitRepositoryManager repoManager,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
GitReferenceUpdated referenceUpdated, ChangeHooks hooks) {
|
||||
GitReferenceUpdated referenceUpdated) {
|
||||
this.identifiedUser = identifiedUser;
|
||||
this.repoManager = repoManager;
|
||||
this.queryProvider = queryProvider;
|
||||
this.referenceUpdated = referenceUpdated;
|
||||
this.hooks = hooks;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -110,7 +107,6 @@ public class DeleteBranch implements RestModifyView<BranchResource, Input> {
|
||||
case FORCED:
|
||||
referenceUpdated.fire(rsrc.getNameKey(), u, ReceiveCommand.Type.DELETE,
|
||||
identifiedUser.get().getAccount());
|
||||
hooks.doRefUpdatedHook(rsrc.getBranchKey(), u, identifiedUser.get().getAccount());
|
||||
break;
|
||||
|
||||
case REJECTED_CURRENT_BRANCH:
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.google.gerrit.server.project;
|
||||
import static java.lang.String.format;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.api.projects.DeleteBranchesInput;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.Response;
|
||||
@@ -54,19 +53,16 @@ public class DeleteBranches
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final Provider<InternalChangeQuery> queryProvider;
|
||||
private final GitReferenceUpdated referenceUpdated;
|
||||
private final ChangeHooks hooks;
|
||||
|
||||
@Inject
|
||||
DeleteBranches(Provider<IdentifiedUser> identifiedUser,
|
||||
GitRepositoryManager repoManager,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
GitReferenceUpdated referenceUpdated,
|
||||
ChangeHooks hooks) {
|
||||
GitReferenceUpdated referenceUpdated) {
|
||||
this.identifiedUser = identifiedUser;
|
||||
this.repoManager = repoManager;
|
||||
this.queryProvider = queryProvider;
|
||||
this.referenceUpdated = referenceUpdated;
|
||||
this.hooks = hooks;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -157,9 +153,5 @@ public class DeleteBranches
|
||||
private void postDeletion(ProjectResource project, ReceiveCommand 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(),
|
||||
identifiedUser.get().getAccount());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.google.gerrit.server.project;
|
||||
import com.google.common.base.CharMatcher;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.api.projects.ConfigInfo;
|
||||
import com.google.gerrit.extensions.api.projects.ConfigInput;
|
||||
import com.google.gerrit.extensions.api.projects.ConfigValue;
|
||||
@@ -28,16 +27,13 @@ import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
import com.google.gerrit.extensions.restapi.RestModifyView;
|
||||
import com.google.gerrit.extensions.restapi.RestView;
|
||||
import com.google.gerrit.reviewdb.client.Branch;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RefNames;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.EnableSignedPush;
|
||||
import com.google.gerrit.server.config.AllProjectsName;
|
||||
import com.google.gerrit.server.config.PluginConfig;
|
||||
import com.google.gerrit.server.config.PluginConfigFactory;
|
||||
import com.google.gerrit.server.config.ProjectConfigEntry;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.MetaDataUpdate;
|
||||
import com.google.gerrit.server.git.ProjectConfig;
|
||||
@@ -48,7 +44,6 @@ import com.google.inject.Singleton;
|
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -57,7 +52,6 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
|
||||
@Singleton
|
||||
public class PutConfig implements RestModifyView<ProjectResource, ConfigInput> {
|
||||
@@ -74,8 +68,6 @@ public class PutConfig implements RestModifyView<ProjectResource, ConfigInput> {
|
||||
private final AllProjectsName allProjects;
|
||||
private final DynamicMap<RestView<ProjectResource>> views;
|
||||
private final Provider<CurrentUser> user;
|
||||
private final ChangeHooks hooks;
|
||||
private final GitReferenceUpdated gitRefUpdated;
|
||||
|
||||
@Inject
|
||||
PutConfig(@EnableSignedPush boolean serverEnableSignedPush,
|
||||
@@ -88,8 +80,6 @@ public class PutConfig implements RestModifyView<ProjectResource, ConfigInput> {
|
||||
PluginConfigFactory cfgFactory,
|
||||
AllProjectsName allProjects,
|
||||
DynamicMap<RestView<ProjectResource>> views,
|
||||
ChangeHooks hooks,
|
||||
GitReferenceUpdated gitRefUpdated,
|
||||
Provider<CurrentUser> user) {
|
||||
this.serverEnableSignedPush = serverEnableSignedPush;
|
||||
this.metaDataUpdateFactory = metaDataUpdateFactory;
|
||||
@@ -101,8 +91,6 @@ public class PutConfig implements RestModifyView<ProjectResource, ConfigInput> {
|
||||
this.cfgFactory = cfgFactory;
|
||||
this.allProjects = allProjects;
|
||||
this.views = views;
|
||||
this.hooks = hooks;
|
||||
this.gitRefUpdated = gitRefUpdated;
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
@@ -176,16 +164,7 @@ public class PutConfig implements RestModifyView<ProjectResource, ConfigInput> {
|
||||
|
||||
md.setMessage("Modified project settings\n");
|
||||
try {
|
||||
ObjectId baseRev = projectConfig.getRevision();
|
||||
ObjectId commitRev = projectConfig.commit(md);
|
||||
// Only fire hook if project was actually changed.
|
||||
if (!Objects.equals(baseRev, commitRev)) {
|
||||
gitRefUpdated.fire(projectName, RefNames.REFS_CONFIG,
|
||||
baseRev, commitRev, user.get().asIdentifiedUser().getAccount());
|
||||
hooks.doRefUpdatedHook(
|
||||
new Branch.NameKey(projectName, RefNames.REFS_CONFIG),
|
||||
baseRev, commitRev, user.get().asIdentifiedUser().getAccount());
|
||||
}
|
||||
projectConfig.commit(md);
|
||||
projectCache.evict(projectConfig.getProject());
|
||||
gitMgr.setProjectDescription(projectName, p.getDescription());
|
||||
} catch (IOException e) {
|
||||
|
||||
@@ -16,18 +16,14 @@ package com.google.gerrit.server.project;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.extensions.api.projects.DescriptionInput;
|
||||
import com.google.gerrit.extensions.restapi.AuthException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
import com.google.gerrit.extensions.restapi.Response;
|
||||
import com.google.gerrit.extensions.restapi.RestModifyView;
|
||||
import com.google.gerrit.reviewdb.client.Branch;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RefNames;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.MetaDataUpdate;
|
||||
import com.google.gerrit.server.git.ProjectConfig;
|
||||
@@ -36,29 +32,21 @@ import com.google.inject.Singleton;
|
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
@Singleton
|
||||
public class PutDescription implements RestModifyView<ProjectResource, DescriptionInput> {
|
||||
private final ProjectCache cache;
|
||||
private final MetaDataUpdate.Server updateFactory;
|
||||
private final GitRepositoryManager gitMgr;
|
||||
private final ChangeHooks hooks;
|
||||
private final GitReferenceUpdated gitRefUpdated;
|
||||
|
||||
@Inject
|
||||
PutDescription(ProjectCache cache,
|
||||
MetaDataUpdate.Server updateFactory,
|
||||
ChangeHooks hooks,
|
||||
GitReferenceUpdated gitRefUpdated,
|
||||
GitRepositoryManager gitMgr) {
|
||||
this.cache = cache;
|
||||
this.updateFactory = updateFactory;
|
||||
this.hooks = hooks;
|
||||
this.gitRefUpdated = gitRefUpdated;
|
||||
this.gitMgr = gitMgr;
|
||||
}
|
||||
|
||||
@@ -89,16 +77,7 @@ public class PutDescription implements RestModifyView<ProjectResource, Descripti
|
||||
}
|
||||
md.setAuthor(user);
|
||||
md.setMessage(msg);
|
||||
ObjectId baseRev = config.getRevision();
|
||||
ObjectId commitRev = config.commit(md);
|
||||
// Only fire hook if project was actually changed.
|
||||
if (!Objects.equals(baseRev, commitRev)) {
|
||||
gitRefUpdated.fire(resource.getNameKey(), RefNames.REFS_CONFIG,
|
||||
baseRev, commitRev, user.getAccount());
|
||||
hooks.doRefUpdatedHook(
|
||||
new Branch.NameKey(resource.getNameKey(), RefNames.REFS_CONFIG),
|
||||
baseRev, commitRev, user.getAccount());
|
||||
}
|
||||
config.commit(md);
|
||||
cache.evict(ctl.getProject());
|
||||
gitMgr.setProjectDescription(
|
||||
resource.getNameKey(),
|
||||
|
||||
@@ -16,7 +16,6 @@ package com.google.gerrit.server.project;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.data.AccessSection;
|
||||
import com.google.gerrit.common.data.GlobalCapability;
|
||||
import com.google.gerrit.common.data.GroupDescription;
|
||||
@@ -35,15 +34,10 @@ import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
import com.google.gerrit.extensions.restapi.RestModifyView;
|
||||
import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Branch;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RefNames;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.account.GroupBackend;
|
||||
import com.google.gerrit.server.config.AllProjectsName;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.git.MetaDataUpdate;
|
||||
import com.google.gerrit.server.git.ProjectConfig;
|
||||
import com.google.gerrit.server.group.GroupsCollection;
|
||||
@@ -52,8 +46,6 @@ import com.google.inject.Provider;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.revwalk.RevCommit;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedList;
|
||||
@@ -68,8 +60,6 @@ public class SetAccess implements
|
||||
private final Provider<MetaDataUpdate.User> metaDataUpdateFactory;
|
||||
private final AllProjectsName allProjects;
|
||||
private final Provider<SetParent> setParent;
|
||||
private final ChangeHooks hooks;
|
||||
private final GitReferenceUpdated gitRefUpdated;
|
||||
private final GetAccess getAccess;
|
||||
private final ProjectCache projectCache;
|
||||
private final Provider<IdentifiedUser> identifiedUser;
|
||||
@@ -79,8 +69,6 @@ public class SetAccess implements
|
||||
Provider<MetaDataUpdate.User> metaDataUpdateFactory,
|
||||
AllProjectsName allProjects,
|
||||
Provider<SetParent> setParent,
|
||||
ChangeHooks hooks,
|
||||
GitReferenceUpdated gitRefUpdated,
|
||||
GroupsCollection groupsCollection,
|
||||
ProjectCache projectCache,
|
||||
GetAccess getAccess,
|
||||
@@ -90,8 +78,6 @@ public class SetAccess implements
|
||||
this.allProjects = allProjects;
|
||||
this.setParent = setParent;
|
||||
this.groupsCollection = groupsCollection;
|
||||
this.hooks = hooks;
|
||||
this.gitRefUpdated = gitRefUpdated;
|
||||
this.getAccess = getAccess;
|
||||
this.projectCache = projectCache;
|
||||
this.identifiedUser = identifiedUser;
|
||||
@@ -109,14 +95,12 @@ public class SetAccess implements
|
||||
|
||||
ProjectControl projectControl = rsrc.getControl();
|
||||
ProjectConfig config;
|
||||
ObjectId base;
|
||||
|
||||
Project.NameKey newParentProjectName = input.parent == null ?
|
||||
null : new Project.NameKey(input.parent);
|
||||
|
||||
try (MetaDataUpdate md = metaDataUpdateUser.create(rsrc.getNameKey())) {
|
||||
config = ProjectConfig.read(md);
|
||||
base = config.getRevision();
|
||||
|
||||
// Perform removal checks
|
||||
for (AccessSection section : removals) {
|
||||
@@ -225,7 +209,8 @@ public class SetAccess implements
|
||||
md.setMessage("Modify access rules\n");
|
||||
}
|
||||
|
||||
updateProjectConfig(projectControl.getUser(), config, md, base);
|
||||
config.commit(md);
|
||||
projectCache.evict(config.getProject());
|
||||
} catch (InvalidNameException e) {
|
||||
throw new BadRequestException(e.toString());
|
||||
} catch (ConfigInvalidException e) {
|
||||
@@ -293,25 +278,6 @@ public class SetAccess implements
|
||||
return sections;
|
||||
}
|
||||
|
||||
private void updateProjectConfig(CurrentUser user,
|
||||
ProjectConfig config, MetaDataUpdate md, ObjectId base)
|
||||
throws IOException {
|
||||
RevCommit commit = config.commit(md);
|
||||
|
||||
Account account = user.isIdentifiedUser()
|
||||
? user.asIdentifiedUser().getAccount()
|
||||
: null;
|
||||
gitRefUpdated.fire(config.getProject().getNameKey(), RefNames.REFS_CONFIG,
|
||||
base, commit.getId(), account);
|
||||
|
||||
projectCache.evict(config.getProject());
|
||||
|
||||
hooks.doRefUpdatedHook(
|
||||
new Branch.NameKey(config.getProject().getNameKey(),
|
||||
RefNames.REFS_CONFIG),
|
||||
base, commit.getId(), user.asIdentifiedUser().getAccount());
|
||||
}
|
||||
|
||||
private void checkGlobalCapabilityPermissions(Project.NameKey projectName)
|
||||
throws BadRequestException, AuthException {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user