diff options
author | Artur Signell <artur@vaadin.com> | 2015-12-31 09:29:26 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-05-19 10:14:38 +0000 |
commit | 8858aa624d121629539591127b569cdb33968192 (patch) | |
tree | 6a0b8c18d6b028091cb36d0221331b5afdf91e6c /server | |
parent | fdab4ee8b35342c728fa3d0f7090d8a52ec89d67 (diff) | |
download | vaadin-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.java | 18 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/data/util/AbstractContainerTestBase.java | 4 |
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(); |