Retain direction for empty KeysetScrollPosition.
We now retain the direction when an empty KeysetScrollPosition is created. Closes #2840
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -129,12 +129,24 @@ class ScrollPositionUnitTests {
|
||||
assertThat(position.getOffset()).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test // GH-2824
|
||||
@Test // GH-2824, GH-2840
|
||||
void initialKeysetPosition() {
|
||||
|
||||
KeysetScrollPosition keyset = ScrollPosition.keyset();
|
||||
|
||||
assertThat(keyset.isInitial()).isTrue();
|
||||
assertThat(keyset.scrollsForward()).isTrue();
|
||||
|
||||
keyset = ScrollPosition.of(Collections.emptyMap(), Direction.FORWARD);
|
||||
|
||||
assertThat(keyset.isInitial()).isTrue();
|
||||
assertThat(keyset.scrollsForward()).isTrue();
|
||||
assertThat(keyset.scrollsBackward()).isFalse();
|
||||
|
||||
keyset = ScrollPosition.of(Collections.emptyMap(), Direction.BACKWARD);
|
||||
|
||||
assertThat(keyset.isInitial()).isTrue();
|
||||
assertThat(keyset.scrollsForward()).isFalse();
|
||||
assertThat(keyset.scrollsBackward()).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user