From cbfe6ef58f60db1cd4ca55e5b0790c84191be9d9 Mon Sep 17 00:00:00 2001 From: Moritz Becker Date: Thu, 9 May 2019 13:15:35 +0200 Subject: [PATCH] [#795] revert binary incompatible changes in KeysetPageRequest --- .../data/impl/query/CriteriaQueryParameterBinder.java | 9 ++++++++- .../impl/query/PartTreeBlazePersistenceQuery.java | 7 ++++++- .../repository/EntityViewAwareRepositoryImpl.java | 7 ++++++- .../data/impl/query/CriteriaQueryParameterBinder.java | 9 ++++++++- .../impl/query/PartTreeBlazePersistenceQuery.java | 7 ++++++- .../repository/EntityViewAwareRepositoryImpl.java | 7 ++++++- .../data/impl/query/CriteriaQueryParameterBinder.java | 9 ++++++++- .../impl/query/PartTreeBlazePersistenceQuery.java | 7 ++++++- .../repository/EntityViewAwareRepositoryImpl.java | 7 ++++++- .../spring/data/repository/KeysetPageRequest.java | 11 +++-------- 10 files changed, 63 insertions(+), 17 deletions(-) diff --git a/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java b/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java index a0ada22c64..bee3b9e7dd 100644 --- a/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java +++ b/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java @@ -19,6 +19,8 @@ import com.blazebit.persistence.spring.data.base.query.AbstractCriteriaQueryParameterBinder; import com.blazebit.persistence.spring.data.base.query.JpaParameters; import com.blazebit.persistence.spring.data.base.query.ParameterMetadataProvider; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; +import org.springframework.data.domain.Pageable; /** * Concrete version for Spring Data 1.x. @@ -34,6 +36,11 @@ public CriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, I @Override protected int getOffset() { - return getPageable().getOffset(); + Pageable pageable = getPageable(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return pageable.getOffset(); + } } } diff --git a/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java b/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java index b8ca9734b6..d7039adb2f 100644 --- a/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java +++ b/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java @@ -22,6 +22,7 @@ import com.blazebit.persistence.spring.data.base.query.JpaParameters; import com.blazebit.persistence.spring.data.base.query.ParameterBinder; import com.blazebit.persistence.spring.data.base.query.ParameterMetadataProvider; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; import com.blazebit.persistence.view.EntityViewManager; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.provider.PersistenceProvider; @@ -62,7 +63,11 @@ protected int getOffset(Pageable pageable) { if (pageable == null) { return 0; } - return pageable.getOffset(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return pageable.getOffset(); + } } @Override diff --git a/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java b/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java index 743b9d0fce..5caf81470f 100644 --- a/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java +++ b/integration/spring-data/1.x/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java @@ -20,6 +20,7 @@ import com.blazebit.persistence.spring.data.base.repository.AbstractEntityViewAwareRepository; import com.blazebit.persistence.spring.data.repository.EntityViewRepository; import com.blazebit.persistence.spring.data.repository.EntityViewSpecificationExecutor; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; import com.blazebit.persistence.view.EntityViewManager; import org.springframework.data.domain.Example; import org.springframework.data.domain.Pageable; @@ -66,6 +67,10 @@ public E findById(ID id) { @Override protected int getOffset(Pageable pageable) { - return pageable.getOffset(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return pageable.getOffset(); + } } } diff --git a/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java b/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java index 2f459faa50..af63b78945 100644 --- a/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java +++ b/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java @@ -19,6 +19,8 @@ import com.blazebit.persistence.spring.data.base.query.AbstractCriteriaQueryParameterBinder; import com.blazebit.persistence.spring.data.base.query.JpaParameters; import com.blazebit.persistence.spring.data.base.query.ParameterMetadataProvider; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; +import org.springframework.data.domain.Pageable; /** * Concrete version for Spring Data 2.x. @@ -34,6 +36,11 @@ public CriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, I @Override protected int getOffset() { - return (int) getPageable().getOffset(); + Pageable pageable = getPageable(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return (int) pageable.getOffset(); + } } } diff --git a/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java b/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java index ddc0efa345..5d2695f4cc 100644 --- a/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java +++ b/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java @@ -22,6 +22,7 @@ import com.blazebit.persistence.spring.data.base.query.JpaParameters; import com.blazebit.persistence.spring.data.base.query.ParameterBinder; import com.blazebit.persistence.spring.data.base.query.ParameterMetadataProvider; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; import com.blazebit.persistence.view.EntityViewManager; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.provider.PersistenceProvider; @@ -60,7 +61,11 @@ protected boolean isExists(PartTree tree) { @Override protected int getOffset(Pageable pageable) { if (pageable.isPaged()) { - return (int) pageable.getOffset(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return (int) pageable.getOffset(); + } } return 0; } diff --git a/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java b/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java index 2fa610ead2..34fee38582 100644 --- a/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java +++ b/integration/spring-data/2.0/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java @@ -19,6 +19,7 @@ import com.blazebit.persistence.CriteriaBuilderFactory; import com.blazebit.persistence.spring.data.base.repository.AbstractEntityViewAwareRepository; import com.blazebit.persistence.spring.data.repository.EntityViewRepository; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; import com.blazebit.persistence.view.EntityViewManager; import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import org.springframework.data.domain.Example; @@ -73,6 +74,10 @@ private Object convert(Optional optional, Class targetType) { @Override protected int getOffset(Pageable pageable) { - return (int) pageable.getOffset(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return (int) pageable.getOffset(); + } } } diff --git a/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java b/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java index 2f459faa50..af63b78945 100644 --- a/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java +++ b/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/CriteriaQueryParameterBinder.java @@ -19,6 +19,8 @@ import com.blazebit.persistence.spring.data.base.query.AbstractCriteriaQueryParameterBinder; import com.blazebit.persistence.spring.data.base.query.JpaParameters; import com.blazebit.persistence.spring.data.base.query.ParameterMetadataProvider; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; +import org.springframework.data.domain.Pageable; /** * Concrete version for Spring Data 2.x. @@ -34,6 +36,11 @@ public CriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, I @Override protected int getOffset() { - return (int) getPageable().getOffset(); + Pageable pageable = getPageable(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return (int) pageable.getOffset(); + } } } diff --git a/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java b/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java index ddc0efa345..5d2695f4cc 100644 --- a/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java +++ b/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/query/PartTreeBlazePersistenceQuery.java @@ -22,6 +22,7 @@ import com.blazebit.persistence.spring.data.base.query.JpaParameters; import com.blazebit.persistence.spring.data.base.query.ParameterBinder; import com.blazebit.persistence.spring.data.base.query.ParameterMetadataProvider; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; import com.blazebit.persistence.view.EntityViewManager; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.provider.PersistenceProvider; @@ -60,7 +61,11 @@ protected boolean isExists(PartTree tree) { @Override protected int getOffset(Pageable pageable) { if (pageable.isPaged()) { - return (int) pageable.getOffset(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return (int) pageable.getOffset(); + } } return 0; } diff --git a/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java b/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java index 3f36ede4f8..167c4bc3fd 100644 --- a/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java +++ b/integration/spring-data/2.1/src/main/java/com/blazebit/persistence/spring/data/impl/repository/EntityViewAwareRepositoryImpl.java @@ -19,6 +19,7 @@ import com.blazebit.persistence.CriteriaBuilderFactory; import com.blazebit.persistence.spring.data.base.repository.AbstractEntityViewAwareRepository; import com.blazebit.persistence.spring.data.repository.EntityViewRepository; +import com.blazebit.persistence.spring.data.repository.KeysetPageable; import com.blazebit.persistence.view.EntityViewManager; import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import org.springframework.data.domain.Example; @@ -83,6 +84,10 @@ public void setRepositoryMethodMetadata(CrudMethodMetadata crudMethodMetadata) { @Override protected int getOffset(Pageable pageable) { - return (int) pageable.getOffset(); + if (pageable instanceof KeysetPageable) { + return ((KeysetPageable) pageable).getIntOffset(); + } else { + return (int) pageable.getOffset(); + } } } diff --git a/integration/spring-data/base/src/main/java/com/blazebit/persistence/spring/data/repository/KeysetPageRequest.java b/integration/spring-data/base/src/main/java/com/blazebit/persistence/spring/data/repository/KeysetPageRequest.java index 4ee893bdf6..064758a807 100644 --- a/integration/spring-data/base/src/main/java/com/blazebit/persistence/spring/data/repository/KeysetPageRequest.java +++ b/integration/spring-data/base/src/main/java/com/blazebit/persistence/spring/data/repository/KeysetPageRequest.java @@ -30,7 +30,7 @@ public class KeysetPageRequest extends PageRequest implements KeysetPageable { private final KeysetPage keysetPage; - private final long offset; + private final int offset; /** * Construct a page request with an optional keyset page that may be used for keyset pagination. @@ -79,17 +79,12 @@ public KeysetPageRequest(KeysetPage keysetPage, Sort sort) { * @param pageSize The number of elements per page * @since 1.3.0 */ - public KeysetPageRequest(KeysetPage keysetPage, Sort sort, long offset, int pageSize) { - super((int) (offset / pageSize), pageSize, sort); + public KeysetPageRequest(KeysetPage keysetPage, Sort sort, int offset, int pageSize) { + super(offset / pageSize, pageSize, sort); this.keysetPage = keysetPage; this.offset = offset; } - @Override - public long getOffset() { - return offset; - } - @Override public int getIntOffset() { return (int) offset;