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