From ad7cea7ea511b996a8f13adf65ea755acde3508b Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Fri, 22 Nov 2013 14:44:01 +0100 Subject: [PATCH] For related changes do not rely on current revision being returned In order to display the related changes we need to know the current revision. Although the current revision is requested it can happen that it is not returned by the server. In this case the UI failed to display the related changes for that tab (it showed the progress bar and the 'Working...' label never disappeared). Fix the code so that we can handle changes for which the current revision is not set. These changes will simply be ignored. Ie465a182267c39d7fed07921c2271fa5544a8ed2 is an example for a change which doesn't return a current revision for me although I requested it. For Id20e567e5c5d5b3d851ca5cda9bde01ac01c9967 it can be seen how the "Conflicts With" tab cannot display the conflicting changes due to that change. Change-Id: Icf32ce8df213beb7f15be1b318be025c7cc8e872 Signed-off-by: Edwin Kempin --- .../gerrit/client/change/RelatedChanges.java | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java index 33eb6e3f27..34a75141ca 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java @@ -105,10 +105,10 @@ class RelatedChanges extends TabPanel { new AsyncCallback() { @Override public void onSuccess(ChangeList result) { - if (result.length() > 0) { - getTab().setTitle(Resources.M.cherryPicks(result.length())); - getTab().setChanges(info.project(), revision, - convertChangeList(result)); + JsArray changes = convertChangeList(result); + if (changes.length() > 0) { + getTab().setTitle(Resources.M.cherryPicks(changes.length())); + getTab().setChanges(info.project(), revision, changes); } } @@ -141,10 +141,10 @@ class RelatedChanges extends TabPanel { new AsyncCallback() { @Override public void onSuccess(ChangeList result) { - if (result.length() > 0) { - getTab().setTitle(Resources.M.sameTopic(result.length())); - getTab().setChanges(info.project(), revision, - convertChangeList(result)); + JsArray changes = convertChangeList(result); + if (changes.length() > 0) { + getTab().setTitle(Resources.M.sameTopic(changes.length())); + getTab().setChanges(info.project(), revision, changes); } } @@ -196,10 +196,10 @@ class RelatedChanges extends TabPanel { new AsyncCallback() { @Override public void onSuccess(ChangeList result) { - if (result.length() > 0) { - getTab().setTitle(Resources.M.conflictingChanges(result.length())); - getTab().setChanges(info.project(), revision, - convertChangeList(result)); + JsArray changes = convertChangeList(result); + if (changes.length() > 0) { + getTab().setTitle(Resources.M.conflictingChanges(changes.length())); + getTab().setChanges(info.project(), revision, changes); } } @@ -231,14 +231,16 @@ class RelatedChanges extends TabPanel { private JsArray convertChangeList(ChangeList l) { JsArray arr = JavaScriptObject.createArray().cast(); for (ChangeInfo i : Natives.asList(l)) { - RevisionInfo currentRevision = i.revision(i.current_revision()); - ChangeAndCommit c = ChangeAndCommit.create(); - c.set_id(i.id()); - c.set_commit(currentRevision.commit()); - c.set_change_number(i.legacy_id().get()); - c.set_revision_number(currentRevision._number()); - c.set_branch(i.branch()); - arr.push(c); + if (i.current_revision() != null && i.revisions().containsKey(i.current_revision())) { + RevisionInfo currentRevision = i.revision(i.current_revision()); + ChangeAndCommit c = ChangeAndCommit.create(); + c.set_id(i.id()); + c.set_commit(currentRevision.commit()); + c.set_change_number(i.legacy_id().get()); + c.set_revision_number(currentRevision._number()); + c.set_branch(i.branch()); + arr.push(c); + } } return arr; }