Retain direction for empty KeysetScrollPosition.

We now retain the direction when an empty KeysetScrollPosition is created.

Closes #2840
This commit is contained in:
Mark Paluch
2023-07-04 15:50:46 +02:00
parent 80b8e12641
commit 3df0c3b5a6
2 changed files with 19 additions and 5 deletions

View File

@@ -34,9 +34,12 @@ import org.springframework.util.ObjectUtils;
*/
public final class KeysetScrollPosition implements ScrollPosition {
private static final KeysetScrollPosition INITIAL = new KeysetScrollPosition(Collections.emptyMap(),
private static final KeysetScrollPosition EMPTY_FORWARD = new KeysetScrollPosition(Collections.emptyMap(),
Direction.FORWARD);
private static final KeysetScrollPosition EMPTY_BACKWARD = new KeysetScrollPosition(Collections.emptyMap(),
Direction.BACKWARD);
private final Map<String, Object> keys;
private final Direction direction;
@@ -55,7 +58,7 @@ public final class KeysetScrollPosition implements ScrollPosition {
* @return will never be {@literal null}.
*/
static KeysetScrollPosition initial() {
return INITIAL;
return EMPTY_FORWARD;
}
/**
@@ -70,8 +73,7 @@ public final class KeysetScrollPosition implements ScrollPosition {
Assert.notNull(keys, "Keys must not be null");
Assert.notNull(direction, "Direction must not be null");
return keys.isEmpty()
? initial()
return keys.isEmpty() ? (direction == Direction.FORWARD ? EMPTY_FORWARD : EMPTY_BACKWARD)
: new KeysetScrollPosition(Collections.unmodifiableMap(new LinkedHashMap<>(keys)), direction);
}