diff --git a/src/main/java/org/springframework/data/domain/AbstractPageRequest.java b/src/main/java/org/springframework/data/domain/AbstractPageRequest.java index d5852e38e..8b929d895 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 @@ import org.springframework.lang.Nullable; * * @author Thomas Darimont * @author Oliver Gierke + * @author Alex Bondarev */ public abstract class AbstractPageRequest implements Pageable, Serializable { @@ -74,7 +75,7 @@ public abstract class AbstractPageRequest implements Pageable, Serializable { * @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 85a38a127..0e09dae8e 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 @@ import org.junit.Test; /** * @author Thomas Darimont + * @author Alex Bondarev */ public abstract class AbstractPageRequestUnitTests { @@ -75,4 +76,12 @@ public abstract class AbstractPageRequestUnitTests { 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); + } }