diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java index 99f50418ff..d280725fa3 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupMembersScreen.java @@ -23,6 +23,7 @@ import com.google.gerrit.client.groups.GroupList; import com.google.gerrit.client.groups.MemberInfo; import com.google.gerrit.client.groups.MemberList; import com.google.gerrit.client.rpc.GerritCallback; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.ui.AccountGroupSuggestOracle; import com.google.gerrit.client.ui.AccountLink; import com.google.gerrit.client.ui.AddMemberBox; @@ -160,14 +161,14 @@ public class AccountGroupMembersScreen extends AccountGroupScreen { MemberList.all(getGroupUUID(), new GerritCallback() { @Override public void onSuccess(MemberList result) { - members.display(result.asList()); + members.display(Natives.asList(result)); } }); GroupList.included(getGroupUUID(), new GerritCallback() { @Override public void onSuccess(GroupList result) { - includes.display(result.asList()); + includes.display(Natives.asList(result)); } }); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java index 225dd51b86..76a0cfb23a 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java @@ -15,11 +15,13 @@ package com.google.gerrit.client.admin; import static com.google.gerrit.client.admin.Util.C; + import com.google.gerrit.client.Dispatcher; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.groups.GroupInfo; import com.google.gerrit.client.groups.GroupList; import com.google.gerrit.client.groups.GroupMap; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.ui.HighlightingInlineHyperlink; import com.google.gerrit.client.ui.NavigationTable; import com.google.gerrit.client.ui.Util; @@ -79,11 +81,11 @@ public class GroupTable extends NavigationTable { } public void display(GroupMap groups, String toHighlight) { - display(groups.values().asList(), toHighlight); + display(Natives.asList(groups.values()), toHighlight); } public void display(GroupList groups) { - display(groups.asList(), null); + display(Natives.asList(groups), null); } public void display(List list, String toHighlight) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java index 068d12a882..9e4b81b730 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java @@ -17,6 +17,7 @@ package com.google.gerrit.client.admin; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.plugins.PluginInfo; import com.google.gerrit.client.plugins.PluginMap; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.rpc.ScreenLoadCallback; import com.google.gerrit.client.ui.FancyFlexTable; import com.google.gwt.user.client.ui.Anchor; @@ -73,7 +74,7 @@ public class PluginListScreen extends PluginScreen { table.removeRow(table.getRowCount() - 1); } - for (final PluginInfo p : plugins.values().asList()) { + for (final PluginInfo p : Natives.asList(plugins.values())) { final int row = table.getRowCount(); table.insertRow(row); applyDataRowStyle(row); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectDashboardsScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectDashboardsScreen.java index f2924f4dc6..f77986175b 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectDashboardsScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectDashboardsScreen.java @@ -16,9 +16,9 @@ package com.google.gerrit.client.admin; import com.google.gerrit.client.dashboards.DashboardList; import com.google.gerrit.client.dashboards.DashboardsTable; -import com.google.gerrit.client.rpc.NativeList; import com.google.gerrit.client.rpc.ScreenLoadCallback; import com.google.gerrit.reviewdb.client.Project; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.ui.FlowPanel; public class ProjectDashboardsScreen extends ProjectScreen { @@ -34,9 +34,9 @@ public class ProjectDashboardsScreen extends ProjectScreen { protected void onLoad() { super.onLoad(); DashboardList.all(getProjectKey(), - new ScreenLoadCallback>(this) { + new ScreenLoadCallback>(this) { @Override - protected void preDisplay(NativeList result) { + protected void preDisplay(JsArray result) { dashes.display(result); } }); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java index 05dd5d9b04..d8041fc7d7 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java @@ -16,10 +16,11 @@ package com.google.gerrit.client.changes; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.NotFoundScreen; -import com.google.gerrit.client.rpc.NativeList; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.rpc.ScreenLoadCallback; import com.google.gerrit.client.ui.Screen; import com.google.gerrit.reviewdb.client.Account; +import com.google.gwt.core.client.JsArray; import java.util.Collections; import java.util.Comparator; @@ -64,9 +65,9 @@ public class AccountDashboardScreen extends Screen implements ChangeListScreen { super.onLoad(); String who = mine ? "self" : ownerId.toString(); ChangeList.query( - new ScreenLoadCallback>(this) { + new ScreenLoadCallback>(this) { @Override - protected void preDisplay(NativeList result) { + protected void preDisplay(JsArray result) { display(result); } }, @@ -81,7 +82,7 @@ public class AccountDashboardScreen extends Screen implements ChangeListScreen { table.setRegisterKeys(true); } - private void display(NativeList result) { + private void display(JsArray result) { if (!mine && !hasChanges(result)) { // When no results are returned and the data is not for the // current user, the target user is presumed to not exist. @@ -112,7 +113,7 @@ public class AccountDashboardScreen extends Screen implements ChangeListScreen { } } - Collections.sort(out.asList(), outComparator()); + Collections.sort(Natives.asList(out), outComparator()); table.updateColumnsForLabels(out, in, done); outgoing.display(out); @@ -132,9 +133,9 @@ public class AccountDashboardScreen extends Screen implements ChangeListScreen { }; } - private boolean hasChanges(NativeList result) { - for (ChangeList list : result.asList()) { - if (!list.isEmpty()) { + private boolean hasChanges(JsArray result) { + for (ChangeList list : Natives.asList(result)) { + if (list.length() != 0) { return true; } } @@ -142,7 +143,7 @@ public class AccountDashboardScreen extends Screen implements ChangeListScreen { } private static String guessName(ChangeList list) { - for (ChangeInfo change : list.asList()) { + for (ChangeInfo change : Natives.asList(list)) { if (change.owner() != null && change.owner().name() != null) { return change.owner().name(); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeList.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeList.java index 23a3c0fb30..7c41ea1c58 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeList.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeList.java @@ -14,21 +14,21 @@ package com.google.gerrit.client.changes; -import com.google.gerrit.client.rpc.NativeList; import com.google.gerrit.client.rpc.RestApi; import com.google.gerrit.common.changes.ListChangesOption; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwtorm.client.KeyUtil; import java.util.EnumSet; /** List of changes available from {@code /changes/}. */ -public class ChangeList extends NativeList { +public class ChangeList extends JsArray { private static final String URI = "/changes/"; /** Run 2 or more queries in a single remote invocation. */ public static void query( - AsyncCallback> callback, String... queries) { + AsyncCallback> callback, String... queries) { assert queries.length >= 2; // At least 2 is required for correct result. RestApi call = new RestApi(URI); for (String q : queries) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java index 01880f9c65..07beea7fc0 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable2.java @@ -142,7 +142,7 @@ public class ChangeTable2 extends NavigationTable { public void updateColumnsForLabels(ChangeList... lists) { labelNames = new ArrayList(); for (ChangeList list : lists) { - for (int i = 0; i < list.size(); i++) { + for (int i = 0; i < list.length(); i++) { for (String name : list.get(i).labels()) { if (!labelNames.contains(name)) { labelNames.add(name); @@ -395,7 +395,7 @@ public class ChangeTable2 extends NavigationTable { } public void display(ChangeList changeList) { - final int sz = changeList != null ? changeList.size() : 0; + final int sz = changeList != null ? changeList.length() : 0; final boolean hadData = rows > 0; if (hadData) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/DashboardTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/DashboardTable.java index 30afbb447f..7b387ab7a5 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/DashboardTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/DashboardTable.java @@ -16,9 +16,10 @@ package com.google.gerrit.client.changes; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.rpc.GerritCallback; -import com.google.gerrit.client.rpc.NativeList; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.ui.InlineHyperlink; import com.google.gerrit.common.PageLinks; +import com.google.gwt.core.client.JsArray; import com.google.gwt.http.client.URL; import java.util.ArrayList; @@ -91,13 +92,13 @@ public class DashboardTable extends ChangeTable2 { }); } else if (! queries.isEmpty()) { ChangeList.query( - new GerritCallback>() { + new GerritCallback>() { @Override - public void onSuccess(NativeList result) { - updateColumnsForLabels( - result.asList().toArray(new ChangeList[result.size()])); - for (int i = 0; i < result.size(); i++) { - sections.get(i).display(result.get(i)); + public void onSuccess(JsArray result) { + List cls = Natives.asList(result); + updateColumnsForLabels(cls.toArray(new ChangeList[cls.size()])); + for (int i = 0; i < cls.size(); i++) { + sections.get(i).display(cls.get(i)); } finishDisplay(); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PagedSingleListScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PagedSingleListScreen.java index 0cbae18d7a..c21c68d0bd 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PagedSingleListScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PagedSingleListScreen.java @@ -116,9 +116,9 @@ public abstract class PagedSingleListScreen extends Screen { protected void display(final ChangeList result) { changes = result; - if (!changes.isEmpty()) { + if (changes.length() != 0) { final ChangeInfo f = changes.get(0); - final ChangeInfo l = changes.get(changes.size() - 1); + final ChangeInfo l = changes.get(changes.length() - 1); prev.setTargetHistoryToken(anchorPrefix + ",p," + f._sortkey()); next.setTargetHistoryToken(anchorPrefix + ",n," + l._sortkey()); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java index 220083ecc8..01e294fafb 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java @@ -52,7 +52,7 @@ public class QueryScreen extends PagedSingleListScreen implements @Override public final void onSuccess(ChangeList result) { if (isAttached()) { - if (result.size() == 1 && isSingleQuery(query)) { + if (result.length() == 1 && isSingleQuery(query)) { ChangeInfo c = result.get(0); Change.Id id = c.legacy_id(); Gerrit.display(PageLinks.toChange(id), new ChangeScreen(id)); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardList.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardList.java index 0c039519ff..1190f9cd18 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardList.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardList.java @@ -14,16 +14,16 @@ package com.google.gerrit.client.dashboards; -import com.google.gerrit.client.rpc.NativeList; import com.google.gerrit.client.rpc.RestApi; import com.google.gerrit.reviewdb.client.Project; +import com.google.gwt.core.client.JsArray; import com.google.gwt.http.client.URL; import com.google.gwt.user.client.rpc.AsyncCallback; /** Project dashboards from {@code /projects//dashboards/}. */ -public class DashboardList extends NativeList { +public class DashboardList extends JsArray { public static void all(Project.NameKey project, - AsyncCallback> callback) { + AsyncCallback> callback) { base(project).addParameterTrue("inherited").get(callback); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java index 724307eb9f..f9df0d79fd 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/dashboards/DashboardsTable.java @@ -15,10 +15,11 @@ package com.google.gerrit.client.dashboards; import com.google.gerrit.client.Gerrit; -import com.google.gerrit.client.rpc.NativeList; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.ui.NavigationTable; import com.google.gerrit.common.PageLinks; import com.google.gerrit.reviewdb.client.Project; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; @@ -53,13 +54,13 @@ public class DashboardsTable extends NavigationTable { } public void display(DashboardList dashes) { - display(dashes.asList()); + display(Natives.asList(dashes)); } - public void display(NativeList in) { + public void display(JsArray in) { Map map = new HashMap(); - for (DashboardList list : in.asList()) { - for (DashboardInfo d : list.asList()) { + for (DashboardList list : Natives.asList(in)) { + for (DashboardInfo d : Natives.asList(list)) { if (!map.containsKey(d.id())) { map.put(d.id(), d); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupApi.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupApi.java index d508aa5437..d8ef33a770 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupApi.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupApi.java @@ -15,11 +15,12 @@ package com.google.gerrit.client.groups; import com.google.gerrit.client.VoidResult; -import com.google.gerrit.client.rpc.NativeList; +import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.rpc.RestApi; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.rpc.AsyncCallback; import java.util.Set; @@ -81,14 +82,14 @@ public class GroupApi { /** Add members to a group. */ public static void addMembers(AccountGroup.UUID group, Set members, - final AsyncCallback> cb) { + final AsyncCallback> cb) { if (members.size() == 1) { addMember(group, members.iterator().next(), new AsyncCallback() { @Override public void onSuccess(MemberInfo result) { - cb.onSuccess(NativeList.of(result)); + cb.onSuccess(Natives.arrayOf(result)); } @Override @@ -129,14 +130,14 @@ public class GroupApi { /** Include groups into a group. */ public static void addIncludedGroups(AccountGroup.UUID group, Set includedGroups, - final AsyncCallback> cb) { + final AsyncCallback> cb) { if (includedGroups.size() == 1) { addIncludedGroup(group, includedGroups.iterator().next(), new AsyncCallback() { @Override public void onSuccess(GroupInfo result) { - cb.onSuccess(NativeList.of(result)); + cb.onSuccess(Natives.arrayOf(result)); } @Override diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupList.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupList.java index aef0b427d6..94e5e58bee 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupList.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/GroupList.java @@ -14,13 +14,13 @@ package com.google.gerrit.client.groups; -import com.google.gerrit.client.rpc.NativeList; import com.google.gerrit.client.rpc.RestApi; import com.google.gerrit.reviewdb.client.AccountGroup; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.rpc.AsyncCallback; /** Groups available from {@code /groups/} or {@code /accounts/{id}/groups}. */ -public class GroupList extends NativeList { +public class GroupList extends JsArray { public static void my(AsyncCallback callback) { new RestApi("/accounts/self/groups").get(callback); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/MemberList.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/MemberList.java index 334602f04a..47c776dc53 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/MemberList.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/groups/MemberList.java @@ -14,12 +14,12 @@ package com.google.gerrit.client.groups; -import com.google.gerrit.client.rpc.NativeList; import com.google.gerrit.client.rpc.RestApi; import com.google.gerrit.reviewdb.client.AccountGroup; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.rpc.AsyncCallback; -public class MemberList extends NativeList { +public class MemberList extends JsArray { public static void all(AccountGroup.UUID group, AsyncCallback callback) { new RestApi("/groups/").id(group.get()).view("members").get(callback); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeList.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeList.java deleted file mode 100644 index 969109437e..0000000000 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeList.java +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (C) 2012 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.gerrit.client.rpc; - -import com.google.gwt.core.client.JavaScriptObject; - -import java.util.AbstractList; -import java.util.List; - -/** A read-only list of native JavaScript objects stored in a JSON array. */ -public class NativeList extends JavaScriptObject { - public static NativeList of(T a) { - NativeList list = createArray().cast(); - list.add(a); - return list; - } - - protected NativeList() { - } - - public final List asList() { - return new AbstractList() { - @Override - public T set(int index, T element) { - T old = NativeList.this.get(index); - NativeList.this.set0(index, element); - return old; - } - - @Override - public T get(int index) { - return NativeList.this.get(index); - } - - @Override - public int size() { - return NativeList.this.size(); - } - }; - } - - public final boolean isEmpty() { - return size() == 0; - } - - public final native int size() /*-{ return this.length; }-*/; - public final native T get(int i) /*-{ return this[i]; }-*/; - public final native void add(T v) /*-{ this.push(v); }-*/; - private final native void set0(int i, T v) /*-{ this[i] = v; }-*/; -} diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeMap.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeMap.java index 54866a740b..d56eeafd67 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeMap.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/NativeMap.java @@ -15,6 +15,7 @@ package com.google.gerrit.client.rpc; import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.core.client.JsArray; import com.google.gwt.user.client.rpc.AsyncCallback; import java.util.Set; @@ -53,7 +54,7 @@ public class NativeMap extends JavaScriptObject { return Natives.keys(this); } - public final native NativeList values() + public final native JsArray values() /*-{ var s = this; var v = []; diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/Natives.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/Natives.java index 9e243bb73e..e048dcf656 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/Natives.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/rpc/Natives.java @@ -15,9 +15,12 @@ package com.google.gerrit.client.rpc; import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.core.client.JsArray; import com.google.gwt.json.client.JSONObject; +import java.util.AbstractList; import java.util.Collections; +import java.util.List; import java.util.Set; public class Natives { @@ -32,6 +35,34 @@ public class Natives { return Collections.emptySet(); } + public static List asList( + final JsArray arr) { + return new AbstractList() { + @Override + public T set(int index, T element) { + T old = arr.get(index); + arr.set(index, element); + return old; + } + + @Override + public T get(int index) { + return arr.get(index); + } + + @Override + public int size() { + return arr.length(); + } + }; + } + + public static JsArray arrayOf(T element) { + JsArray arr = JavaScriptObject.createArray().cast(); + arr.push(element); + return arr; + } + @SuppressWarnings("unchecked") public static T parseJSON(String json) { if (json.startsWith("\"")) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java index 40a6834952..80364cfb8d 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java @@ -17,6 +17,7 @@ package com.google.gerrit.client.ui; import com.google.gerrit.client.RpcStatus; import com.google.gerrit.client.projects.ProjectMap; import com.google.gerrit.client.rpc.GerritCallback; +import com.google.gerrit.client.rpc.Natives; /** Suggestion Oracle for Project.NameKey entities. */ public class ProjectNameSuggestOracle extends SuggestAfterTypingNCharsOracle { @@ -29,7 +30,7 @@ public class ProjectNameSuggestOracle extends SuggestAfterTypingNCharsOracle { new GerritCallback() { @Override public void onSuccess(ProjectMap map) { - callback.onSuggestionsReady(req, new Response(map.values().asList())); + callback.onSuggestionsReady(req, new Response(Natives.asList(map.values()))); } }); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java index 33cbf44bdf..a3a5052dab 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectsTable.java @@ -17,6 +17,7 @@ package com.google.gerrit.client.ui; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.projects.ProjectInfo; import com.google.gerrit.client.projects.ProjectMap; +import com.google.gerrit.client.rpc.Natives; import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; import java.util.Collections; @@ -55,7 +56,7 @@ public class ProjectsTable extends NavigationTable { while (1 < table.getRowCount()) table.removeRow(table.getRowCount() - 1); - List list = projects.values().asList(); + List list = Natives.asList(projects.values()); Collections.sort(list, new Comparator() { @Override public int compare(ProjectInfo a, ProjectInfo b) {