Merge "feat: Detect and error on comment lines in commit message formatting"
diff --git a/Documentation/rest-api-accounts.txt b/Documentation/rest-api-accounts.txt
index cb3517d..1c77e4a 100644
--- a/Documentation/rest-api-accounts.txt
+++ b/Documentation/rest-api-accounts.txt
@@ -3009,6 +3009,7 @@
|Field Name | |Description
|`project` | |The name of the project.
|`filter` |optional|A filter string to be applied to the project.
+|`problem` |optional|An error message when project is for example hidden or deleted.
|`notify_new_changes` |optional|Notify on new changes.
|`notify_new_patch_sets` |optional|Notify on new patch sets.
|`notify_all_comments` |optional|Notify on comments.
diff --git a/java/com/google/gerrit/extensions/client/ProjectWatchInfo.java b/java/com/google/gerrit/extensions/client/ProjectWatchInfo.java
index 8f5af76..c446d87 100644
--- a/java/com/google/gerrit/extensions/client/ProjectWatchInfo.java
+++ b/java/com/google/gerrit/extensions/client/ProjectWatchInfo.java
@@ -19,6 +19,7 @@
public class ProjectWatchInfo {
public String project;
public String filter;
+ public String problem;
public Boolean notifyNewChanges;
public Boolean notifyNewPatchSets;
@@ -32,6 +33,7 @@
ProjectWatchInfo w = (ProjectWatchInfo) obj;
return Objects.equals(project, w.project)
&& Objects.equals(filter, w.filter)
+ && Objects.equals(problem, w.problem)
&& Objects.equals(notifyNewChanges, w.notifyNewChanges)
&& Objects.equals(notifyNewPatchSets, w.notifyNewPatchSets)
&& Objects.equals(notifyAllComments, w.notifyAllComments)
@@ -46,6 +48,7 @@
return Objects.hash(
project,
filter,
+ problem,
notifyNewChanges,
notifyNewPatchSets,
notifyAllComments,
@@ -61,6 +64,9 @@
if (filter != null) {
b.append("%filter=").append(filter);
}
+ if (problem != null) {
+ b.append("%problem=").append(problem);
+ }
b.append("(notifyAbandonedChanges=")
.append(toBoolean(notifyAbandonedChanges))
.append(", notifyAllComments=")
diff --git a/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java b/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java
index 00c70d0..8f047a3 100644
--- a/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java
+++ b/java/com/google/gerrit/server/restapi/account/GetWatchedProjects.java
@@ -26,6 +26,7 @@
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.extensions.restapi.Response;
+import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountResource;
@@ -35,6 +36,7 @@
import com.google.gerrit.server.permissions.GlobalPermission;
import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackendException;
+import com.google.gerrit.server.restapi.project.ProjectsCollection;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -53,13 +55,18 @@
private final PermissionBackend permissionBackend;
private final Provider<IdentifiedUser> self;
private final Accounts accounts;
+ private final ProjectsCollection projectsCollection;
@Inject
public GetWatchedProjects(
- PermissionBackend permissionBackend, Provider<IdentifiedUser> self, Accounts accounts) {
+ PermissionBackend permissionBackend,
+ Provider<IdentifiedUser> self,
+ Accounts accounts,
+ ProjectsCollection projectsCollection) {
this.permissionBackend = permissionBackend;
this.self = self;
this.accounts = accounts;
+ this.projectsCollection = projectsCollection;
}
@Override
@@ -84,11 +91,16 @@
.collect(toList()));
}
- private static ProjectWatchInfo toProjectWatchInfo(
+ private ProjectWatchInfo toProjectWatchInfo(
ProjectWatchKey key, ImmutableSet<NotifyType> watchTypes) {
ProjectWatchInfo pwi = new ProjectWatchInfo();
pwi.filter = key.filter();
pwi.project = key.project().get();
+ try {
+ var unused = projectsCollection.parse(key.project().get());
+ } catch (RestApiException | IOException | PermissionBackendException e) {
+ pwi.problem = e.getMessage();
+ }
pwi.notifyAbandonedChanges = toBoolean(watchTypes.contains(NotifyType.ABANDONED_CHANGES));
pwi.notifyNewChanges = toBoolean(watchTypes.contains(NotifyType.NEW_CHANGES));
pwi.notifyNewPatchSets = toBoolean(watchTypes.contains(NotifyType.NEW_PATCHSETS));