Do not keep reference to non-singleton ListTags in singleton TagsCollection

Due to this options set on previous requests are applied for follow-up
requests that do not specify these options.

Bug: Issue 4155
Change-Id: I06ef38be480ff60cba21901978bcc63bdbfaaad8
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/TagsCollection.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/TagsCollection.java
index 0c70285..1b6b888 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/TagsCollection.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/TagsCollection.java
@@ -20,6 +20,7 @@
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.extensions.restapi.RestView;
 import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.Singleton;
 
 import java.io.IOException;
@@ -28,24 +29,24 @@
 public class TagsCollection implements
     ChildCollection<ProjectResource, TagResource> {
   private final DynamicMap<RestView<TagResource>> views;
-  private final ListTags list;
+  private final Provider<ListTags> list;
 
   @Inject
   public TagsCollection(DynamicMap<RestView<TagResource>> views,
-     ListTags list) {
+     Provider<ListTags> list) {
     this.views = views;
     this.list = list;
   }
 
   @Override
   public RestView<ProjectResource> list() throws ResourceNotFoundException {
-    return list;
+    return list.get();
   }
 
   @Override
   public TagResource parse(ProjectResource resource, IdString id)
       throws ResourceNotFoundException, IOException {
-    return new TagResource(resource.getControl(), list.get(resource, id));
+    return new TagResource(resource.getControl(), list.get().get(resource, id));
   }
 
   @Override