summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/common/ChangeHooks.java
blob: 48a52a02f5cbad3f86a2cad4d1009827991b0e18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
// Copyright (C) 2012 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 com.google.gerrit.common.ChangeHookRunner.HookResult;
import com.google.gerrit.common.data.ContributorAgreement;
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.gwtorm.server.OrmException;

import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.RefUpdate;

import java.util.Map;

/** Invokes hooks on server actions. */
public interface ChangeHooks {
  public void addChangeListener(ChangeListener listener, IdentifiedUser user);

  public void removeChangeListener(ChangeListener listener);

  /**
   * Fire the Patchset Created Hook.
   *
   * @param change The change itself.
   * @param patchSet The Patchset that was created.
   * @throws OrmException
   */
  public void doPatchsetCreatedHook(Change change, PatchSet patchSet,
      ReviewDb db) throws OrmException;

  /**
   * Fire the Draft Published Hook.
   *
   * @param change The change itself.
   * @param patchSet The Patchset that was published.
   * @throws OrmException
   */
  public void doDraftPublishedHook(Change change, PatchSet patchSet,
      ReviewDb db) throws OrmException;

  /**
   * Fire the Comment Added Hook.
   *
   * @param change The change itself.
   * @param patchSet The patchset this comment is related to.
   * @param account The gerrit user who added the comment.
   * @param comment The comment given.
   * @param approvals Map of label IDs to scores
   * @throws OrmException
   */
  public void doCommentAddedHook(Change change, Account account,
      PatchSet patchSet, String comment,
      Map<String, Short> approvals, ReviewDb db)
      throws OrmException;

  /**
   * Fire the Change Merged Hook.
   *
   * @param change The change itself.
   * @param account The gerrit user who submitted the change.
   * @param patchSet The patchset that was merged.
   * @throws OrmException
   */
  public void doChangeMergedHook(Change change, Account account,
      PatchSet patchSet, ReviewDb db) throws OrmException;

  /**
   * Fire the Merge Failed Hook.
   *
   * @param change The change itself.
   * @param account The gerrit user who attempted to submit the change.
   * @param patchSet The patchset that failed to merge.
   * @param reason The reason that the change failed to merge.
   * @throws OrmException
   */
  public void doMergeFailedHook(Change change, Account account,
      PatchSet patchSet, String reason, ReviewDb db) throws OrmException;

  /**
   * Fire the Change Abandoned Hook.
   *
   * @param change The change itself.
   * @param account The gerrit user who abandoned the change.
   * @param reason Reason for abandoning the change.
   * @throws OrmException
   */
  public void doChangeAbandonedHook(Change change, Account account,
      String reason, ReviewDb db) throws OrmException;

  /**
   * Fire the Change Restored Hook.
   *
   * @param change The change itself.
   * @param account The gerrit user who restored the change.
   * @param reason Reason for restoring the change.
   * @throws OrmException
   */
  public void doChangeRestoredHook(Change change, Account account,
      String reason, ReviewDb db) throws OrmException;

  /**
   * Fire the Ref Updated Hook
   *
   * @param refName The updated project and branch.
   * @param refUpdate An actual RefUpdate object
   * @param account The gerrit user who moved the ref
   */
  public void doRefUpdatedHook(Branch.NameKey refName, RefUpdate refUpdate,
      Account account);

  /**
   * Fire the Ref Updated Hook
   *
   * @param refName The Branch.NameKey of the ref that was updated
   * @param oldId The ref's old id
   * @param newId The ref's new id
   * @param account The gerrit user who moved the ref
   */
  public void doRefUpdatedHook(Branch.NameKey refName, ObjectId oldId,
      ObjectId newId, Account account);

  /**
   * Fire the Reviewer Added Hook
   *
   * @param change The change itself.
   * @param patchSet The patchset that the reviewer was added on.
   * @param account The gerrit user who was added as reviewer.
   */
  public void doReviewerAddedHook(Change change, Account account,
      PatchSet patchSet, ReviewDb db) throws OrmException;

  public void doClaSignupHook(Account account, ContributorAgreement cla);

  /**
   * Fire the Ref update Hook
   *
   * @param project The target project
   * @param refName The Branch.NameKey of the ref provided by client
   * @param uploader The gerrit user running the command
   * @param oldId The ref's old id
   * @param newId The ref's new id
   * @param account The gerrit user who moved the ref
   */
  public HookResult doRefUpdateHook(Project project,  String refName,
       Account uploader, ObjectId oldId, ObjectId newId);
}