summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/change/ActionJson.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/change/ActionJson.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/ActionJson.java227
1 files changed, 0 insertions, 227 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ActionJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ActionJson.java
deleted file mode 100644
index 7aa6e4e731..0000000000
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ActionJson.java
+++ /dev/null
@@ -1,227 +0,0 @@
-// 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.change;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.gerrit.common.Nullable;
-import com.google.gerrit.extensions.api.changes.ActionVisitor;
-import com.google.gerrit.extensions.common.ActionInfo;
-import com.google.gerrit.extensions.common.ChangeInfo;
-import com.google.gerrit.extensions.common.RevisionInfo;
-import com.google.gerrit.extensions.registration.DynamicMap;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.extensions.restapi.RestView;
-import com.google.gerrit.extensions.webui.PrivateInternals_UiActionDescription;
-import com.google.gerrit.extensions.webui.UiAction;
-import com.google.gerrit.reviewdb.client.Change.Status;
-import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.extensions.webui.UiActions;
-import com.google.gerrit.server.notedb.ChangeNotes;
-import com.google.gwtorm.server.OrmException;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-@Singleton
-public class ActionJson {
- private final Revisions revisions;
- private final ChangeJson.Factory changeJsonFactory;
- private final ChangeResource.Factory changeResourceFactory;
- private final UiActions uiActions;
- private final DynamicMap<RestView<ChangeResource>> changeViews;
- private final DynamicSet<ActionVisitor> visitorSet;
- private final Provider<CurrentUser> userProvider;
-
- @Inject
- ActionJson(
- Revisions revisions,
- ChangeJson.Factory changeJsonFactory,
- ChangeResource.Factory changeResourceFactory,
- UiActions uiActions,
- DynamicMap<RestView<ChangeResource>> changeViews,
- DynamicSet<ActionVisitor> visitorSet,
- Provider<CurrentUser> userProvider) {
- this.revisions = revisions;
- this.changeJsonFactory = changeJsonFactory;
- this.changeResourceFactory = changeResourceFactory;
- this.uiActions = uiActions;
- this.changeViews = changeViews;
- this.visitorSet = visitorSet;
- this.userProvider = userProvider;
- }
-
- public Map<String, ActionInfo> format(RevisionResource rsrc) throws OrmException {
- ChangeInfo changeInfo = null;
- RevisionInfo revisionInfo = null;
- List<ActionVisitor> visitors = visitors();
- if (!visitors.isEmpty()) {
- changeInfo = changeJson().format(rsrc);
- revisionInfo = checkNotNull(Iterables.getOnlyElement(changeInfo.revisions.values()));
- changeInfo.revisions = null;
- }
- return toActionMap(rsrc, visitors, changeInfo, revisionInfo);
- }
-
- private ChangeJson changeJson() {
- return changeJsonFactory.noOptions();
- }
-
- private ArrayList<ActionVisitor> visitors() {
- return Lists.newArrayList(visitorSet);
- }
-
- public ChangeInfo addChangeActions(ChangeInfo to, ChangeNotes notes) {
- List<ActionVisitor> visitors = visitors();
- to.actions = toActionMap(notes, visitors, copy(visitors, to));
- return to;
- }
-
- public RevisionInfo addRevisionActions(
- @Nullable ChangeInfo changeInfo, RevisionInfo to, RevisionResource rsrc) throws OrmException {
- List<ActionVisitor> visitors = visitors();
- if (!visitors.isEmpty()) {
- if (changeInfo != null) {
- changeInfo = copy(visitors, changeInfo);
- } else {
- changeInfo = changeJson().format(rsrc);
- }
- }
- to.actions = toActionMap(rsrc, visitors, changeInfo, copy(visitors, to));
- return to;
- }
-
- private ChangeInfo copy(List<ActionVisitor> visitors, ChangeInfo changeInfo) {
- if (visitors.isEmpty()) {
- return null;
- }
- // Include all fields from ChangeJson#toChangeInfo that are not protected by any
- // ListChangesOptions.
- ChangeInfo copy = new ChangeInfo();
- copy.project = changeInfo.project;
- copy.branch = changeInfo.branch;
- copy.topic = changeInfo.topic;
- copy.assignee = changeInfo.assignee;
- copy.hashtags = changeInfo.hashtags;
- copy.changeId = changeInfo.changeId;
- copy.submitType = changeInfo.submitType;
- copy.mergeable = changeInfo.mergeable;
- copy.insertions = changeInfo.insertions;
- copy.deletions = changeInfo.deletions;
- copy.hasReviewStarted = changeInfo.hasReviewStarted;
- copy.isPrivate = changeInfo.isPrivate;
- copy.subject = changeInfo.subject;
- copy.status = changeInfo.status;
- copy.owner = changeInfo.owner;
- copy.created = changeInfo.created;
- copy.updated = changeInfo.updated;
- copy._number = changeInfo._number;
- copy.revertOf = changeInfo.revertOf;
- copy.starred = changeInfo.starred;
- copy.stars = changeInfo.stars;
- copy.submitted = changeInfo.submitted;
- copy.submitter = changeInfo.submitter;
- copy.unresolvedCommentCount = changeInfo.unresolvedCommentCount;
- copy.workInProgress = changeInfo.workInProgress;
- copy.id = changeInfo.id;
- return copy;
- }
-
- private RevisionInfo copy(List<ActionVisitor> visitors, RevisionInfo revisionInfo) {
- if (visitors.isEmpty()) {
- return null;
- }
- // Include all fields from ChangeJson#toRevisionInfo that are not protected by any
- // ListChangesOptions.
- RevisionInfo copy = new RevisionInfo();
- copy.isCurrent = revisionInfo.isCurrent;
- copy._number = revisionInfo._number;
- copy.ref = revisionInfo.ref;
- copy.created = revisionInfo.created;
- copy.uploader = revisionInfo.uploader;
- copy.fetch = revisionInfo.fetch;
- copy.kind = revisionInfo.kind;
- copy.description = revisionInfo.description;
- return copy;
- }
-
- private Map<String, ActionInfo> toActionMap(
- ChangeNotes notes, List<ActionVisitor> visitors, ChangeInfo changeInfo) {
- CurrentUser user = userProvider.get();
- Map<String, ActionInfo> out = new LinkedHashMap<>();
- if (!user.isIdentifiedUser()) {
- return out;
- }
-
- Iterable<UiAction.Description> descs =
- uiActions.from(changeViews, changeResourceFactory.create(notes, user));
-
- // The followup action is a client-side only operation that does not
- // have a server side handler. It must be manually registered into the
- // resulting action map.
- Status status = notes.getChange().getStatus();
- if (status.isOpen() || status.equals(Status.MERGED)) {
- UiAction.Description descr = new UiAction.Description();
- PrivateInternals_UiActionDescription.setId(descr, "followup");
- PrivateInternals_UiActionDescription.setMethod(descr, "POST");
- descr.setTitle("Create follow-up change");
- descr.setLabel("Follow-Up");
- descs = Iterables.concat(descs, Collections.singleton(descr));
- }
-
- ACTION:
- for (UiAction.Description d : descs) {
- ActionInfo actionInfo = new ActionInfo(d);
- for (ActionVisitor visitor : visitors) {
- if (!visitor.visit(d.getId(), actionInfo, changeInfo)) {
- continue ACTION;
- }
- }
- out.put(d.getId(), actionInfo);
- }
- return out;
- }
-
- private Map<String, ActionInfo> toActionMap(
- RevisionResource rsrc,
- List<ActionVisitor> visitors,
- ChangeInfo changeInfo,
- RevisionInfo revisionInfo) {
- if (!rsrc.getUser().isIdentifiedUser()) {
- return ImmutableMap.of();
- }
-
- Map<String, ActionInfo> out = new LinkedHashMap<>();
- ACTION:
- for (UiAction.Description d : uiActions.from(revisions, rsrc)) {
- ActionInfo actionInfo = new ActionInfo(d);
- for (ActionVisitor visitor : visitors) {
- if (!visitor.visit(d.getId(), actionInfo, changeInfo, revisionInfo)) {
- continue ACTION;
- }
- }
- out.put(d.getId(), actionInfo);
- }
- return out;
- }
-}