From 2ae832e7ed3483902503295fb2c9a79dfa7f5aaa Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Thu, 16 Oct 2014 22:35:41 -0700 Subject: [PATCH] Avoid empty web_links element inside of RevisionInfo Web UI always requests WEB_LINKS from /changes/{id}, but the common case for a server is to have no special PatchSetWebLink. Skip the "web_links = []" JSON code that appears in every revision on the change by setting the list to null. Skip pointless copying of the computed collection by changing the return type from WebLinks to clearly be a List, like RevisionInfo expects. This allows direct assignment into the result. Change-Id: I665e225b5abdd571a0adba8d2a1d318a1926801a --- .../src/main/java/com/google/gerrit/server/WebLinks.java | 5 +++-- .../java/com/google/gerrit/server/change/ChangeJson.java | 8 +++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/WebLinks.java b/gerrit-server/src/main/java/com/google/gerrit/server/WebLinks.java index d2e3e4911f..318f847dd8 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/WebLinks.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/WebLinks.java @@ -24,6 +24,7 @@ import com.google.gerrit.extensions.webui.ProjectWebLink; import com.google.inject.Inject; import com.google.inject.Singleton; +import java.util.ArrayList; import java.util.List; @Singleton @@ -45,8 +46,8 @@ public class WebLinks { this.branchLinks = branchLinks; } - public Iterable getPatchSetLinks(String project, String commit) { - List links = Lists.newArrayList(); + public List getPatchSetLinks(String project, String commit) { + List links = new ArrayList<>(4); for (PatchSetWebLink webLink : patchSetLinks) { links.add(new WebLinkInfo(webLink.getLinkName(), webLink.getImageUrl(), diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java index e6b36e5714..e91b23631f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java @@ -843,11 +843,9 @@ public class ChangeJson { } if (has(WEB_LINKS)) { - out.webLinks = Lists.newArrayList(); - for (WebLinkInfo link : webLinks.getPatchSetLinks( - project, in.getRevision().get())) { - out.webLinks.add(link); - } + List links = + webLinks.getPatchSetLinks(project, in.getRevision().get()); + out.webLinks = !links.isEmpty() ? links : null; } return out; }