Skip to content

Commit 371660b

Browse files
committed
Parameter direction should not be ignored if keys is empty
After this commit, KeysetScrollPosition.of(Collections.emptyMap(), Direction.BACKWARD) will retain correct direction Closes spring-projectsGH-2840
1 parent bfcb2ff commit 371660b

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/main/java/org/springframework/data/domain/KeysetScrollPosition.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
*
3131
* @author Mark Paluch
3232
* @author Oliver Drotbohm
33+
* @author Yanming Zhou
3334
* @since 3.1
3435
*/
3536
public final class KeysetScrollPosition implements ScrollPosition {
@@ -70,7 +71,7 @@ static KeysetScrollPosition of(Map<String, ?> keys, Direction direction) {
7071
Assert.notNull(keys, "Keys must not be null");
7172
Assert.notNull(direction, "Direction must not be null");
7273

73-
return keys.isEmpty()
74+
return keys.isEmpty() && direction == Direction.FORWARD
7475
? initial()
7576
: new KeysetScrollPosition(Collections.unmodifiableMap(new LinkedHashMap<>(keys)), direction);
7677
}

src/test/java/org/springframework/data/domain/ScrollPositionUnitTests.java

+11
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
*
3030
* @author Mark Paluch
3131
* @author Oliver Drotbohm
32+
* @author Yanming Zhou
3233
*/
3334
class ScrollPositionUnitTests {
3435

@@ -137,4 +138,14 @@ void initialKeysetPosition() {
137138
assertThat(keyset.isInitial()).isTrue();
138139
assertThat(keyset.scrollsForward()).isTrue();
139140
}
141+
142+
@Test // GH-2840
143+
void keysetPositionWithEmptyKeys() {
144+
145+
KeysetScrollPosition forwardEmptyKeyset = ScrollPosition.of(Collections.emptyMap(), Direction.FORWARD);
146+
KeysetScrollPosition backwordEmptyKeyset = ScrollPosition.of(Collections.emptyMap(), Direction.BACKWARD);
147+
148+
assertThat(forwardEmptyKeyset.isInitial()).isTrue();
149+
assertThat(backwordEmptyKeyset.scrollsBackward()).isTrue();
150+
}
140151
}

0 commit comments

Comments
 (0)