Move REST endpoints to singleton scope

The majority of REST endpoints don't maintain state and don't need to be
created each time they are used. Exceptions are endpoints with @Option
annotation and therefore must stay in default scope.

Change-Id: Ia2ac8cfccf41966daa48334cedcb7a20101474d2
This commit is contained in:
David Ostrovsky
2014-05-24 22:11:25 +02:00
committed by Shawn Pearce
parent f10c28adc7
commit 75f1583de0
115 changed files with 361 additions and 106 deletions

View File

@@ -22,7 +22,9 @@ import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.TopLevelResource;
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;
@Singleton
public class AccessCollection implements public class AccessCollection implements
RestCollection<TopLevelResource, AccessResource> { RestCollection<TopLevelResource, AccessResource> {
private final Provider<ListAccess> list; private final Provider<ListAccess> list;

View File

@@ -30,7 +30,9 @@ import com.google.gerrit.server.IdentifiedUser;
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;
@Singleton
public class AccountsCollection implements public class AccountsCollection implements
RestCollection<TopLevelResource, AccountResource>, RestCollection<TopLevelResource, AccountResource>,
AcceptsCreate<TopLevelResource>{ AcceptsCreate<TopLevelResource>{

View File

@@ -35,11 +35,13 @@ import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.ResultSet; import com.google.gwtorm.server.ResultSet;
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.io.InputStream; import java.io.InputStream;
import java.util.Collections; import java.util.Collections;
@Singleton
public class AddSshKey implements RestModifyView<AccountResource, Input> { public class AddSshKey implements RestModifyView<AccountResource, Input> {
public static class Input { public static class Input {
public RawInput raw; public RawInput raw;

View File

@@ -25,7 +25,9 @@ import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.account.AccountResource.Capability; import com.google.gerrit.server.account.AccountResource.Capability;
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;
@Singleton
class Capabilities implements class Capabilities implements
ChildCollection<AccountResource, AccountResource.Capability> { ChildCollection<AccountResource, AccountResource.Capability> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;

View File

@@ -25,10 +25,12 @@ import com.google.gerrit.server.account.DeleteActive.Input;
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.util.Collections; import java.util.Collections;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
public class DeleteActive implements RestModifyView<AccountResource, Input> { public class DeleteActive implements RestModifyView<AccountResource, Input> {
public static class Input { public static class Input {
} }

View File

@@ -29,7 +29,9 @@ import com.google.gerrit.server.account.DeleteEmail.Input;
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;
@Singleton
public class DeleteEmail implements RestModifyView<AccountResource.Email, Input> { public class DeleteEmail implements RestModifyView<AccountResource.Email, Input> {
public static class Input { public static class Input {
} }

View File

@@ -22,9 +22,11 @@ import com.google.gerrit.server.ssh.SshKeyCache;
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.util.Collections; import java.util.Collections;
@Singleton
public class DeleteSshKey implements public class DeleteSshKey implements
RestModifyView<AccountResource.SshKey, Input> { RestModifyView<AccountResource.SshKey, Input> {
public static class Input { public static class Input {

View File

@@ -25,7 +25,9 @@ import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.account.AccountResource.Email; import com.google.gerrit.server.account.AccountResource.Email;
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;
@Singleton
public class Emails implements public class Emails implements
ChildCollection<AccountResource, AccountResource.Email>, ChildCollection<AccountResource, AccountResource.Email>,
AcceptsCreate<AccountResource> { AcceptsCreate<AccountResource> {

View File

@@ -17,7 +17,9 @@ package com.google.gerrit.server.account;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
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;
@Singleton
public class GetAccount implements RestReadView<AccountResource> { public class GetAccount implements RestReadView<AccountResource> {
private final AccountInfo.Loader.Factory infoFactory; private final AccountInfo.Loader.Factory infoFactory;

View File

@@ -17,7 +17,9 @@ package com.google.gerrit.server.account;
import com.google.gerrit.extensions.restapi.BinaryResult; import com.google.gerrit.extensions.restapi.BinaryResult;
import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
public class GetActive implements RestReadView<AccountResource> { public class GetActive implements RestReadView<AccountResource> {
@Override @Override
public Object apply(AccountResource rsrc) { public Object apply(AccountResource rsrc) {

View File

@@ -20,7 +20,9 @@ import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.avatar.AvatarProvider; import com.google.gerrit.server.avatar.AvatarProvider;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class GetAvatarChangeUrl implements RestReadView<AccountResource> { public class GetAvatarChangeUrl implements RestReadView<AccountResource> {
private final DynamicItem<AvatarProvider> avatarProvider; private final DynamicItem<AvatarProvider> avatarProvider;

View File

@@ -48,6 +48,7 @@ import com.google.gerrit.server.git.QueueProvider;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
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.kohsuke.args4j.Option; import org.kohsuke.args4j.Option;
@@ -178,6 +179,7 @@ class GetCapabilities implements RestReadView<AccountResource> {
} }
} }
@Singleton
static class CheckOne implements RestReadView<AccountResource.Capability> { static class CheckOne implements RestReadView<AccountResource.Capability> {
@Override @Override
public BinaryResult apply(Capability resource) { public BinaryResult apply(Capability resource) {

View File

@@ -25,7 +25,9 @@ import com.google.gerrit.server.CurrentUser;
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;
@Singleton
public class GetDiffPreferences implements RestReadView<AccountResource> { public class GetDiffPreferences implements RestReadView<AccountResource> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
private final Provider<ReviewDb> db; private final Provider<ReviewDb> db;

View File

@@ -16,7 +16,9 @@ package com.google.gerrit.server.account;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.account.GetEmails.EmailInfo; import com.google.gerrit.server.account.GetEmails.EmailInfo;
import com.google.inject.Singleton;
@Singleton
public class GetEmail implements RestReadView<AccountResource.Email> { public class GetEmail implements RestReadView<AccountResource.Email> {
@Override @Override
public EmailInfo apply(AccountResource.Email rsrc) { public EmailInfo apply(AccountResource.Email rsrc) {

View File

@@ -24,9 +24,11 @@ import com.google.gerrit.server.group.GroupJson;
import com.google.gerrit.server.group.GroupJson.GroupInfo; import com.google.gerrit.server.group.GroupJson.GroupInfo;
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 java.util.List; import java.util.List;
@Singleton
public class GetGroups implements RestReadView<AccountResource> { public class GetGroups implements RestReadView<AccountResource> {
private final GroupControl.Factory groupControlFactory; private final GroupControl.Factory groupControlFactory;
private final GroupJson json; private final GroupJson json;

View File

@@ -20,7 +20,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.CurrentUser;
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;
@Singleton
public class GetHttpPassword implements RestReadView<AccountResource> { public class GetHttpPassword implements RestReadView<AccountResource> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;

View File

@@ -16,7 +16,9 @@ package com.google.gerrit.server.account;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
public class GetName implements RestReadView<AccountResource> { public class GetName implements RestReadView<AccountResource> {
@Override @Override
public String apply(AccountResource rsrc) { public String apply(AccountResource rsrc) {

View File

@@ -35,6 +35,7 @@ import com.google.gerrit.server.git.GitRepositoryManager;
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.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
@@ -46,6 +47,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Singleton
public class GetPreferences implements RestReadView<AccountResource> { public class GetPreferences implements RestReadView<AccountResource> {
private static final Logger log = LoggerFactory.getLogger(GetPreferences.class); private static final Logger log = LoggerFactory.getLogger(GetPreferences.class);

View File

@@ -17,7 +17,9 @@ package com.google.gerrit.server.account;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.account.AccountResource.SshKey; import com.google.gerrit.server.account.AccountResource.SshKey;
import com.google.gerrit.server.account.GetSshKeys.SshKeyInfo; import com.google.gerrit.server.account.GetSshKeys.SshKeyInfo;
import com.google.inject.Singleton;
@Singleton
public class GetSshKey implements RestReadView<AccountResource.SshKey> { public class GetSshKey implements RestReadView<AccountResource.SshKey> {
@Override @Override

View File

@@ -20,7 +20,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.CurrentUser;
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;
@Singleton
public class GetUsername implements RestReadView<AccountResource> { public class GetUsername implements RestReadView<AccountResource> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;

View File

@@ -17,7 +17,9 @@ package com.google.gerrit.server.account;
import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.server.account.CreateAccount.Input; import com.google.gerrit.server.account.CreateAccount.Input;
import com.google.inject.Singleton;
@Singleton
public class PutAccount implements RestModifyView<AccountResource, Input> { public class PutAccount implements RestModifyView<AccountResource, Input> {
@Override @Override
public Object apply(AccountResource resource, Input input) public Object apply(AccountResource resource, Input input)

View File

@@ -25,10 +25,12 @@ import com.google.gerrit.server.account.PutActive.Input;
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.util.Collections; import java.util.Collections;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
public class PutActive implements RestModifyView<AccountResource, Input> { public class PutActive implements RestModifyView<AccountResource, Input> {
public static class Input { public static class Input {
} }

View File

@@ -18,7 +18,9 @@ import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.server.account.CreateEmail.Input; import com.google.gerrit.server.account.CreateEmail.Input;
import com.google.inject.Singleton;
@Singleton
public class PutEmail implements RestModifyView<AccountResource.Email, Input> { public class PutEmail implements RestModifyView<AccountResource.Email, Input> {
@Override @Override
public Response<?> apply(AccountResource.Email rsrc, Input input) public Response<?> apply(AccountResource.Email rsrc, Input input)

View File

@@ -30,6 +30,7 @@ import com.google.gerrit.server.account.PutHttpPassword.Input;
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.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
@@ -37,6 +38,7 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.Collections; import java.util.Collections;
@Singleton
public class PutHttpPassword implements RestModifyView<AccountResource, Input> { public class PutHttpPassword implements RestModifyView<AccountResource, Input> {
public static class Input { public static class Input {
public String httpPassword; public String httpPassword;

View File

@@ -34,9 +34,11 @@ import com.google.gerrit.server.auth.ldap.LdapRealm;
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.util.Collections; import java.util.Collections;
@Singleton
public class PutName implements RestModifyView<AccountResource, Input> { public class PutName implements RestModifyView<AccountResource, Input> {
public static class Input { public static class Input {
@DefaultInput @DefaultInput

View File

@@ -26,9 +26,11 @@ import com.google.gerrit.server.account.PutPreferred.Input;
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.util.Collections; import java.util.Collections;
@Singleton
public class PutPreferred implements public class PutPreferred implements
RestModifyView<AccountResource.Email, Input> { RestModifyView<AccountResource.Email, Input> {
static class Input { static class Input {

View File

@@ -27,9 +27,11 @@ import com.google.gerrit.server.account.SetDiffPreferences.Input;
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.util.Collections; import java.util.Collections;
@Singleton
public class SetDiffPreferences implements RestModifyView<AccountResource, Input> { public class SetDiffPreferences implements RestModifyView<AccountResource, Input> {
static class Input { static class Input {
Short context; Short context;
@@ -54,10 +56,10 @@ public class SetDiffPreferences implements RestModifyView<AccountResource, Input
} }
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
private final ReviewDb db; private final Provider<ReviewDb> db;
@Inject @Inject
SetDiffPreferences(Provider<CurrentUser> self, ReviewDb db) { SetDiffPreferences(Provider<CurrentUser> self, Provider<ReviewDb> db) {
this.self = self; this.self = self;
this.db = db; this.db = db;
} }
@@ -76,9 +78,9 @@ public class SetDiffPreferences implements RestModifyView<AccountResource, Input
Account.Id accountId = rsrc.getUser().getAccountId(); Account.Id accountId = rsrc.getUser().getAccountId();
AccountDiffPreference p; AccountDiffPreference p;
db.accounts().beginTransaction(accountId); db.get().accounts().beginTransaction(accountId);
try { try {
p = db.accountDiffPreferences().get(accountId); p = db.get().accountDiffPreferences().get(accountId);
if (p == null) { if (p == null) {
p = new AccountDiffPreference(accountId); p = new AccountDiffPreference(accountId);
} }
@@ -141,10 +143,10 @@ public class SetDiffPreferences implements RestModifyView<AccountResource, Input
p.setHideEmptyPane(input.hideEmptyPane); p.setHideEmptyPane(input.hideEmptyPane);
} }
db.accountDiffPreferences().upsert(Collections.singleton(p)); db.get().accountDiffPreferences().upsert(Collections.singleton(p));
db.commit(); db.get().commit();
} finally { } finally {
db.rollback(); db.get().rollback();
} }
return DiffPreferencesInfo.parse(p); return DiffPreferencesInfo.parse(p);
} }

View File

@@ -41,6 +41,7 @@ import com.google.gerrit.server.git.MetaDataUpdate;
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.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
@@ -49,6 +50,7 @@ import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@Singleton
public class SetPreferences implements RestModifyView<AccountResource, Input> { public class SetPreferences implements RestModifyView<AccountResource, Input> {
public static class Input { public static class Input {
public Short changesPerPage; public Short changesPerPage;
@@ -72,13 +74,14 @@ public class SetPreferences implements RestModifyView<AccountResource, Input> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
private final AccountCache cache; private final AccountCache cache;
private final ReviewDb db; private final Provider<ReviewDb> db;
private final MetaDataUpdate.User metaDataUpdateFactory; private final MetaDataUpdate.User metaDataUpdateFactory;
private final AllUsersName allUsersName; private final AllUsersName allUsersName;
@Inject @Inject
SetPreferences(Provider<CurrentUser> self, AccountCache cache, ReviewDb db, SetPreferences(Provider<CurrentUser> self, AccountCache cache,
MetaDataUpdate.User metaDataUpdateFactory, AllUsersName allUsersName) { Provider<ReviewDb> db, MetaDataUpdate.User metaDataUpdateFactory,
AllUsersName allUsersName) {
this.self = self; this.self = self;
this.cache = cache; this.cache = cache;
this.db = db; this.db = db;
@@ -102,9 +105,9 @@ public class SetPreferences implements RestModifyView<AccountResource, Input> {
AccountGeneralPreferences p; AccountGeneralPreferences p;
VersionedAccountPreferences versionedPrefs; VersionedAccountPreferences versionedPrefs;
MetaDataUpdate md = metaDataUpdateFactory.create(allUsersName); MetaDataUpdate md = metaDataUpdateFactory.create(allUsersName);
db.accounts().beginTransaction(accountId); db.get().accounts().beginTransaction(accountId);
try { try {
Account a = db.accounts().get(accountId); Account a = db.get().accounts().get(accountId);
if (a == null) { if (a == null) {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }
@@ -167,8 +170,8 @@ public class SetPreferences implements RestModifyView<AccountResource, Input> {
p.setChangeScreen(i.changeScreen); p.setChangeScreen(i.changeScreen);
} }
db.accounts().update(Collections.singleton(a)); db.get().accounts().update(Collections.singleton(a));
db.commit(); db.get().commit();
storeMyMenus(versionedPrefs, i.my); storeMyMenus(versionedPrefs, i.my);
versionedPrefs.commit(md); versionedPrefs.commit(md);
cache.evict(accountId); cache.evict(accountId);
@@ -177,7 +180,7 @@ public class SetPreferences implements RestModifyView<AccountResource, Input> {
md.getRepository()); md.getRepository());
} finally { } finally {
md.close(); md.close();
db.rollback(); db.get().rollback();
} }
} }

View File

@@ -26,7 +26,9 @@ import com.google.gerrit.server.IdentifiedUser;
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;
@Singleton
public class SshKeys implements public class SshKeys implements
ChildCollection<AccountResource, AccountResource.SshKey> { ChildCollection<AccountResource, AccountResource.SshKey> {
private final DynamicMap<RestView<AccountResource.SshKey>> views; private final DynamicMap<RestView<AccountResource.SshKey>> views;

View File

@@ -38,12 +38,14 @@ import com.google.gwtorm.server.OrmDuplicateKeyException;
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;
import java.util.Collections; import java.util.Collections;
@Singleton
public class StarredChanges implements public class StarredChanges implements
ChildCollection<AccountResource, AccountResource.StarredChange>, ChildCollection<AccountResource, AccountResource.StarredChange>,
AcceptsCreate<AccountResource> { AcceptsCreate<AccountResource> {
@@ -112,6 +114,7 @@ public class StarredChanges implements
} }
} }
@Singleton
public static class Create implements RestModifyView<AccountResource, EmptyInput> { public static class Create implements RestModifyView<AccountResource, EmptyInput> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;
@@ -146,6 +149,7 @@ public class StarredChanges implements
} }
} }
@Singleton
static class Put implements static class Put implements
RestModifyView<AccountResource.StarredChange, EmptyInput> { RestModifyView<AccountResource.StarredChange, EmptyInput> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
@@ -165,6 +169,7 @@ public class StarredChanges implements
} }
} }
@Singleton
public static class Delete implements public static class Delete implements
RestModifyView<AccountResource.StarredChange, EmptyInput> { RestModifyView<AccountResource.StarredChange, EmptyInput> {
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;

View File

@@ -20,7 +20,9 @@ import com.google.gerrit.extensions.api.changes.Changes;
import com.google.gerrit.extensions.api.projects.Projects; import com.google.gerrit.extensions.api.projects.Projects;
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;
@Singleton
class GerritApiImpl extends GerritApi.NotImplemented implements GerritApi { class GerritApiImpl extends GerritApi.NotImplemented implements GerritApi {
private final Provider<Accounts> accounts; private final Provider<Accounts> accounts;
private final Provider<Changes> changes; private final Provider<Changes> changes;

View File

@@ -27,7 +27,9 @@ import com.google.gerrit.server.account.AccountsCollection;
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;
@Singleton
public class AccountsImpl extends Accounts.NotImplemented implements Accounts { public class AccountsImpl extends Accounts.NotImplemented implements Accounts {
private final AccountsCollection accounts; private final AccountsCollection accounts;
private final AccountApiImpl.Factory api; private final AccountApiImpl.Factory api;

View File

@@ -38,10 +38,12 @@ import com.google.gerrit.server.query.change.QueryChanges;
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.List; import java.util.List;
@Singleton
class ChangesImpl implements Changes { class ChangesImpl implements Changes {
private final ChangesCollection changes; private final ChangesCollection changes;
private final ChangeApiImpl.Factory api; private final ChangeApiImpl.Factory api;

View File

@@ -24,10 +24,12 @@ import com.google.gerrit.server.project.ListProjects;
import com.google.gerrit.server.project.ProjectsCollection; import com.google.gerrit.server.project.ProjectsCollection;
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.List; import java.util.List;
@Singleton
class ProjectsImpl extends Projects.NotImplemented implements Projects { class ProjectsImpl extends Projects.NotImplemented implements Projects {
private final ProjectsCollection projects; private final ProjectsCollection projects;
private final ProjectApiImpl.Factory api; private final ProjectApiImpl.Factory api;

View File

@@ -32,10 +32,12 @@ import com.google.gerrit.server.query.change.QueryChanges;
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.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@Singleton
public class ChangesCollection implements public class ChangesCollection implements
RestCollection<TopLevelResource, ChangeResource>, RestCollection<TopLevelResource, ChangeResource>,
AcceptsPost<TopLevelResource> { AcceptsPost<TopLevelResource> {

View File

@@ -22,6 +22,7 @@ import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.GerritPersonIdent;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.events.CommitReceivedEvent; import com.google.gerrit.server.events.CommitReceivedEvent;
@@ -39,6 +40,8 @@ import com.google.gerrit.server.ssh.NoSshInfo;
import com.google.gerrit.server.util.TimeUtil; import com.google.gerrit.server.util.TimeUtil;
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.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;
@@ -57,30 +60,34 @@ import org.eclipse.jgit.util.ChangeIdUtil;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.TimeZone;
@Singleton
public class CherryPickChange { public class CherryPickChange {
private static final FooterKey CHANGE_ID = new FooterKey("Change-Id"); private static final FooterKey CHANGE_ID = new FooterKey("Change-Id");
private final ReviewDb db; private final Provider<ReviewDb> db;
private final GitRepositoryManager gitManager; private final GitRepositoryManager gitManager;
private final PersonIdent myIdent; private final TimeZone serverTimeZone;
private final IdentifiedUser currentUser; private final Provider<CurrentUser> currentUser;
private final CommitValidators.Factory commitValidatorsFactory; private final CommitValidators.Factory commitValidatorsFactory;
private final ChangeInserter.Factory changeInserterFactory; private final ChangeInserter.Factory changeInserterFactory;
private final PatchSetInserter.Factory patchSetInserterFactory; private final PatchSetInserter.Factory patchSetInserterFactory;
final MergeUtil.Factory mergeUtilFactory; final MergeUtil.Factory mergeUtilFactory;
@Inject @Inject
CherryPickChange(final ReviewDb db, @GerritPersonIdent final PersonIdent myIdent, CherryPickChange(final Provider<ReviewDb> db,
final GitRepositoryManager gitManager, final IdentifiedUser currentUser, @GerritPersonIdent final PersonIdent myIdent,
final GitRepositoryManager gitManager,
final Provider<CurrentUser> currentUser,
final CommitValidators.Factory commitValidatorsFactory, final CommitValidators.Factory commitValidatorsFactory,
final ChangeInserter.Factory changeInserterFactory, final ChangeInserter.Factory changeInserterFactory,
final PatchSetInserter.Factory patchSetInserterFactory, final PatchSetInserter.Factory patchSetInserterFactory,
final MergeUtil.Factory mergeUtilFactory) { final MergeUtil.Factory mergeUtilFactory) {
this.db = db; this.db = db;
this.gitManager = gitManager; this.gitManager = gitManager;
this.myIdent = myIdent; this.serverTimeZone = myIdent.getTimeZone();
this.currentUser = currentUser; this.currentUser = currentUser;
this.commitValidatorsFactory = commitValidatorsFactory; this.commitValidatorsFactory = commitValidatorsFactory;
this.changeInserterFactory = changeInserterFactory; this.changeInserterFactory = changeInserterFactory;
@@ -96,7 +103,7 @@ public class CherryPickChange {
InvalidChangeOperationException, MergeException { InvalidChangeOperationException, MergeException {
final Change.Id changeId = patchSetId.getParentKey(); final Change.Id changeId = patchSetId.getParentKey();
final PatchSet patch = db.patchSets().get(patchSetId); final PatchSet patch = db.get().patchSets().get(patchSetId);
if (patch == null) { if (patch == null) {
throw new NoSuchChangeException(changeId); throw new NoSuchChangeException(changeId);
} }
@@ -105,7 +112,8 @@ public class CherryPickChange {
"Cherry Pick: Destination branch cannot be null or empty"); "Cherry Pick: Destination branch cannot be null or empty");
} }
Project.NameKey project = db.changes().get(changeId).getProject(); Project.NameKey project = db.get().changes().get(changeId).getProject();
IdentifiedUser identifiedUser = (IdentifiedUser) currentUser.get();
final Repository git; final Repository git;
try { try {
git = gitManager.openRepository(project); git = gitManager.openRepository(project);
@@ -128,13 +136,13 @@ public class CherryPickChange {
revWalk.parseCommit(ObjectId.fromString(patch.getRevision().get())); revWalk.parseCommit(ObjectId.fromString(patch.getRevision().get()));
PersonIdent committerIdent = PersonIdent committerIdent =
currentUser.newCommitterIdent(myIdent.getWhen(), identifiedUser.newCommitterIdent(TimeUtil.nowTs(),
myIdent.getTimeZone()); serverTimeZone);
final ObjectId computedChangeId = final ObjectId computedChangeId =
ChangeIdUtil ChangeIdUtil
.computeChangeId(commitToCherryPick.getTree(), mergeTip, .computeChangeId(commitToCherryPick.getTree(), mergeTip,
commitToCherryPick.getAuthorIdent(), myIdent, message); commitToCherryPick.getAuthorIdent(), committerIdent, message);
String commitMessage = String commitMessage =
ChangeIdUtil.insertId(message, computedChangeId).trim() + '\n'; ChangeIdUtil.insertId(message, computedChangeId).trim() + '\n';
@@ -163,9 +171,9 @@ public class CherryPickChange {
} }
List<Change> destChanges = List<Change> destChanges =
db.changes() db.get().changes()
.byBranchKey( .byBranchKey(
new Branch.NameKey(db.changes().get(changeId).getProject(), new Branch.NameKey(db.get().changes().get(changeId).getProject(),
destRef.getName()), changeKey).toList(); destRef.getName()), changeKey).toList();
if (destChanges.size() > 1) { if (destChanges.size() > 1) {
@@ -176,12 +184,12 @@ public class CherryPickChange {
// The change key exists on the destination branch. The cherry pick // The change key exists on the destination branch. The cherry pick
// will be added as a new patch set. // will be added as a new patch set.
return insertPatchSet(git, revWalk, destChanges.get(0), patchSetId, return insertPatchSet(git, revWalk, destChanges.get(0), patchSetId,
cherryPickCommit, refControl, currentUser); cherryPickCommit, refControl, identifiedUser);
} else { } else {
// Change key not found on destination branch. We can create a new // Change key not found on destination branch. We can create a new
// change. // change.
return createNewChange(git, revWalk, changeKey, project, patchSetId, destRef, return createNewChange(git, revWalk, changeKey, project, patchSetId, destRef,
cherryPickCommit, refControl); cherryPickCommit, refControl, identifiedUser);
} }
} finally { } finally {
revWalk.release(); revWalk.release();
@@ -193,7 +201,7 @@ public class CherryPickChange {
private Change.Id insertPatchSet(Repository git, RevWalk revWalk, Change change, private Change.Id insertPatchSet(Repository git, RevWalk revWalk, Change change,
PatchSet.Id patchSetId, RevCommit cherryPickCommit, PatchSet.Id patchSetId, RevCommit cherryPickCommit,
RefControl refControl, IdentifiedUser uploader) RefControl refControl, IdentifiedUser identifiedUser)
throws InvalidChangeOperationException, IOException, OrmException, throws InvalidChangeOperationException, IOException, OrmException,
NoSuchChangeException { NoSuchChangeException {
final ChangeControl changeControl = final ChangeControl changeControl =
@@ -201,11 +209,11 @@ public class CherryPickChange {
final PatchSetInserter inserter = patchSetInserterFactory final PatchSetInserter inserter = patchSetInserterFactory
.create(git, revWalk, changeControl, cherryPickCommit); .create(git, revWalk, changeControl, cherryPickCommit);
final PatchSet.Id newPatchSetId = inserter.getPatchSetId(); final PatchSet.Id newPatchSetId = inserter.getPatchSetId();
final PatchSet current = db.patchSets().get(change.currentPatchSetId()); PatchSet current = db.get().patchSets().get(change.currentPatchSetId());
inserter inserter
.setMessage("Uploaded patch set " + newPatchSetId.get() + ".") .setMessage("Uploaded patch set " + newPatchSetId.get() + ".")
.setDraft(current.isDraft()) .setDraft(current.isDraft())
.setUploader(uploader.getAccountId()) .setUploader(identifiedUser.getAccountId())
.setCopyLabels(true) .setCopyLabels(true)
.insert(); .insert();
return change.getId(); return change.getId();
@@ -213,11 +221,12 @@ public class CherryPickChange {
private Change.Id createNewChange(Repository git, RevWalk revWalk, private Change.Id createNewChange(Repository git, RevWalk revWalk,
Change.Key changeKey, Project.NameKey project, PatchSet.Id patchSetId, Change.Key changeKey, Project.NameKey project, PatchSet.Id patchSetId,
Ref destRef, RevCommit cherryPickCommit, RefControl refControl) Ref destRef, RevCommit cherryPickCommit, RefControl refControl,
IdentifiedUser identifiedUser)
throws OrmException, InvalidChangeOperationException, IOException { throws OrmException, InvalidChangeOperationException, IOException {
Change change = Change change =
new Change(changeKey, new Change.Id(db.nextChangeId()), new Change(changeKey, new Change.Id(db.get().nextChangeId()),
currentUser.getAccountId(), new Branch.NameKey(project, identifiedUser.getAccountId(), new Branch.NameKey(project,
destRef.getName()), TimeUtil.nowTs()); destRef.getName()), TimeUtil.nowTs());
ChangeInserter ins = ChangeInserter ins =
changeInserterFactory.create(refControl, change, cherryPickCommit); changeInserterFactory.create(refControl, change, cherryPickCommit);
@@ -229,7 +238,7 @@ public class CherryPickChange {
new CommitReceivedEvent(new ReceiveCommand(ObjectId.zeroId(), new CommitReceivedEvent(new ReceiveCommand(ObjectId.zeroId(),
cherryPickCommit.getId(), newPatchSet.getRefName()), refControl cherryPickCommit.getId(), newPatchSet.getRefName()), refControl
.getProjectControl().getProject(), refControl.getRefName(), .getProjectControl().getProject(), refControl.getRefName(),
cherryPickCommit, currentUser); cherryPickCommit, identifiedUser);
try { try {
commitValidators.validateForGerritCommits(commitReceivedEvent); commitValidators.validateForGerritCommits(commitReceivedEvent);
@@ -247,18 +256,20 @@ public class CherryPickChange {
change.getDest().getParentKey().get(), ru.getResult())); change.getDest().getParentKey().get(), ru.getResult()));
} }
ins.setMessage(buildChangeMessage(patchSetId, change, cherryPickCommit)) ins.setMessage(buildChangeMessage(patchSetId, change, cherryPickCommit,
identifiedUser))
.insert(); .insert();
return change.getId(); return change.getId();
} }
private ChangeMessage buildChangeMessage(PatchSet.Id patchSetId, Change dest, private ChangeMessage buildChangeMessage(PatchSet.Id patchSetId, Change dest,
RevCommit cherryPickCommit) throws OrmException { RevCommit cherryPickCommit, IdentifiedUser identifiedUser)
throws OrmException {
ChangeMessage cmsg = new ChangeMessage( ChangeMessage cmsg = new ChangeMessage(
new ChangeMessage.Key( new ChangeMessage.Key(
patchSetId.getParentKey(), ChangeUtil.messageUUID(db)), patchSetId.getParentKey(), ChangeUtil.messageUUID(db.get())),
currentUser.getAccountId(), TimeUtil.nowTs(), patchSetId); identifiedUser.getAccountId(), TimeUtil.nowTs(), patchSetId);
String destBranchName = dest.getDest().get(); String destBranchName = dest.getDest().get();
StringBuilder msgBuf = new StringBuilder("Patch Set ") StringBuilder msgBuf = new StringBuilder("Patch Set ")
.append(patchSetId.get()) .append(patchSetId.get())

View File

@@ -24,7 +24,9 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
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;
@Singleton
class Comments implements ChildCollection<RevisionResource, CommentResource> { class Comments implements ChildCollection<RevisionResource, CommentResource> {
private final DynamicMap<RestView<CommentResource>> views; private final DynamicMap<RestView<CommentResource>> views;
private final Provider<ListComments> list; private final Provider<ListComments> list;

View File

@@ -47,6 +47,7 @@ import com.google.gerrit.server.util.TimeUtil;
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.CommitBuilder; import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.Constants;
@@ -67,6 +68,7 @@ import java.sql.Timestamp;
import java.util.List; import java.util.List;
import java.util.TimeZone; import java.util.TimeZone;
@Singleton
public class CreateChange implements public class CreateChange implements
RestModifyView<TopLevelResource, ChangeInfo> { RestModifyView<TopLevelResource, ChangeInfo> {

View File

@@ -29,9 +29,11 @@ import com.google.gerrit.server.util.TimeUtil;
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.util.Collections; import java.util.Collections;
@Singleton
class CreateDraft implements RestModifyView<RevisionResource, Input> { class CreateDraft implements RestModifyView<RevisionResource, Input> {
private final Provider<ReviewDb> db; private final Provider<ReviewDb> db;

View File

@@ -21,9 +21,11 @@ import com.google.gerrit.server.change.DeleteDraft.Input;
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.util.Collections; import java.util.Collections;
@Singleton
class DeleteDraft implements RestModifyView<DraftResource, Input> { class DeleteDraft implements RestModifyView<DraftResource, Input> {
static class Input { static class Input {
} }

View File

@@ -37,11 +37,13 @@ import com.google.gerrit.server.util.TimeUtil;
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;
import java.util.List; import java.util.List;
@Singleton
public class DeleteReviewer implements RestModifyView<ReviewerResource, Input> { public class DeleteReviewer implements RestModifyView<ReviewerResource, Input> {
public static class Input { public static class Input {
} }

View File

@@ -26,7 +26,9 @@ import com.google.gerrit.server.CurrentUser;
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;
@Singleton
class Drafts implements ChildCollection<RevisionResource, DraftResource> { class Drafts implements ChildCollection<RevisionResource, DraftResource> {
private final DynamicMap<RestView<DraftResource>> views; private final DynamicMap<RestView<DraftResource>> views;
private final Provider<CurrentUser> user; private final Provider<CurrentUser> user;

View File

@@ -18,7 +18,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.account.AccountInfo; import com.google.gerrit.server.account.AccountInfo;
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;
@Singleton
class GetComment implements RestReadView<CommentResource> { class GetComment implements RestReadView<CommentResource> {
private final AccountInfo.Loader.Factory accountLoaderFactory; private final AccountInfo.Loader.Factory accountLoaderFactory;

View File

@@ -22,9 +22,11 @@ import com.google.gerrit.extensions.restapi.RestReadView;
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.Singleton;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Singleton
public class GetCommit implements RestReadView<RevisionResource> { public class GetCommit implements RestReadView<RevisionResource> {
private final ChangeJson json; private final ChangeJson json;

View File

@@ -20,6 +20,7 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
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 org.eclipse.jgit.lib.ObjectLoader; import org.eclipse.jgit.lib.ObjectLoader;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
@@ -30,6 +31,7 @@ import org.eclipse.jgit.treewalk.TreeWalk;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@Singleton
public class GetContent implements RestReadView<FileResource> { public class GetContent implements RestReadView<FileResource> {
private final GitRepositoryManager repoManager; private final GitRepositoryManager repoManager;

View File

@@ -15,7 +15,9 @@
package com.google.gerrit.server.change; package com.google.gerrit.server.change;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
class GetDraft implements RestReadView<DraftResource> { class GetDraft implements RestReadView<DraftResource> {
@Override @Override
public CommentInfo apply(DraftResource rsrc) { public CommentInfo apply(DraftResource rsrc) {

View File

@@ -34,6 +34,7 @@ import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.ResultSet; import com.google.gwtorm.server.ResultSet;
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.IncorrectObjectTypeException; import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -57,6 +58,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@Singleton
public class GetRelated implements RestReadView<RevisionResource> { public class GetRelated implements RestReadView<RevisionResource> {
private static final Logger log = LoggerFactory.getLogger(GetRelated.class); private static final Logger log = LoggerFactory.getLogger(GetRelated.class);

View File

@@ -20,7 +20,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
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;
@Singleton
public class GetReview implements RestReadView<RevisionResource> { public class GetReview implements RestReadView<RevisionResource> {
private final GetChange delegate; private final GetChange delegate;

View File

@@ -18,9 +18,11 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.change.ReviewerJson.ReviewerInfo; import com.google.gerrit.server.change.ReviewerJson.ReviewerInfo;
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 java.util.List; import java.util.List;
@Singleton
public class GetReviewer implements RestReadView<ReviewerResource> { public class GetReviewer implements RestReadView<ReviewerResource> {
private final ReviewerJson json; private final ReviewerJson json;

View File

@@ -16,7 +16,9 @@ package com.google.gerrit.server.change;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
class GetTopic implements RestReadView<ChangeResource> { class GetTopic implements RestReadView<ChangeResource> {
@Override @Override
public String apply(ChangeResource rsrc) { public String apply(ChangeResource rsrc) {

View File

@@ -24,6 +24,7 @@ import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.ChangeControl; import com.google.gerrit.server.project.ChangeControl;
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.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.errors.MissingObjectException;
@@ -37,11 +38,11 @@ import java.util.Collection;
class IncludedIn implements RestReadView<ChangeResource> { class IncludedIn implements RestReadView<ChangeResource> {
private final ReviewDb db; private final Provider<ReviewDb> db;
private final GitRepositoryManager repoManager; private final GitRepositoryManager repoManager;
@Inject @Inject
IncludedIn(ReviewDb db, GitRepositoryManager repoManager) { IncludedIn(Provider<ReviewDb> db, GitRepositoryManager repoManager) {
this.db = db; this.db = db;
this.repoManager = repoManager; this.repoManager = repoManager;
} }
@@ -51,7 +52,7 @@ class IncludedIn implements RestReadView<ChangeResource> {
ResourceConflictException, OrmException, IOException { ResourceConflictException, OrmException, IOException {
ChangeControl ctl = rsrc.getControl(); ChangeControl ctl = rsrc.getControl();
PatchSet ps = PatchSet ps =
db.patchSets().get(ctl.getChange().currentPatchSetId()); db.get().patchSets().get(ctl.getChange().currentPatchSetId());
Repository r = Repository r =
repoManager.openRepository(ctl.getProject().getNameKey()); repoManager.openRepository(ctl.getProject().getNameKey());
try { try {

View File

@@ -23,10 +23,12 @@ import com.google.gerrit.server.change.Index.Input;
import com.google.gerrit.server.index.ChangeIndexer; import com.google.gerrit.server.index.ChangeIndexer;
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;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
public class Index implements RestModifyView<ChangeResource, Input> { public class Index implements RestModifyView<ChangeResource, Input> {
public static class Input { public static class Input {
} }

View File

@@ -36,6 +36,7 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountCache;
import com.google.gerrit.server.account.AccountInfo; import com.google.gerrit.server.account.AccountInfo;
@@ -54,6 +55,7 @@ import com.google.gerrit.server.project.NoSuchProjectException;
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 org.slf4j.Logger; import org.slf4j.Logger;
@@ -65,6 +67,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@Singleton
public class PostReviewers implements RestModifyView<ChangeResource, AddReviewerInput> { public class PostReviewers implements RestModifyView<ChangeResource, AddReviewerInput> {
private static final Logger log = LoggerFactory private static final Logger log = LoggerFactory
.getLogger(PostReviewers.class); .getLogger(PostReviewers.class);
@@ -81,7 +84,7 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
private final AccountInfo.Loader.Factory accountLoaderFactory; private final AccountInfo.Loader.Factory accountLoaderFactory;
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;
private final ChangeUpdate.Factory updateFactory; private final ChangeUpdate.Factory updateFactory;
private final IdentifiedUser currentUser; private final Provider<CurrentUser> currentUser;
private final IdentifiedUser.GenericFactory identifiedUserFactory; private final IdentifiedUser.GenericFactory identifiedUserFactory;
private final Config cfg; private final Config cfg;
private final ChangeHooks hooks; private final ChangeHooks hooks;
@@ -99,7 +102,7 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
AccountInfo.Loader.Factory accountLoaderFactory, AccountInfo.Loader.Factory accountLoaderFactory,
Provider<ReviewDb> db, Provider<ReviewDb> db,
ChangeUpdate.Factory updateFactory, ChangeUpdate.Factory updateFactory,
IdentifiedUser currentUser, Provider<CurrentUser> currentUser,
IdentifiedUser.GenericFactory identifiedUserFactory, IdentifiedUser.GenericFactory identifiedUserFactory,
@GerritServerConfig Config cfg, @GerritServerConfig Config cfg,
ChangeHooks hooks, ChangeHooks hooks,
@@ -268,15 +271,16 @@ public class PostReviewers implements RestModifyView<ChangeResource, AddReviewer
// //
// The user knows they added themselves, don't bother emailing them. // The user knows they added themselves, don't bother emailing them.
List<Account.Id> toMail = Lists.newArrayListWithCapacity(added.size()); List<Account.Id> toMail = Lists.newArrayListWithCapacity(added.size());
IdentifiedUser identifiedUser = (IdentifiedUser) currentUser.get();
for (PatchSetApproval psa : added) { for (PatchSetApproval psa : added) {
if (!psa.getAccountId().equals(currentUser.getAccountId())) { if (!psa.getAccountId().equals(identifiedUser.getAccountId())) {
toMail.add(psa.getAccountId()); toMail.add(psa.getAccountId());
} }
} }
if (!toMail.isEmpty()) { if (!toMail.isEmpty()) {
try { try {
AddReviewerSender cm = addReviewerSenderFactory.create(change); AddReviewerSender cm = addReviewerSenderFactory.create(change);
cm.setFrom(currentUser.getAccountId()); cm.setFrom(identifiedUser.getAccountId());
cm.addReviewers(toMail); cm.addReviewers(toMail);
cm.send(); cm.send();
} catch (Exception err) { } catch (Exception err) {

View File

@@ -29,10 +29,12 @@ import com.google.gerrit.server.util.TimeUtil;
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.sql.Timestamp; import java.sql.Timestamp;
import java.util.Collections; import java.util.Collections;
@Singleton
class PutDraft implements RestModifyView<DraftResource, Input> { class PutDraft implements RestModifyView<DraftResource, Input> {
static class Input { static class Input {
String kind; String kind;

View File

@@ -22,6 +22,7 @@ import com.google.gwtorm.server.OrmDuplicateKeyException;
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.util.Collections; import java.util.Collections;
@@ -29,6 +30,7 @@ class Reviewed {
static class Input { static class Input {
} }
@Singleton
static class PutReviewed implements RestModifyView<FileResource, Input> { static class PutReviewed implements RestModifyView<FileResource, Input> {
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;
@@ -57,6 +59,7 @@ class Reviewed {
} }
} }
@Singleton
static class DeleteReviewed implements RestModifyView<FileResource, Input> { static class DeleteReviewed implements RestModifyView<FileResource, Input> {
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;

View File

@@ -35,12 +35,14 @@ import com.google.gerrit.server.query.change.ChangeData;
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.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
@Singleton
public class ReviewerJson { public class ReviewerJson {
private final Provider<ReviewDb> db; private final Provider<ReviewDb> db;
private final ChangeData.Factory changeDataFactory; private final ChangeData.Factory changeDataFactory;

View File

@@ -28,9 +28,11 @@ import com.google.gerrit.server.account.AccountsCollection;
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.util.Collection; import java.util.Collection;
@Singleton
public class Reviewers implements public class Reviewers implements
ChildCollection<ChangeResource, ReviewerResource> { ChildCollection<ChangeResource, ReviewerResource> {
private final DynamicMap<RestView<ReviewerResource>> views; private final DynamicMap<RestView<ReviewerResource>> views;

View File

@@ -27,10 +27,12 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
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.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@Singleton
public class Revisions implements ChildCollection<ChangeResource, RevisionResource> { public class Revisions implements ChildCollection<ChangeResource, RevisionResource> {
private final DynamicMap<RestView<RevisionResource>> views; private final DynamicMap<RestView<RevisionResource>> views;
private final Provider<ReviewDb> dbProvider; private final Provider<ReviewDb> dbProvider;

View File

@@ -37,6 +37,7 @@ import com.google.gerrit.server.project.SubmitRuleEvaluator;
import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.query.change.ChangeData;
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.googlecode.prolog_cafe.lang.Term; import com.googlecode.prolog_cafe.lang.Term;
@@ -57,7 +58,7 @@ public class TestSubmitRule implements RestModifyView<RevisionResource, Input> {
public Filters filters; public Filters filters;
} }
private final ReviewDb db; private final Provider<ReviewDb> db;
private final ChangeData.Factory changeDataFactory; private final ChangeData.Factory changeDataFactory;
private final RulesCache rules; private final RulesCache rules;
private final AccountInfo.Loader.Factory accountInfoFactory; private final AccountInfo.Loader.Factory accountInfoFactory;
@@ -66,7 +67,7 @@ public class TestSubmitRule implements RestModifyView<RevisionResource, Input> {
private Filters filters = Filters.RUN; private Filters filters = Filters.RUN;
@Inject @Inject
TestSubmitRule(ReviewDb db, TestSubmitRule(Provider<ReviewDb> db,
ChangeData.Factory changeDataFactory, ChangeData.Factory changeDataFactory,
RulesCache rules, RulesCache rules,
AccountInfo.Loader.Factory infoFactory) { AccountInfo.Loader.Factory infoFactory) {
@@ -88,12 +89,12 @@ public class TestSubmitRule implements RestModifyView<RevisionResource, Input> {
input.filters = Objects.firstNonNull(input.filters, filters); input.filters = Objects.firstNonNull(input.filters, filters);
SubmitRuleEvaluator evaluator = new SubmitRuleEvaluator( SubmitRuleEvaluator evaluator = new SubmitRuleEvaluator(
db, db.get(),
rsrc.getPatchSet(), rsrc.getPatchSet(),
rsrc.getControl().getProjectControl(), rsrc.getControl().getProjectControl(),
rsrc.getControl(), rsrc.getControl(),
rsrc.getChange(), rsrc.getChange(),
changeDataFactory.create(db, rsrc.getChange()), changeDataFactory.create(db.get(), rsrc.getChange()),
false, false,
"locate_submit_rule", "can_submit", "locate_submit_rule", "can_submit",
"locate_submit_filter", "filter_submit_results", "locate_submit_filter", "filter_submit_results",

View File

@@ -30,6 +30,7 @@ import com.google.gerrit.server.project.RuleEvalException;
import com.google.gerrit.server.project.SubmitRuleEvaluator; import com.google.gerrit.server.project.SubmitRuleEvaluator;
import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.query.change.ChangeData;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider;
import com.googlecode.prolog_cafe.lang.SymbolTerm; import com.googlecode.prolog_cafe.lang.SymbolTerm;
import com.googlecode.prolog_cafe.lang.Term; import com.googlecode.prolog_cafe.lang.Term;
@@ -40,7 +41,7 @@ import java.io.ByteArrayInputStream;
import java.util.List; import java.util.List;
public class TestSubmitType implements RestModifyView<RevisionResource, Input> { public class TestSubmitType implements RestModifyView<RevisionResource, Input> {
private final ReviewDb db; private final Provider<ReviewDb> db;
private final ChangeData.Factory changeDataFactory; private final ChangeData.Factory changeDataFactory;
private final RulesCache rules; private final RulesCache rules;
@@ -48,7 +49,7 @@ public class TestSubmitType implements RestModifyView<RevisionResource, Input> {
private Filters filters = Filters.RUN; private Filters filters = Filters.RUN;
@Inject @Inject
TestSubmitType(ReviewDb db, TestSubmitType(Provider<ReviewDb> db,
ChangeData.Factory changeDataFactory, ChangeData.Factory changeDataFactory,
RulesCache rules) { RulesCache rules) {
this.db = db; this.db = db;
@@ -68,12 +69,12 @@ public class TestSubmitType implements RestModifyView<RevisionResource, Input> {
input.filters = Objects.firstNonNull(input.filters, filters); input.filters = Objects.firstNonNull(input.filters, filters);
SubmitRuleEvaluator evaluator = new SubmitRuleEvaluator( SubmitRuleEvaluator evaluator = new SubmitRuleEvaluator(
db, db.get(),
rsrc.getPatchSet(), rsrc.getPatchSet(),
rsrc.getControl().getProjectControl(), rsrc.getControl().getProjectControl(),
rsrc.getControl(), rsrc.getControl(),
rsrc.getChange(), rsrc.getChange(),
changeDataFactory.create(db, rsrc.getChange()), changeDataFactory.create(db.get(), rsrc.getChange()),
false, false,
"locate_submit_type", "get_submit_type", "locate_submit_type", "get_submit_type",
"locate_submit_type_filter", "filter_submit_type_results", "locate_submit_type_filter", "filter_submit_type_results",

View File

@@ -14,8 +14,6 @@
package com.google.gerrit.server.changedetail; package com.google.gerrit.server.changedetail;
import static com.google.gerrit.server.change.PatchSetInserter.ValidatePolicy;
import com.google.gerrit.common.errors.EmailException; import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
@@ -29,6 +27,7 @@ import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.GerritPersonIdent;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.change.PatchSetInserter; import com.google.gerrit.server.change.PatchSetInserter;
import com.google.gerrit.server.change.PatchSetInserter.ValidatePolicy;
import com.google.gerrit.server.change.RevisionResource; import com.google.gerrit.server.change.RevisionResource;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MergeUtil; import com.google.gerrit.server.git.MergeUtil;
@@ -38,6 +37,8 @@ import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.util.TimeUtil; import com.google.gerrit.server.util.TimeUtil;
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.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;
@@ -52,18 +53,20 @@ import org.eclipse.jgit.revwalk.RevWalk;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.TimeZone;
@Singleton
public class RebaseChange { public class RebaseChange {
private final ChangeControl.GenericFactory changeControlFactory; private final ChangeControl.GenericFactory changeControlFactory;
private final ReviewDb db; private final Provider<ReviewDb> db;
private final GitRepositoryManager gitManager; private final GitRepositoryManager gitManager;
private final PersonIdent myIdent; private final TimeZone serverTimeZone;
private final MergeUtil.Factory mergeUtilFactory; private final MergeUtil.Factory mergeUtilFactory;
private final PatchSetInserter.Factory patchSetInserterFactory; private final PatchSetInserter.Factory patchSetInserterFactory;
@Inject @Inject
RebaseChange(final ChangeControl.GenericFactory changeControlFactory, RebaseChange(final ChangeControl.GenericFactory changeControlFactory,
final ReviewDb db, final Provider<ReviewDb> db,
@GerritPersonIdent final PersonIdent myIdent, @GerritPersonIdent final PersonIdent myIdent,
final GitRepositoryManager gitManager, final GitRepositoryManager gitManager,
final MergeUtil.Factory mergeUtilFactory, final MergeUtil.Factory mergeUtilFactory,
@@ -71,7 +74,7 @@ public class RebaseChange {
this.changeControlFactory = changeControlFactory; this.changeControlFactory = changeControlFactory;
this.db = db; this.db = db;
this.gitManager = gitManager; this.gitManager = gitManager;
this.myIdent = myIdent; this.serverTimeZone = myIdent.getTimeZone();
this.mergeUtilFactory = mergeUtilFactory; this.mergeUtilFactory = mergeUtilFactory;
this.patchSetInserterFactory = patchSetInserterFactory; this.patchSetInserterFactory = patchSetInserterFactory;
} }
@@ -122,14 +125,14 @@ public class RebaseChange {
rw = new RevWalk(git); rw = new RevWalk(git);
inserter = git.newObjectInserter(); inserter = git.newObjectInserter();
final String baseRev = findBaseRevision(patchSetId, db, final String baseRev = findBaseRevision(patchSetId, db.get(),
change.getDest(), git, null, null, null); change.getDest(), git, null, null, null);
final RevCommit baseCommit = final RevCommit baseCommit =
rw.parseCommit(ObjectId.fromString(baseRev)); rw.parseCommit(ObjectId.fromString(baseRev));
PersonIdent committerIdent = PersonIdent committerIdent =
uploader.newCommitterIdent(myIdent.getWhen(), uploader.newCommitterIdent(TimeUtil.nowTs(),
myIdent.getTimeZone()); serverTimeZone);
rebase(git, rw, inserter, patchSetId, change, rebase(git, rw, inserter, patchSetId, change,
uploader, baseCommit, mergeUtilFactory.create( uploader, baseCommit, mergeUtilFactory.create(
@@ -282,7 +285,7 @@ public class RebaseChange {
if (!change.currentPatchSetId().equals(patchSetId)) { if (!change.currentPatchSetId().equals(patchSetId)) {
throw new InvalidChangeOperationException("patch set is not current"); throw new InvalidChangeOperationException("patch set is not current");
} }
final PatchSet originalPatchSet = db.patchSets().get(patchSetId); final PatchSet originalPatchSet = db.get().patchSets().get(patchSetId);
final RevCommit rebasedCommit; final RevCommit rebasedCommit;
ObjectId oldId = ObjectId.fromString(originalPatchSet.getRevision().get()); ObjectId oldId = ObjectId.fromString(originalPatchSet.getRevision().get());
@@ -305,8 +308,9 @@ public class RebaseChange {
final PatchSet.Id newPatchSetId = patchSetInserter.getPatchSetId(); final PatchSet.Id newPatchSetId = patchSetInserter.getPatchSetId();
final ChangeMessage cmsg = new ChangeMessage( final ChangeMessage cmsg = new ChangeMessage(
new ChangeMessage.Key(change.getId(), ChangeUtil.messageUUID(db)), new ChangeMessage.Key(change.getId(),
uploader.getAccountId(), TimeUtil.nowTs(), patchSetId); ChangeUtil.messageUUID(db.get())), uploader.getAccountId(),
TimeUtil.nowTs(), patchSetId);
cmsg.setMessage("Patch Set " + newPatchSetId.get() cmsg.setMessage("Patch Set " + newPatchSetId.get()
+ ": Patch Set " + patchSetId.get() + " was rebased"); + ": Patch Set " + patchSetId.get() + " was rebased");
@@ -315,7 +319,7 @@ public class RebaseChange {
.setMessage(cmsg) .setMessage(cmsg)
.insert(); .insert();
return db.patchSets().get(newChange.currentPatchSetId()); return db.get().patchSets().get(newChange.currentPatchSetId());
} }
/** /**
@@ -375,7 +379,7 @@ public class RebaseChange {
try { try {
findBaseRevision( findBaseRevision(
r.getPatchSet().getId(), r.getPatchSet().getId(),
db, db.get(),
r.getChange().getDest(), r.getChange().getDest(),
git, git,
null, null,

View File

@@ -21,7 +21,9 @@ import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.extensions.restapi.RestView; import com.google.gerrit.extensions.restapi.RestView;
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;
@Singleton
public class CapabilitiesCollection implements public class CapabilitiesCollection implements
ChildCollection<ConfigResource, CapabilityResource> { ChildCollection<ConfigResource, CapabilityResource> {
private final DynamicMap<RestView<CapabilityResource>> views; private final DynamicMap<RestView<CapabilityResource>> views;

View File

@@ -19,12 +19,14 @@ import com.google.gerrit.server.account.GetPreferences.PreferenceInfo;
import com.google.gerrit.server.account.VersionedAccountPreferences; import com.google.gerrit.server.account.VersionedAccountPreferences;
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 org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
import java.io.IOException; import java.io.IOException;
@Singleton
public class GetPreferences implements RestReadView<ConfigResource> { public class GetPreferences implements RestReadView<ConfigResource> {
private final AllUsersName allUsersName; private final AllUsersName allUsersName;
private final GitRepositoryManager gitMgr; private final GitRepositoryManager gitMgr;

View File

@@ -17,7 +17,9 @@ package com.google.gerrit.server.config;
import com.google.gerrit.common.Version; import com.google.gerrit.common.Version;
import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
public class GetVersion implements RestReadView<ConfigResource> { public class GetVersion implements RestReadView<ConfigResource> {
@Override @Override
public String apply(ConfigResource resource) throws ResourceNotFoundException { public String apply(ConfigResource resource) throws ResourceNotFoundException {

View File

@@ -23,12 +23,14 @@ import com.google.gerrit.server.account.SetPreferences.Input;
import com.google.gerrit.server.account.VersionedAccountPreferences; import com.google.gerrit.server.account.VersionedAccountPreferences;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import java.io.IOException; import java.io.IOException;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
public class SetPreferences implements RestModifyView<ConfigResource, Input> { public class SetPreferences implements RestModifyView<ConfigResource, Input> {
private final MetaDataUpdate.User metaDataUpdateFactory; private final MetaDataUpdate.User metaDataUpdateFactory;
private final AllUsersName allUsersName; private final AllUsersName allUsersName;

View File

@@ -21,7 +21,9 @@ import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.extensions.restapi.RestView; import com.google.gerrit.extensions.restapi.RestView;
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;
@Singleton
class TopMenuCollection implements class TopMenuCollection implements
ChildCollection<ConfigResource, TopMenuResource> { ChildCollection<ConfigResource, TopMenuResource> {
private final DynamicMap<RestView<TopMenuResource>> views; private final DynamicMap<RestView<TopMenuResource>> views;

View File

@@ -38,10 +38,12 @@ import com.google.gerrit.server.util.TimeUtil;
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.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Singleton
public class AddIncludedGroups implements RestModifyView<GroupResource, Input> { public class AddIncludedGroups implements RestModifyView<GroupResource, Input> {
public static class Input { public static class Input {
@DefaultInput @DefaultInput
@@ -71,13 +73,13 @@ public class AddIncludedGroups implements RestModifyView<GroupResource, Input> {
private final Provider<GroupsCollection> groupsCollection; private final Provider<GroupsCollection> groupsCollection;
private final GroupIncludeCache groupIncludeCache; private final GroupIncludeCache groupIncludeCache;
private final ReviewDb db; private final Provider<ReviewDb> db;
private final GroupJson json; private final GroupJson json;
@Inject @Inject
public AddIncludedGroups(Provider<GroupsCollection> groupsCollection, public AddIncludedGroups(Provider<GroupsCollection> groupsCollection,
GroupIncludeCache groupIncludeCache, GroupIncludeCache groupIncludeCache,
ReviewDb db, GroupJson json) { Provider<ReviewDb> db, GroupJson json) {
this.groupsCollection = groupsCollection; this.groupsCollection = groupsCollection;
this.groupIncludeCache = groupIncludeCache; this.groupIncludeCache = groupIncludeCache;
this.db = db; this.db = db;
@@ -111,7 +113,7 @@ public class AddIncludedGroups implements RestModifyView<GroupResource, Input> {
AccountGroupById.Key agiKey = AccountGroupById.Key agiKey =
new AccountGroupById.Key(group.getId(), new AccountGroupById.Key(group.getId(),
d.getGroupUUID()); d.getGroupUUID());
AccountGroupById agi = db.accountGroupById().get(agiKey); AccountGroupById agi = db.get().accountGroupById().get(agiKey);
if (agi == null) { if (agi == null) {
agi = new AccountGroupById(agiKey); agi = new AccountGroupById(agiKey);
newIncludedGroups.put(d.getGroupUUID(), agi); newIncludedGroups.put(d.getGroupUUID(), agi);
@@ -123,8 +125,8 @@ public class AddIncludedGroups implements RestModifyView<GroupResource, Input> {
} }
if (!newIncludedGroups.isEmpty()) { if (!newIncludedGroups.isEmpty()) {
db.accountGroupByIdAud().insert(newIncludedGroupsAudits); db.get().accountGroupByIdAud().insert(newIncludedGroupsAudits);
db.accountGroupById().insert(newIncludedGroups.values()); db.get().accountGroupById().insert(newIncludedGroups.values());
for (AccountGroupById agi : newIncludedGroups.values()) { for (AccountGroupById agi : newIncludedGroups.values()) {
groupIncludeCache.evictMemberIn(agi.getIncludeUUID()); groupIncludeCache.evictMemberIn(agi.getIncludeUUID());
} }
@@ -134,6 +136,7 @@ public class AddIncludedGroups implements RestModifyView<GroupResource, Input> {
return result; return result;
} }
@Singleton
static class PutIncludedGroup implements RestModifyView<GroupResource, PutIncludedGroup.Input> { static class PutIncludedGroup implements RestModifyView<GroupResource, PutIncludedGroup.Input> {
static class Input { static class Input {
} }
@@ -160,6 +163,7 @@ public class AddIncludedGroups implements RestModifyView<GroupResource, Input> {
} }
} }
@Singleton
static class UpdateIncludedGroup implements RestModifyView<IncludedGroupResource, PutIncludedGroup.Input> { static class UpdateIncludedGroup implements RestModifyView<IncludedGroupResource, PutIncludedGroup.Input> {
static class Input { static class Input {
} }

View File

@@ -43,10 +43,12 @@ import com.google.gerrit.server.util.TimeUtil;
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.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Singleton
public class AddMembers implements RestModifyView<GroupResource, Input> { public class AddMembers implements RestModifyView<GroupResource, Input> {
public static class Input { public static class Input {
@DefaultInput @DefaultInput
@@ -79,7 +81,7 @@ public class AddMembers implements RestModifyView<GroupResource, Input> {
private final AccountResolver accountResolver; private final AccountResolver accountResolver;
private final AccountCache accountCache; private final AccountCache accountCache;
private final AccountInfo.Loader.Factory infoFactory; private final AccountInfo.Loader.Factory infoFactory;
private final ReviewDb db; private final Provider<ReviewDb> db;
@Inject @Inject
AddMembers(AccountManager accountManager, AddMembers(AccountManager accountManager,
@@ -88,7 +90,7 @@ public class AddMembers implements RestModifyView<GroupResource, Input> {
AccountResolver accountResolver, AccountResolver accountResolver,
AccountCache accountCache, AccountCache accountCache,
AccountInfo.Loader.Factory infoFactory, AccountInfo.Loader.Factory infoFactory,
ReviewDb db) { Provider<ReviewDb> db) {
this.accountManager = accountManager; this.accountManager = accountManager;
this.authType = authConfig.getAuthType(); this.authType = authConfig.getAuthType();
this.accounts = accounts; this.accounts = accounts;
@@ -129,7 +131,7 @@ public class AddMembers implements RestModifyView<GroupResource, Input> {
if (!newAccountGroupMembers.containsKey(a.getId())) { if (!newAccountGroupMembers.containsKey(a.getId())) {
AccountGroupMember.Key key = AccountGroupMember.Key key =
new AccountGroupMember.Key(a.getId(), internalGroup.getId()); new AccountGroupMember.Key(a.getId(), internalGroup.getId());
AccountGroupMember m = db.accountGroupMembers().get(key); AccountGroupMember m = db.get().accountGroupMembers().get(key);
if (m == null) { if (m == null) {
m = new AccountGroupMember(key); m = new AccountGroupMember(key);
newAccountGroupMembers.put(m.getAccountId(), m); newAccountGroupMembers.put(m.getAccountId(), m);
@@ -140,8 +142,8 @@ public class AddMembers implements RestModifyView<GroupResource, Input> {
result.add(loader.get(a.getId())); result.add(loader.get(a.getId()));
} }
db.accountGroupMembersAudit().insert(newAccountGroupMemberAudits); db.get().accountGroupMembersAudit().insert(newAccountGroupMemberAudits);
db.accountGroupMembers().insert(newAccountGroupMembers.values()); db.get().accountGroupMembers().insert(newAccountGroupMembers.values());
for (AccountGroupMember m : newAccountGroupMembers.values()) { for (AccountGroupMember m : newAccountGroupMembers.values()) {
accountCache.evict(m.getAccountId()); accountCache.evict(m.getAccountId());
} }
@@ -213,6 +215,7 @@ public class AddMembers implements RestModifyView<GroupResource, Input> {
} }
} }
@Singleton
static class UpdateMember implements RestModifyView<MemberResource, PutMember.Input> { static class UpdateMember implements RestModifyView<MemberResource, PutMember.Input> {
static class Input { static class Input {
} }

View File

@@ -37,19 +37,22 @@ import com.google.gerrit.server.util.TimeUtil;
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.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Singleton
public class DeleteIncludedGroups implements RestModifyView<GroupResource, Input> { public class DeleteIncludedGroups implements RestModifyView<GroupResource, Input> {
private final Provider<GroupsCollection> groupsCollection; private final Provider<GroupsCollection> groupsCollection;
private final GroupIncludeCache groupIncludeCache; private final GroupIncludeCache groupIncludeCache;
private final ReviewDb db; private final Provider<ReviewDb> db;
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
@Inject @Inject
DeleteIncludedGroups(Provider<GroupsCollection> groupsCollection, DeleteIncludedGroups(Provider<GroupsCollection> groupsCollection,
GroupIncludeCache groupIncludeCache, ReviewDb db, GroupIncludeCache groupIncludeCache,
Provider<ReviewDb> db,
Provider<CurrentUser> self) { Provider<CurrentUser> self) {
this.groupsCollection = groupsCollection; this.groupsCollection = groupsCollection;
this.groupIncludeCache = groupIncludeCache; this.groupIncludeCache = groupIncludeCache;
@@ -86,7 +89,7 @@ public class DeleteIncludedGroups implements RestModifyView<GroupResource, Input
if (!toRemove.isEmpty()) { if (!toRemove.isEmpty()) {
writeAudits(toRemove); writeAudits(toRemove);
db.accountGroupById().delete(toRemove); db.get().accountGroupById().delete(toRemove);
for (final AccountGroupById g : toRemove) { for (final AccountGroupById g : toRemove) {
groupIncludeCache.evictMemberIn(g.getIncludeUUID()); groupIncludeCache.evictMemberIn(g.getIncludeUUID());
} }
@@ -100,7 +103,7 @@ public class DeleteIncludedGroups implements RestModifyView<GroupResource, Input
final AccountGroup.Id groupId) throws OrmException { final AccountGroup.Id groupId) throws OrmException {
final Map<AccountGroup.UUID, AccountGroupById> groups = final Map<AccountGroup.UUID, AccountGroupById> groups =
Maps.newHashMap(); Maps.newHashMap();
for (final AccountGroupById g : db.accountGroupById().byGroup(groupId)) { for (AccountGroupById g : db.get().accountGroupById().byGroup(groupId)) {
groups.put(g.getIncludeUUID(), g); groups.put(g.getIncludeUUID(), g);
} }
return groups; return groups;
@@ -112,7 +115,7 @@ public class DeleteIncludedGroups implements RestModifyView<GroupResource, Input
final List<AccountGroupByIdAud> auditUpdates = Lists.newLinkedList(); final List<AccountGroupByIdAud> auditUpdates = Lists.newLinkedList();
for (final AccountGroupById g : toBeRemoved) { for (final AccountGroupById g : toBeRemoved) {
AccountGroupByIdAud audit = null; AccountGroupByIdAud audit = null;
for (AccountGroupByIdAud a : db for (AccountGroupByIdAud a : db.get()
.accountGroupByIdAud().byGroupInclude(g.getGroupId(), .accountGroupByIdAud().byGroupInclude(g.getGroupId(),
g.getIncludeUUID())) { g.getIncludeUUID())) {
if (a.isActive()) { if (a.isActive()) {
@@ -126,9 +129,10 @@ public class DeleteIncludedGroups implements RestModifyView<GroupResource, Input
auditUpdates.add(audit); auditUpdates.add(audit);
} }
} }
db.accountGroupByIdAud().update(auditUpdates); db.get().accountGroupByIdAud().update(auditUpdates);
} }
@Singleton
static class DeleteIncludedGroup implements static class DeleteIncludedGroup implements
RestModifyView<IncludedGroupResource, DeleteIncludedGroup.Input> { RestModifyView<IncludedGroupResource, DeleteIncludedGroup.Input> {
static class Input { static class Input {

View File

@@ -36,19 +36,22 @@ import com.google.gerrit.server.util.TimeUtil;
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.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Singleton
public class DeleteMembers implements RestModifyView<GroupResource, Input> { public class DeleteMembers implements RestModifyView<GroupResource, Input> {
private final Provider<AccountsCollection> accounts; private final Provider<AccountsCollection> accounts;
private final AccountCache accountCache; private final AccountCache accountCache;
private final ReviewDb db; private final Provider<ReviewDb> db;
private final Provider<CurrentUser> self; private final Provider<CurrentUser> self;
@Inject @Inject
DeleteMembers(Provider<AccountsCollection> accounts, DeleteMembers(Provider<AccountsCollection> accounts,
AccountCache accountCache, ReviewDb db, Provider<CurrentUser> self) { AccountCache accountCache, Provider<ReviewDb> db,
Provider<CurrentUser> self) {
this.accounts = accounts; this.accounts = accounts;
this.accountCache = accountCache; this.accountCache = accountCache;
this.db = db; this.db = db;
@@ -83,7 +86,7 @@ public class DeleteMembers implements RestModifyView<GroupResource, Input> {
} }
writeAudits(toRemove); writeAudits(toRemove);
db.accountGroupMembers().delete(toRemove); db.get().accountGroupMembers().delete(toRemove);
for (final AccountGroupMember m : toRemove) { for (final AccountGroupMember m : toRemove) {
accountCache.evict(m.getAccountId()); accountCache.evict(m.getAccountId());
} }
@@ -98,7 +101,7 @@ public class DeleteMembers implements RestModifyView<GroupResource, Input> {
final List<AccountGroupMemberAudit> auditInserts = Lists.newLinkedList(); final List<AccountGroupMemberAudit> auditInserts = Lists.newLinkedList();
for (final AccountGroupMember m : toBeRemoved) { for (final AccountGroupMember m : toBeRemoved) {
AccountGroupMemberAudit audit = null; AccountGroupMemberAudit audit = null;
for (AccountGroupMemberAudit a : db.accountGroupMembersAudit() for (AccountGroupMemberAudit a : db.get().accountGroupMembersAudit()
.byGroupAccount(m.getAccountGroupId(), m.getAccountId())) { .byGroupAccount(m.getAccountGroupId(), m.getAccountId())) {
if (a.isActive()) { if (a.isActive()) {
audit = a; audit = a;
@@ -115,19 +118,21 @@ public class DeleteMembers implements RestModifyView<GroupResource, Input> {
auditInserts.add(audit); auditInserts.add(audit);
} }
} }
db.accountGroupMembersAudit().update(auditUpdates); db.get().accountGroupMembersAudit().update(auditUpdates);
db.accountGroupMembersAudit().insert(auditInserts); db.get().accountGroupMembersAudit().insert(auditInserts);
} }
private Map<Account.Id, AccountGroupMember> getMembers( private Map<Account.Id, AccountGroupMember> getMembers(
final AccountGroup.Id groupId) throws OrmException { final AccountGroup.Id groupId) throws OrmException {
final Map<Account.Id, AccountGroupMember> members = Maps.newHashMap(); final Map<Account.Id, AccountGroupMember> members = Maps.newHashMap();
for (final AccountGroupMember m : db.accountGroupMembers().byGroup(groupId)) { for (final AccountGroupMember m : db.get().accountGroupMembers()
.byGroup(groupId)) {
members.put(m.getAccountId(), m); members.put(m.getAccountId(), m);
} }
return members; return members;
} }
@Singleton
static class DeleteMember implements RestModifyView<MemberResource, DeleteMember.Input> { static class DeleteMember implements RestModifyView<MemberResource, DeleteMember.Input> {
static class Input { static class Input {
} }

View File

@@ -18,7 +18,9 @@ import com.google.common.base.Strings;
import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.inject.Singleton;
@Singleton
class GetDescription implements RestReadView<GroupResource> { class GetDescription implements RestReadView<GroupResource> {
@Override @Override
public String apply(GroupResource resource) throws MethodNotAllowedException { public String apply(GroupResource resource) throws MethodNotAllowedException {

View File

@@ -19,7 +19,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.group.GroupJson.GroupInfo; import com.google.gerrit.server.group.GroupJson.GroupInfo;
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;
@Singleton
public class GetDetail implements RestReadView<GroupResource> { public class GetDetail implements RestReadView<GroupResource> {
private final GroupJson json; private final GroupJson json;

View File

@@ -18,7 +18,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.group.GroupJson.GroupInfo; import com.google.gerrit.server.group.GroupJson.GroupInfo;
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;
@Singleton
class GetGroup implements RestReadView<GroupResource> { class GetGroup implements RestReadView<GroupResource> {
private final GroupJson json; private final GroupJson json;

View File

@@ -18,7 +18,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.group.GroupJson.GroupInfo; import com.google.gerrit.server.group.GroupJson.GroupInfo;
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;
@Singleton
public class GetIncludedGroup implements RestReadView<IncludedGroupResource> { public class GetIncludedGroup implements RestReadView<IncludedGroupResource> {
private final GroupJson json; private final GroupJson json;

View File

@@ -18,7 +18,9 @@ import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.account.AccountInfo; import com.google.gerrit.server.account.AccountInfo;
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;
@Singleton
public class GetMember implements RestReadView<MemberResource> { public class GetMember implements RestReadView<MemberResource> {
private final AccountInfo.Loader.Factory infoFactory; private final AccountInfo.Loader.Factory infoFactory;

View File

@@ -15,7 +15,9 @@
package com.google.gerrit.server.group; package com.google.gerrit.server.group;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
public class GetName implements RestReadView<GroupResource> { public class GetName implements RestReadView<GroupResource> {
@Override @Override

View File

@@ -15,7 +15,9 @@
package com.google.gerrit.server.group; package com.google.gerrit.server.group;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.inject.Singleton;
@Singleton
public class GetOptions implements RestReadView<GroupResource> { public class GetOptions implements RestReadView<GroupResource> {
@Override @Override

View File

@@ -23,7 +23,9 @@ import com.google.gerrit.server.account.GroupControl;
import com.google.gerrit.server.group.GroupJson.GroupInfo; import com.google.gerrit.server.group.GroupJson.GroupInfo;
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;
@Singleton
public class GetOwner implements RestReadView<GroupResource> { public class GetOwner implements RestReadView<GroupResource> {
private final GroupControl.Factory controlFactory; private final GroupControl.Factory controlFactory;

View File

@@ -35,7 +35,9 @@ import com.google.gerrit.server.account.GroupBackends;
import com.google.gerrit.server.account.GroupControl; import com.google.gerrit.server.account.GroupControl;
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;
@Singleton
public class GroupsCollection implements public class GroupsCollection implements
RestCollection<TopLevelResource, GroupResource>, RestCollection<TopLevelResource, GroupResource>,
AcceptsCreate<TopLevelResource> { AcceptsCreate<TopLevelResource> {

View File

@@ -31,7 +31,9 @@ import com.google.gerrit.server.group.AddIncludedGroups.PutIncludedGroup;
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;
@Singleton
public class IncludedGroupsCollection implements public class IncludedGroupsCollection implements
ChildCollection<GroupResource, IncludedGroupResource>, ChildCollection<GroupResource, IncludedGroupResource>,
AcceptsCreate<GroupResource> { AcceptsCreate<GroupResource> {

View File

@@ -27,6 +27,7 @@ import com.google.gerrit.server.group.GroupJson.GroupInfo;
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;
@@ -34,6 +35,7 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
@Singleton
public class ListIncludedGroups implements RestReadView<GroupResource> { public class ListIncludedGroups implements RestReadView<GroupResource> {
private static final Logger log = org.slf4j.LoggerFactory.getLogger(ListIncludedGroups.class); private static final Logger log = org.slf4j.LoggerFactory.getLogger(ListIncludedGroups.class);

View File

@@ -31,7 +31,9 @@ import com.google.gerrit.server.group.AddMembers.PutMember;
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;
@Singleton
public class MembersCollection implements public class MembersCollection implements
ChildCollection<GroupResource, MemberResource>, ChildCollection<GroupResource, MemberResource>,
AcceptsCreate<GroupResource> { AcceptsCreate<GroupResource> {

View File

@@ -27,9 +27,12 @@ import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.group.PutDescription.Input; import com.google.gerrit.server.group.PutDescription.Input;
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.Singleton;
import java.util.Collections; import java.util.Collections;
@Singleton
public class PutDescription implements RestModifyView<GroupResource, Input> { public class PutDescription implements RestModifyView<GroupResource, Input> {
public static class Input { public static class Input {
@DefaultInput @DefaultInput
@@ -37,10 +40,10 @@ public class PutDescription implements RestModifyView<GroupResource, Input> {
} }
private final GroupCache groupCache; private final GroupCache groupCache;
private final ReviewDb db; private final Provider<ReviewDb> db;
@Inject @Inject
PutDescription(GroupCache groupCache, ReviewDb db) { PutDescription(GroupCache groupCache, Provider<ReviewDb> db) {
this.groupCache = groupCache; this.groupCache = groupCache;
this.db = db; this.db = db;
} }
@@ -59,14 +62,14 @@ public class PutDescription implements RestModifyView<GroupResource, Input> {
throw new AuthException("Not group owner"); throw new AuthException("Not group owner");
} }
AccountGroup group = db.accountGroups().get( AccountGroup group = db.get().accountGroups().get(
resource.toAccountGroup().getId()); resource.toAccountGroup().getId());
if (group == null) { if (group == null) {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }
group.setDescription(Strings.emptyToNull(input.description)); group.setDescription(Strings.emptyToNull(input.description));
db.accountGroups().update(Collections.singleton(group)); db.get().accountGroups().update(Collections.singleton(group));
groupCache.evict(group); groupCache.evict(group);
return Strings.isNullOrEmpty(input.description) return Strings.isNullOrEmpty(input.description)

View File

@@ -18,7 +18,9 @@ import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.server.group.CreateGroup.Input; import com.google.gerrit.server.group.CreateGroup.Input;
import com.google.inject.Singleton;
@Singleton
public class PutGroup implements RestModifyView<GroupResource, Input> { public class PutGroup implements RestModifyView<GroupResource, Input> {
@Override @Override
public Response<?> apply(GroupResource resource, Input input) public Response<?> apply(GroupResource resource, Input input)

View File

@@ -29,7 +29,9 @@ import com.google.gerrit.server.account.PerformRenameGroup;
import com.google.gerrit.server.group.PutName.Input; import com.google.gerrit.server.group.PutName.Input;
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;
@Singleton
public class PutName implements RestModifyView<GroupResource, Input> { public class PutName implements RestModifyView<GroupResource, Input> {
public static class Input { public static class Input {
@DefaultInput @DefaultInput

View File

@@ -25,19 +25,22 @@ import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.group.PutOptions.Input; import com.google.gerrit.server.group.PutOptions.Input;
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.Singleton;
import java.util.Collections; import java.util.Collections;
@Singleton
public class PutOptions implements RestModifyView<GroupResource, Input> { public class PutOptions implements RestModifyView<GroupResource, Input> {
public static class Input { public static class Input {
public Boolean visibleToAll; public Boolean visibleToAll;
} }
private final GroupCache groupCache; private final GroupCache groupCache;
private final ReviewDb db; private final Provider<ReviewDb> db;
@Inject @Inject
PutOptions(GroupCache groupCache, ReviewDb db) { PutOptions(GroupCache groupCache, Provider<ReviewDb> db) {
this.groupCache = groupCache; this.groupCache = groupCache;
this.db = db; this.db = db;
} }
@@ -59,14 +62,14 @@ public class PutOptions implements RestModifyView<GroupResource, Input> {
input.visibleToAll = false; input.visibleToAll = false;
} }
AccountGroup group = db.accountGroups().get( AccountGroup group = db.get().accountGroups().get(
resource.toAccountGroup().getId()); resource.toAccountGroup().getId());
if (group == null) { if (group == null) {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }
group.setVisibleToAll(input.visibleToAll); group.setVisibleToAll(input.visibleToAll);
db.accountGroups().update(Collections.singleton(group)); db.get().accountGroups().update(Collections.singleton(group));
groupCache.evict(group); groupCache.evict(group);
return new GroupOptionsInfo(group); return new GroupOptionsInfo(group);

View File

@@ -31,9 +31,11 @@ import com.google.gerrit.server.group.PutOwner.Input;
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.util.Collections; import java.util.Collections;
@Singleton
public class PutOwner implements RestModifyView<GroupResource, Input> { public class PutOwner implements RestModifyView<GroupResource, Input> {
public static class Input { public static class Input {
@DefaultInput @DefaultInput
@@ -42,12 +44,12 @@ public class PutOwner implements RestModifyView<GroupResource, Input> {
private final Provider<GroupsCollection> groupsCollection; private final Provider<GroupsCollection> groupsCollection;
private final GroupCache groupCache; private final GroupCache groupCache;
private final ReviewDb db; private final Provider<ReviewDb> db;
private final GroupJson json; private final GroupJson json;
@Inject @Inject
PutOwner(Provider<GroupsCollection> groupsCollection, GroupCache groupCache, PutOwner(Provider<GroupsCollection> groupsCollection, GroupCache groupCache,
ReviewDb db, GroupJson json) { Provider<ReviewDb> db, GroupJson json) {
this.groupsCollection = groupsCollection; this.groupsCollection = groupsCollection;
this.groupCache = groupCache; this.groupCache = groupCache;
this.db = db; this.db = db;
@@ -70,7 +72,7 @@ public class PutOwner implements RestModifyView<GroupResource, Input> {
throw new BadRequestException("owner is required"); throw new BadRequestException("owner is required");
} }
group = db.accountGroups().get(group.getId()); group = db.get().accountGroups().get(group.getId());
if (group == null) { if (group == null) {
throw new ResourceNotFoundException(); throw new ResourceNotFoundException();
} }
@@ -78,7 +80,7 @@ public class PutOwner implements RestModifyView<GroupResource, Input> {
GroupDescription.Basic owner = groupsCollection.get().parse(input.owner); GroupDescription.Basic owner = groupsCollection.get().parse(input.owner);
if (!group.getOwnerGroupUUID().equals(owner.getGroupUUID())) { if (!group.getOwnerGroupUUID().equals(owner.getGroupUUID())) {
group.setOwnerGroupUUID(owner.getGroupUUID()); group.setOwnerGroupUUID(owner.getGroupUUID());
db.accountGroups().update(Collections.singleton(group)); db.get().accountGroups().update(Collections.singleton(group));
groupCache.evict(group); groupCache.evict(group);
} }
return json.format(owner); return json.format(owner);

View File

@@ -22,8 +22,10 @@ import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.server.plugins.DisablePlugin.Input; import com.google.gerrit.server.plugins.DisablePlugin.Input;
import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.gerrit.server.plugins.ListPlugins.PluginInfo;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
class DisablePlugin implements RestModifyView<PluginResource, Input> { class DisablePlugin implements RestModifyView<PluginResource, Input> {
static class Input { static class Input {
} }

View File

@@ -23,11 +23,13 @@ import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.server.plugins.EnablePlugin.Input; import com.google.gerrit.server.plugins.EnablePlugin.Input;
import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.gerrit.server.plugins.ListPlugins.PluginInfo;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
class EnablePlugin implements RestModifyView<PluginResource, Input> { class EnablePlugin implements RestModifyView<PluginResource, Input> {
static class Input { static class Input {
} }

View File

@@ -16,7 +16,9 @@ package com.google.gerrit.server.plugins;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.gerrit.server.plugins.ListPlugins.PluginInfo;
import com.google.inject.Singleton;
@Singleton
class GetStatus implements RestReadView<PluginResource> { class GetStatus implements RestReadView<PluginResource> {
@Override @Override
public PluginInfo apply(PluginResource resource) { public PluginInfo apply(PluginResource resource) {

View File

@@ -24,7 +24,9 @@ import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.TopLevelResource;
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;
@Singleton
public class PluginsCollection implements public class PluginsCollection implements
RestCollection<TopLevelResource, PluginResource>, RestCollection<TopLevelResource, PluginResource>,
AcceptsCreate<TopLevelResource> { AcceptsCreate<TopLevelResource> {

View File

@@ -22,11 +22,13 @@ import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.gerrit.server.plugins.ListPlugins.PluginInfo;
import com.google.gerrit.server.plugins.ReloadPlugin.Input; import com.google.gerrit.server.plugins.ReloadPlugin.Input;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
class ReloadPlugin implements RestModifyView<PluginResource, Input> { class ReloadPlugin implements RestModifyView<PluginResource, Input> {
static class Input { static class Input {
} }

View File

@@ -23,12 +23,14 @@ import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.server.project.ListBranches.BranchInfo; import com.google.gerrit.server.project.ListBranches.BranchInfo;
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.Constants; import org.eclipse.jgit.lib.Constants;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@Singleton
public class BranchesCollection implements public class BranchesCollection implements
ChildCollection<ProjectResource, BranchResource>, ChildCollection<ProjectResource, BranchResource>,
AcceptsCreate<ProjectResource> { AcceptsCreate<ProjectResource> {

View File

@@ -23,9 +23,11 @@ import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.TopLevelResource;
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 ChildProjectsCollection implements public class ChildProjectsCollection implements
ChildCollection<ProjectResource, ChildProjectResource> { ChildCollection<ProjectResource, ChildProjectResource> {
private final Provider<ListChildProjects> list; private final Provider<ListChildProjects> list;

View File

@@ -37,6 +37,7 @@ import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
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.AmbiguousObjectException; import org.eclipse.jgit.errors.AmbiguousObjectException;
import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -51,9 +52,10 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.List; import java.util.List;
@Singleton
class DashboardsCollection implements class DashboardsCollection implements
ChildCollection<ProjectResource, DashboardResource>, ChildCollection<ProjectResource, DashboardResource>,
AcceptsCreate<ProjectResource>{ AcceptsCreate<ProjectResource> {
private final GitRepositoryManager gitManager; private final GitRepositoryManager gitManager;
private final DynamicMap<RestView<DashboardResource>> views; private final DynamicMap<RestView<DashboardResource>> views;
private final Provider<ListDashboards> list; private final Provider<ListDashboards> list;

View File

@@ -27,6 +27,7 @@ import com.google.gerrit.server.project.DeleteBranch.Input;
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.RefUpdate; import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
@@ -35,6 +36,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException; import java.io.IOException;
@Singleton
public class DeleteBranch implements RestModifyView<BranchResource, Input>{ public class DeleteBranch implements RestModifyView<BranchResource, Input>{
private static final Logger log = LoggerFactory.getLogger(DeleteBranch.class); private static final Logger log = LoggerFactory.getLogger(DeleteBranch.class);

View File

@@ -25,9 +25,11 @@ import com.google.gerrit.server.project.DashboardsCollection.DashboardInfo;
import com.google.gerrit.server.project.DeleteDashboard.Input; import com.google.gerrit.server.project.DeleteDashboard.Input;
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
class DeleteDashboard implements RestModifyView<DashboardResource, Input> { class DeleteDashboard implements RestModifyView<DashboardResource, Input> {
static class Input { static class Input {
String commitMessage; String commitMessage;

View File

@@ -21,7 +21,9 @@ import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.extensions.restapi.RestView; import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.server.project.BranchResource; import com.google.gerrit.server.project.BranchResource;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class FilesCollection implements public class FilesCollection implements
ChildCollection<BranchResource, FileResource> { ChildCollection<BranchResource, FileResource> {
private final DynamicMap<RestView<FileResource>> views; private final DynamicMap<RestView<FileResource>> views;

View File

@@ -16,7 +16,9 @@ package com.google.gerrit.server.project;
import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.server.project.ListBranches.BranchInfo; import com.google.gerrit.server.project.ListBranches.BranchInfo;
import com.google.inject.Singleton;
@Singleton
public class GetBranch implements RestReadView<BranchResource> { public class GetBranch implements RestReadView<BranchResource> {
@Override @Override

View File

@@ -24,7 +24,9 @@ import com.google.gerrit.server.config.ProjectConfigEntry;
import com.google.gerrit.server.git.TransferConfig; import com.google.gerrit.server.git.TransferConfig;
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;
@Singleton
public class GetConfig implements RestReadView<ProjectResource> { public class GetConfig implements RestReadView<ProjectResource> {
private final TransferConfig config; private final TransferConfig config;

Some files were not shown because too many files have changed in this diff Show More