diff --git a/src/main/java/org/springframework/data/domain/AbstractPageRequest.java b/src/main/java/org/springframework/data/domain/AbstractPageRequest.java index d5852e38e9..8b929d8953 100644 --- a/src/main/java/org/springframework/data/domain/AbstractPageRequest.java +++ b/src/main/java/org/springframework/data/domain/AbstractPageRequest.java @@ -24,6 +24,7 @@ * * @author Thomas Darimont * @author Oliver Gierke + * @author Alex Bondarev */ public abstract class AbstractPageRequest implements Pageable, Serializable { @@ -74,7 +75,7 @@ public int getPageNumber() { * @see org.springframework.data.domain.Pageable#getOffset() */ public long getOffset() { - return page * size; + return (long) page * (long) size; } /* diff --git a/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java b/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java index 85a38a127e..0e09dae8e3 100755 --- a/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java +++ b/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java @@ -22,6 +22,7 @@ /** * @author Thomas Darimont + * @author Alex Bondarev */ public abstract class AbstractPageRequestUnitTests { @@ -75,4 +76,12 @@ public void equalsHonoursPageAndSize() { public void preventsPageSizeLessThanOne() { newPageRequest(0, 0); } + + @Test + public void getOffsetShouldNotCauseOverflow() { + + AbstractPageRequest request = newPageRequest(Integer.MAX_VALUE, Integer.MAX_VALUE); + + assertThat(request.getOffset()).isGreaterThan(Integer.MAX_VALUE); + } }