summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2015-12-31 09:29:26 +0200
committerVaadin Code Review <review@vaadin.com>2016-05-19 10:14:38 +0000
commit8858aa624d121629539591127b569cdb33968192 (patch)
tree6a0b8c18d6b028091cb36d0221331b5afdf91e6c /server
parentfdab4ee8b35342c728fa3d0f7090d8a52ec89d67 (diff)
downloadvaadin-framework-8858aa624d121629539591127b569cdb33968192.tar.gz
vaadin-framework-8858aa624d121629539591127b569cdb33968192.zip
Ensure ContainerOrderedWrapper returns itemIds in expected order
(#19427) Change-Id: I79cfe68cf5e9e37db27c53d2f7a1aa9a1573df90
Diffstat (limited to 'server')
-rw-r--r--server/src/main/java/com/vaadin/data/util/ContainerOrderedWrapper.java18
-rw-r--r--server/src/test/java/com/vaadin/data/util/AbstractContainerTestBase.java4
2 files changed, 17 insertions, 5 deletions
diff --git a/server/src/main/java/com/vaadin/data/util/ContainerOrderedWrapper.java b/server/src/main/java/com/vaadin/data/util/ContainerOrderedWrapper.java
index 4329219e96..53f4840322 100644
--- a/server/src/main/java/com/vaadin/data/util/ContainerOrderedWrapper.java
+++ b/server/src/main/java/com/vaadin/data/util/ContainerOrderedWrapper.java
@@ -16,10 +16,12 @@
package com.vaadin.data.util;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.List;
import com.vaadin.data.Container;
import com.vaadin.data.Item;
@@ -464,7 +466,21 @@ public class ContainerOrderedWrapper implements Container.Ordered,
*/
@Override
public Collection<?> getItemIds() {
- return container.getItemIds();
+ if (ordered) {
+ return ((Container.Ordered) container).getItemIds();
+ } else if (first == null) {
+ return new ArrayList<Object>();
+ } else {
+ List<Object> itemIds = new ArrayList<Object>();
+ itemIds.add(first);
+ Object current = first;
+ while (next.containsKey(current)) {
+ current = next.get(current);
+ itemIds.add(current);
+ }
+ return itemIds;
+ }
+
}
/*
diff --git a/server/src/test/java/com/vaadin/data/util/AbstractContainerTestBase.java b/server/src/test/java/com/vaadin/data/util/AbstractContainerTestBase.java
index 138beb7f3d..644f703d9e 100644
--- a/server/src/test/java/com/vaadin/data/util/AbstractContainerTestBase.java
+++ b/server/src/test/java/com/vaadin/data/util/AbstractContainerTestBase.java
@@ -261,10 +261,6 @@ public abstract class AbstractContainerTestBase {
// Doesn't work as bean container requires beans
return;
}
- if (container instanceof ContainerOrderedWrapper) {
- // Doesn't work because of #19427
- return;
- }
try {
container.removeAllItems();