UiAction: Don't create a new instance each time it is used

UiActions don't maintain state and can be therefore moved in Singleton
scope.

Change-Id: I27224edd37140dc7e20acef0e5d0b397aa661a7a
This commit is contained in:
David Ostrovsky
2014-05-20 14:48:39 +02:00
parent 2806f76434
commit 6be9b6f65a
14 changed files with 33 additions and 6 deletions

View File

@@ -36,6 +36,7 @@ import com.google.gwtorm.server.AtomicUpdate;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -43,6 +44,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@Singleton
public class Abandon implements RestModifyView<ChangeResource, AbandonInput>, public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
UiAction<ChangeResource> { UiAction<ChangeResource> {
private static final Logger log = LoggerFactory.getLogger(Abandon.class); private static final Logger log = LoggerFactory.getLogger(Abandon.class);

View File

@@ -34,9 +34,11 @@ import com.google.gerrit.server.project.RefControl;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.io.IOException; import java.io.IOException;
@Singleton
public class CherryPick implements RestModifyView<RevisionResource, CherryPickInput>, public class CherryPick implements RestModifyView<RevisionResource, CherryPickInput>,
UiAction<RevisionResource> { UiAction<RevisionResource> {
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;

View File

@@ -30,11 +30,13 @@ import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import java.io.IOException; import java.io.IOException;
@Singleton
public class DeleteDraftChange implements public class DeleteDraftChange implements
RestModifyView<ChangeResource, Input>, UiAction<ChangeResource> { RestModifyView<ChangeResource, Input>, UiAction<ChangeResource> {
public static class Input { public static class Input {

View File

@@ -34,11 +34,13 @@ import com.google.gwtorm.server.AtomicUpdate;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import java.io.IOException; import java.io.IOException;
@Singleton
public class DeleteDraftPatchSet implements RestModifyView<RevisionResource, Input>, public class DeleteDraftPatchSet implements RestModifyView<RevisionResource, Input>,
UiAction<RevisionResource> { UiAction<RevisionResource> {
public static class Input { public static class Input {

View File

@@ -32,6 +32,7 @@ import com.google.gerrit.server.project.InvalidChangeOperationException;
import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.errors.MissingObjectException;
@@ -39,6 +40,7 @@ import org.eclipse.jgit.lib.PersonIdent;
import java.io.IOException; import java.io.IOException;
@Singleton
class EditMessage implements RestModifyView<RevisionResource, Input>, class EditMessage implements RestModifyView<RevisionResource, Input>,
UiAction<RevisionResource> { UiAction<RevisionResource> {
private final ChangeUtil changeUtil; private final ChangeUtil changeUtil;

View File

@@ -36,11 +36,13 @@ import com.google.gwtorm.server.AtomicUpdate;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import java.io.IOException; import java.io.IOException;
@Singleton
public class Publish implements RestModifyView<RevisionResource, Input>, public class Publish implements RestModifyView<RevisionResource, Input>,
UiAction<RevisionResource> { UiAction<RevisionResource> {
public static class Input { public static class Input {

View File

@@ -35,10 +35,12 @@ import com.google.gwtorm.server.AtomicUpdate;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@Singleton
class PutTopic implements RestModifyView<ChangeResource, Input>, class PutTopic implements RestModifyView<ChangeResource, Input>,
UiAction<ChangeResource> { UiAction<ChangeResource> {
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;

View File

@@ -33,9 +33,11 @@ import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.io.IOException; import java.io.IOException;
@Singleton
public class Rebase implements RestModifyView<RevisionResource, Input>, public class Rebase implements RestModifyView<RevisionResource, Input>,
UiAction<RevisionResource> { UiAction<RevisionResource> {
public static class Input { public static class Input {

View File

@@ -37,6 +37,7 @@ import com.google.gwtorm.server.AtomicUpdate;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -44,6 +45,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@Singleton
public class Restore implements RestModifyView<ChangeResource, RestoreInput>, public class Restore implements RestModifyView<ChangeResource, RestoreInput>,
UiAction<ChangeResource> { UiAction<ChangeResource> {
private static final Logger log = LoggerFactory.getLogger(Restore.class); private static final Logger log = LoggerFactory.getLogger(Restore.class);

View File

@@ -34,11 +34,13 @@ import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.ssh.NoSshInfo; import com.google.gerrit.server.ssh.NoSshInfo;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.PersonIdent;
import java.io.IOException; import java.io.IOException;
@Singleton
public class Revert implements RestModifyView<ChangeResource, RevertInput>, public class Revert implements RestModifyView<ChangeResource, RevertInput>,
UiAction<ChangeResource> { UiAction<ChangeResource> {
private final ChangeJson json; private final ChangeJson json;

View File

@@ -58,6 +58,7 @@ import com.google.gwtorm.server.AtomicUpdate;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.CommitBuilder; import org.eclipse.jgit.lib.CommitBuilder;
@@ -69,6 +70,7 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Singleton
public class Submit implements RestModifyView<RevisionResource, SubmitInput>, public class Submit implements RestModifyView<RevisionResource, SubmitInput>,
UiAction<RevisionResource> { UiAction<RevisionResource> {
public enum Status { public enum Status {

View File

@@ -37,6 +37,7 @@ import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException; import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
@@ -54,7 +55,7 @@ public class PatchSetNotificationSender {
private static final Logger log = private static final Logger log =
LoggerFactory.getLogger(PatchSetNotificationSender.class); LoggerFactory.getLogger(PatchSetNotificationSender.class);
private final ReviewDb db; private final Provider<ReviewDb> db;
private final GitRepositoryManager repoManager; private final GitRepositoryManager repoManager;
private final PatchSetInfoFactory patchSetInfoFactory; private final PatchSetInfoFactory patchSetInfoFactory;
private final ApprovalsUtil approvalsUtil; private final ApprovalsUtil approvalsUtil;
@@ -63,7 +64,7 @@ public class PatchSetNotificationSender {
private final ReplacePatchSetSender.Factory replacePatchSetFactory; private final ReplacePatchSetSender.Factory replacePatchSetFactory;
@Inject @Inject
public PatchSetNotificationSender(ReviewDb db, public PatchSetNotificationSender(Provider<ReviewDb> db,
ChangeHooks hooks, ChangeHooks hooks,
GitRepositoryManager repoManager, GitRepositoryManager repoManager,
PatchSetInfoFactory patchSetInfoFactory, PatchSetInfoFactory patchSetInfoFactory,
@@ -104,7 +105,7 @@ public class PatchSetNotificationSender {
recipients.remove(me); recipients.remove(me);
if (newChange) { if (newChange) {
approvalsUtil.addReviewers(db, update, labelTypes, updatedChange, approvalsUtil.addReviewers(db.get(), update, labelTypes, updatedChange,
updatedPatchSet, info, recipients.getReviewers(), updatedPatchSet, info, recipients.getReviewers(),
Collections.<Account.Id> emptySet()); Collections.<Account.Id> emptySet());
try { try {
@@ -118,12 +119,12 @@ public class PatchSetNotificationSender {
log.error("Cannot send email for new change " + updatedChange.getId(), e); log.error("Cannot send email for new change " + updatedChange.getId(), e);
} }
} else { } else {
approvalsUtil.addReviewers(db, update, labelTypes, updatedChange, approvalsUtil.addReviewers(db.get(), update, labelTypes, updatedChange,
updatedPatchSet, info, recipients.getReviewers(), updatedPatchSet, info, recipients.getReviewers(),
approvalsUtil.getReviewers(db, notes).values()); approvalsUtil.getReviewers(db.get(), notes).values());
final ChangeMessage msg = final ChangeMessage msg =
new ChangeMessage(new ChangeMessage.Key(updatedChange.getId(), new ChangeMessage(new ChangeMessage.Key(updatedChange.getId(),
ChangeUtil.messageUUID(db)), me, ChangeUtil.messageUUID(db.get())), me,
updatedPatchSet.getCreatedOn(), updatedPatchSet.getId()); updatedPatchSet.getCreatedOn(), updatedPatchSet.getId());
msg.setMessage("Uploaded patch set " + updatedPatchSet.getPatchSetId() + "."); msg.setMessage("Uploaded patch set " + updatedPatchSet.getPatchSetId() + ".");
try { try {

View File

@@ -27,6 +27,7 @@ import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.LocalDiskRepositoryManager; import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.project.GarbageCollect.Input; import com.google.gerrit.server.project.GarbageCollect.Input;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@@ -35,6 +36,7 @@ import java.io.PrintWriter;
import java.util.Collections; import java.util.Collections;
@RequiresCapability(GlobalCapability.RUN_GC) @RequiresCapability(GlobalCapability.RUN_GC)
@Singleton
public class GarbageCollect implements RestModifyView<ProjectResource, Input>, public class GarbageCollect implements RestModifyView<ProjectResource, Input>,
UiAction<ProjectResource> { UiAction<ProjectResource> {
public static class Input { public static class Input {

View File

@@ -26,6 +26,7 @@ import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.extensions.webui.UiActions; import com.google.gerrit.server.extensions.webui.UiActions;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.util.Providers; import com.google.inject.util.Providers;
import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -42,6 +43,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeMap; import java.util.TreeMap;
@Singleton
public class ListBranches implements RestReadView<ProjectResource> { public class ListBranches implements RestReadView<ProjectResource> {
private final GitRepositoryManager repoManager; private final GitRepositoryManager repoManager;
private final DynamicMap<RestView<BranchResource>> branchViews; private final DynamicMap<RestView<BranchResource>> branchViews;