Reduce visibility and move REST endpoints to singleton scope

Change-Id: Id5819facb591d548df9febf288e38065949128ec
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/AddSshKey.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/AddSshKey.java
index 6549578..07e65d1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/AddSshKey.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/AddSshKey.java
@@ -23,10 +23,12 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import java.io.IOException;
 
-public class AddSshKey implements RestModifyView<ServiceUserResource, Input> {
+@Singleton
+class AddSshKey implements RestModifyView<ServiceUserResource, Input> {
   private final Provider<com.google.gerrit.server.account.AddSshKey> addSshKey;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
index 585fbad..b0ebf64 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUser.java
@@ -70,7 +70,7 @@
 import java.util.Locale;
 
 @RequiresCapability(CreateServiceUserCapability.ID)
-public class CreateServiceUser implements RestModifyView<ConfigResource, Input> {
+class CreateServiceUser implements RestModifyView<ConfigResource, Input> {
   private static final Logger log =
       LoggerFactory.getLogger(CreateServiceUser.class);
 
@@ -86,7 +86,7 @@
     String email;
   }
 
-  public static interface Factory {
+  interface Factory {
     CreateServiceUser create(String username);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCapability.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCapability.java
index 79e5adf..ae782ec 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCapability.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCapability.java
@@ -16,7 +16,7 @@
 
 import com.google.gerrit.extensions.config.CapabilityDefinition;
 
-public class CreateServiceUserCapability extends CapabilityDefinition {
+class CreateServiceUserCapability extends CapabilityDefinition {
 
   public final static String ID = "createServiceUser";
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCommand.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCommand.java
index d86c93e..feccb9e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/CreateServiceUserCommand.java
@@ -32,7 +32,7 @@
 
 @RequiresCapability(CreateServiceUserCapability.ID)
 @CommandMetaData(name = "create", description = "Create Service User")
-public class CreateServiceUserCommand extends SshCommand {
+class CreateServiceUserCommand extends SshCommand {
 
   @Argument(index = 0, required = true, metaVar = "USERNAME", usage = "name of the service user")
   private String username;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteActive.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteActive.java
index c034838..814b80f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteActive.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteActive.java
@@ -21,8 +21,10 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class DeleteActive implements RestModifyView<ServiceUserResource, Input> {
+@Singleton
+class DeleteActive implements RestModifyView<ServiceUserResource, Input> {
   private final Provider<com.google.gerrit.server.account.DeleteActive> deleteActive;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteSshKey.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteSshKey.java
index 84feaa4..5823cf2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteSshKey.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/DeleteSshKey.java
@@ -21,8 +21,10 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class DeleteSshKey implements
+@Singleton
+class DeleteSshKey implements
     RestModifyView<ServiceUserResource.SshKey, Input> {
   private final Provider<com.google.gerrit.server.account.DeleteSshKey> deleteSshKey;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java
index 5640a5b..d279cc7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetActive.java
@@ -17,8 +17,10 @@
 import com.google.gerrit.extensions.restapi.RestReadView;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class GetActive implements RestReadView<ServiceUserResource> {
+@Singleton
+class GetActive implements RestReadView<ServiceUserResource> {
   private final Provider<com.google.gerrit.server.account.GetActive> getActive;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
index e545e87..ece878d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
@@ -27,6 +27,7 @@
 import com.google.gerrit.server.group.GroupJson.GroupInfo;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,7 +37,8 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-public class GetConfig implements RestReadView<ConfigResource> {
+@Singleton
+class GetConfig implements RestReadView<ConfigResource> {
   private static final Logger log = LoggerFactory.getLogger(GetConfig.class);
 
   private final PluginConfig cfg;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java
index 60d3710..0fd97da 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetEmail.java
@@ -15,8 +15,10 @@
 package com.googlesource.gerrit.plugins.serviceuser;
 
 import com.google.gerrit.extensions.restapi.RestReadView;
+import com.google.inject.Singleton;
 
-public class GetEmail implements RestReadView<ServiceUserResource> {
+@Singleton
+class GetEmail implements RestReadView<ServiceUserResource> {
 
   @Override
   public String apply(ServiceUserResource rsrc) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java
index b7b35ff..a1a1db4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetName.java
@@ -17,8 +17,10 @@
 import com.google.gerrit.extensions.restapi.RestReadView;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class GetName implements RestReadView<ServiceUserResource> {
+@Singleton
+class GetName implements RestReadView<ServiceUserResource> {
   private final Provider<com.google.gerrit.server.account.GetName> getName;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
index 1f9f063..45ad2ba 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
@@ -29,8 +29,10 @@
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
-public class GetOwner implements RestReadView<ServiceUserResource> {
+@Singleton
+class GetOwner implements RestReadView<ServiceUserResource> {
   private final GroupsCollection groups;
   private final ProjectLevelConfig storage;
   private final GroupJson json;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
index da5d4cf..6056524 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
@@ -32,10 +32,12 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import org.eclipse.jgit.lib.Config;
 
-public class GetServiceUser implements RestReadView<ServiceUserResource> {
+@Singleton
+class GetServiceUser implements RestReadView<ServiceUserResource> {
   private final Provider<GetAccount> getAccount;
   private final ProjectLevelConfig storage;
   private final GetOwner getOwner;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java
index 04827cf..6311bba 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKey.java
@@ -19,8 +19,10 @@
 import com.google.gerrit.server.account.GetSshKeys.SshKeyInfo;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class GetSshKey implements RestReadView<ServiceUserResource.SshKey> {
+@Singleton
+class GetSshKey implements RestReadView<ServiceUserResource.SshKey> {
   private final Provider<com.google.gerrit.server.account.GetSshKey> getSshKey;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java
index b3e1dfa..8a3b4a6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetSshKeys.java
@@ -20,10 +20,12 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import java.util.List;
 
-public class GetSshKeys implements RestReadView<ServiceUserResource> {
+@Singleton
+class GetSshKeys implements RestReadView<ServiceUserResource> {
   private final Provider<com.google.gerrit.server.account.GetSshKeys> getSshKeys;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HeaderFormatter.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HeaderFormatter.java
index ebd8116..157d7d7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HeaderFormatter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HeaderFormatter.java
@@ -24,7 +24,7 @@
 import java.util.Locale;
 import java.util.TimeZone;
 
-public class HeaderFormatter {
+class HeaderFormatter {
   private final StringBuilder sb = new StringBuilder();
   private final DateFormat rfc2822DateFormatter;
   private final String anonymousCowardName;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HttpModule.java
index 43d843e..53ef9b0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HttpModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/HttpModule.java
@@ -19,7 +19,7 @@
 import com.google.gerrit.extensions.webui.WebUiPlugin;
 import com.google.gerrit.httpd.plugins.HttpPluginModule;
 
-public class HttpModule extends HttpPluginModule {
+class HttpModule extends HttpPluginModule {
 
   @Override
   protected void configureServlets() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
index 976ee07..b295df2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
@@ -31,6 +31,7 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import com.googlesource.gerrit.plugins.serviceuser.GetServiceUser.ServiceUserInfo;
 
@@ -38,7 +39,8 @@
 
 import java.util.Map;
 
-public class ListServiceUsers implements RestReadView<ConfigResource> {
+@Singleton
+class ListServiceUsers implements RestReadView<ConfigResource> {
   private final Provider<CurrentUser> userProvider;
   private final ProjectLevelConfig storage;
   private final AccountCache accountCache;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java
index 1282925..f1c2618 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java
@@ -29,7 +29,7 @@
 import com.google.inject.AbstractModule;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
 
-public class Module extends AbstractModule {
+class Module extends AbstractModule {
 
   @Override
   protected void configure() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutActive.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutActive.java
index dd59865..6392dde 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutActive.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutActive.java
@@ -21,8 +21,10 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class PutActive implements RestModifyView<ServiceUserResource, Input> {
+@Singleton
+class PutActive implements RestModifyView<ServiceUserResource, Input> {
   private final Provider<com.google.gerrit.server.account.PutActive> putActive;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
index a58aa83..7a8ee84 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
@@ -27,6 +27,7 @@
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.config.SitePaths;
 import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
 import com.googlesource.gerrit.plugins.serviceuser.PutConfig.Input;
 
@@ -39,7 +40,8 @@
 import java.util.List;
 
 @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
-public class PutConfig implements RestModifyView<ConfigResource, Input>{
+@Singleton
+class PutConfig implements RestModifyView<ConfigResource, Input> {
   public static class Input {
     public String info;
     public String onSuccess;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java
index 5e1f2fe..778a7fe 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutEmail.java
@@ -32,10 +32,12 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import com.googlesource.gerrit.plugins.serviceuser.PutEmail.Input;
 
-public class PutEmail implements RestModifyView<ServiceUserResource, Input> {
+@Singleton
+class PutEmail implements RestModifyView<ServiceUserResource, Input> {
   public static class Input {
     @DefaultInput
     public String email;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutName.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutName.java
index fe7f140..d25f028 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutName.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutName.java
@@ -22,8 +22,10 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class PutName implements RestModifyView<ServiceUserResource, Input> {
+@Singleton
+class PutName implements RestModifyView<ServiceUserResource, Input> {
   private Provider<com.google.gerrit.server.account.PutName> putName;
 
   @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
index 57cb5dd..be3c3c5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
@@ -39,6 +39,7 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import com.googlesource.gerrit.plugins.serviceuser.PutOwner.Input;
 
@@ -47,7 +48,8 @@
 
 import java.io.IOException;
 
-public class PutOwner implements RestModifyView<ServiceUserResource, Input> {
+@Singleton
+class PutOwner implements RestModifyView<ServiceUserResource, Input> {
   public static class Input {
     @DefaultInput
     public String group;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
index c64a80c..5d709a2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
@@ -24,6 +24,7 @@
 import com.google.gerrit.server.git.WorkQueue;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
 import org.eclipse.jgit.api.errors.ConcurrentRefUpdateException;
 import org.eclipse.jgit.lib.ObjectId;
@@ -33,7 +34,8 @@
 
 import java.io.IOException;
 
-public class RefUpdateListener implements GitReferenceUpdatedListener {
+@Singleton
+class RefUpdateListener implements GitReferenceUpdatedListener {
   private static final Logger log = LoggerFactory
       .getLogger(RefUpdateListener.class);
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
index 30b125d..19ef84c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
@@ -39,8 +39,10 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class ServiceUserCollection implements
+@Singleton
+class ServiceUserCollection implements
     ChildCollection<ConfigResource, ServiceUserResource>,
     AcceptsCreate<ConfigResource> {
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserInput.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserInput.java
index 60f566b..1d34b87 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserInput.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserInput.java
@@ -16,9 +16,9 @@
 
 import com.google.gerrit.server.account.CreateAccount;
 
-public class ServiceUserInput extends CreateAccount.Input {
+class ServiceUserInput extends CreateAccount.Input {
 
-  public ServiceUserInput(String username, String email, String sshKey) {
+  ServiceUserInput(String username, String email, String sshKey) {
     this.username = username;
     this.name = username;
     this.email = email;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserMenu.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserMenu.java
index c2fd405..f61ea25 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserMenu.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserMenu.java
@@ -27,14 +27,14 @@
 
 import java.util.List;
 
-public class ServiceUserMenu implements TopMenu {
+class ServiceUserMenu implements TopMenu {
   private final String pluginName;
   private final Provider<CurrentUser> userProvider;
   private final List<MenuEntry> menuEntries;
   private final Provider<ListServiceUsers> listServiceUsers;
 
   @Inject
-  public ServiceUserMenu(@PluginName String pluginName,
+  ServiceUserMenu(@PluginName String pluginName,
       Provider<CurrentUser> userProvider,
       Provider<ListServiceUsers> listServiceUsers) {
     this.pluginName = pluginName;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java
index e29c304..7f60c4a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java
@@ -35,6 +35,7 @@
 import com.google.gwtorm.server.SchemaFactory;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
 import com.googlesource.gerrit.plugins.serviceuser.GetServiceUser.ServiceUserInfo;
 
@@ -48,7 +49,8 @@
 import java.util.List;
 import java.util.Set;
 
-public class ServiceUserResolver {
+@Singleton
+class ServiceUserResolver {
   private static final Logger log =
       LoggerFactory.getLogger(ServiceUserResolver.class);
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResource.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResource.java
index a27b69b..6d9d4ec 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResource.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResource.java
@@ -20,31 +20,31 @@
 import com.google.gerrit.server.account.AccountResource;
 import com.google.inject.TypeLiteral;
 
-public class ServiceUserResource extends AccountResource {
-  public static final TypeLiteral<RestView<ServiceUserResource>> SERVICE_USER_KIND =
+class ServiceUserResource extends AccountResource {
+  static final TypeLiteral<RestView<ServiceUserResource>> SERVICE_USER_KIND =
       new TypeLiteral<RestView<ServiceUserResource>>() {};
 
-  public static final TypeLiteral<RestView<SshKey>> SSH_KEY_KIND =
+  static final TypeLiteral<RestView<SshKey>> SSH_KEY_KIND =
       new TypeLiteral<RestView<SshKey>>() {};
 
-  public ServiceUserResource(IdentifiedUser user) {
+  ServiceUserResource(IdentifiedUser user) {
     super(user);
   }
 
-  public static class SshKey extends ServiceUserResource {
+  static class SshKey extends ServiceUserResource {
     private final AccountSshKey sshKey;
 
-    public SshKey(IdentifiedUser user, AccountSshKey sshKey) {
+    SshKey(IdentifiedUser user, AccountSshKey sshKey) {
       super(user);
       this.sshKey = sshKey;
     }
 
-    public SshKey(AccountResource.SshKey sshKey) {
+    SshKey(AccountResource.SshKey sshKey) {
       super(sshKey.getUser());
       this.sshKey = sshKey.getSshKey();
     }
 
-    public AccountSshKey getSshKey() {
+    AccountSshKey getSshKey() {
       return sshKey;
     }
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshKeys.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshKeys.java
index 524bc02..a585d37 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshKeys.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshKeys.java
@@ -22,8 +22,10 @@
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.Singleton;
 
-public class SshKeys implements
+@Singleton
+class SshKeys implements
     ChildCollection<ServiceUserResource, ServiceUserResource.SshKey> {
   private final DynamicMap<RestView<ServiceUserResource.SshKey>> views;
   private final Provider<GetSshKeys> list;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshModule.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshModule.java
index cbf715e..f775e4c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/SshModule.java
@@ -16,7 +16,7 @@
 
 import com.google.gerrit.sshd.PluginCommandModule;
 
-public class SshModule extends PluginCommandModule {
+class SshModule extends PluginCommandModule {
 
   @Override
   protected void configureCommands() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java
index 44ba2e8..44c2d15 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ValidateServiceUserCommits.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.server.git.validators.CommitValidationMessage;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
 import com.googlesource.gerrit.plugins.serviceuser.GetServiceUser.ServiceUserInfo;
 
@@ -30,7 +31,8 @@
 import java.util.Collections;
 import java.util.List;
 
-public class ValidateServiceUserCommits implements CommitValidationListener {
+@Singleton
+class ValidateServiceUserCommits implements CommitValidationListener {
   private final ServiceUserResolver serviceUserResolver;
   private final AccountCache accountCache;