From 33c2b7a09d57f07b6679813cfacb92bd0e6f4d12 Mon Sep 17 00:00:00 2001 From: John D Date: Thu, 31 Oct 2019 18:17:16 -0700 Subject: [PATCH 1/3] Added Query and Scan limit features to save money on the new ondemand feature --- pom.xml | 20 ++++++++++--------- ...sHashAndRangeKeyEntityInformationImpl.java | 5 +++-- ...dAndGetterReflectionEntityInformation.java | 4 ++++ .../spring/data/dynamodb/core/FeedUserIT.java | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 3995eb0e..e85d079f 100755 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 com.github.derjust spring-data-dynamodb - 5.1.1-SNAPSHOT + 5.2.0-SNAPSHOT Spring Data DynamoDB 2018 @@ -37,11 +37,11 @@ - 5.1.2.RELEASE - 2.1.2.RELEASE + 5.2.0.RELEASE + 2.2.0.RELEASE 6.0.9.Final - 1.11.515 + 1.11.664 4.12 2.23.0 1.2 @@ -252,7 +252,7 @@ maven-surefire-plugin - 2.20.1 + 2.22.2 maven-jar-plugin @@ -304,7 +304,7 @@ Spring Data - 2.1 + 2.2 @@ -362,7 +362,7 @@ org.jacoco jacoco-maven-plugin - 0.7.9 + 0.8.5 @@ -438,7 +438,7 @@ com.github.spotbugs spotbugs-maven-plugin - 3.1.5 + 3.1.12.2 Max @@ -851,6 +851,8 @@ Low + + org.apache.maven.plugins maven-jxr-plugin @@ -873,7 +875,7 @@ org.apache.maven.plugins maven-surefire-report-plugin - 2.20.1 + 2.22.2 diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java index 7a6ed7e7..6ec19003 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java @@ -18,7 +18,6 @@ import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMarshaller; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter; import org.springframework.data.annotation.Id; -import org.springframework.data.repository.core.support.ReflectionEntityInformation; import java.util.Map; import java.util.Optional; @@ -34,7 +33,9 @@ * @author Michael Lavelle * @author Sebastian Just */ -public class DynamoDBIdIsHashAndRangeKeyEntityInformationImpl extends ReflectionEntityInformation +public class DynamoDBIdIsHashAndRangeKeyEntityInformationImpl + extends + FieldAndGetterReflectionEntityInformation implements DynamoDBIdIsHashAndRangeKeyEntityInformation { diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java index b3f5a4c3..ab2d35bb 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java @@ -77,6 +77,9 @@ public FieldAndGetterReflectionEntityInformation(@NonNull Class domainClass, if (method != null) { ReflectionUtils.makeAccessible(method); } + if (field != null) { + ReflectionUtils.makeAccessible(field); + } } /* @@ -88,6 +91,7 @@ public FieldAndGetterReflectionEntityInformation(@NonNull Class domainClass, @Override @SuppressWarnings("unchecked") public ID getId(T entity) { + if (method != null) { return entity == null ? null : (ID) ReflectionUtils.invokeMethod(method, entity); } else { diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java b/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java index bec3d373..4e5dbed2 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java @@ -44,7 +44,7 @@ public static class TestAppConfig { @Test public void feed_test() { - PageRequest pageRequest = PageRequest.of(1, 10, new Sort(Direction.DESC, "usrNo")); + PageRequest pageRequest = PageRequest.of(1, 10, Sort.by(Direction.DESC, "usrNo")); feedUserRepository.findByUsrNo(2, pageRequest); // runnable feedUserRepository.findByUsrNoAndFeedOpenYn(2, true, pageRequest); // not runnable } From bfc8c4b18f00105679aaa965e8c0a306e138c7c1 Mon Sep 17 00:00:00 2001 From: John D Date: Thu, 31 Oct 2019 18:17:16 -0700 Subject: [PATCH 2/3] Support for Spring boot 2.2 --- pom.xml | 20 ++++++++++--------- ...sHashAndRangeKeyEntityInformationImpl.java | 5 +++-- ...dAndGetterReflectionEntityInformation.java | 4 ++++ .../spring/data/dynamodb/core/FeedUserIT.java | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 3995eb0e..e85d079f 100755 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 com.github.derjust spring-data-dynamodb - 5.1.1-SNAPSHOT + 5.2.0-SNAPSHOT Spring Data DynamoDB 2018 @@ -37,11 +37,11 @@ - 5.1.2.RELEASE - 2.1.2.RELEASE + 5.2.0.RELEASE + 2.2.0.RELEASE 6.0.9.Final - 1.11.515 + 1.11.664 4.12 2.23.0 1.2 @@ -252,7 +252,7 @@ maven-surefire-plugin - 2.20.1 + 2.22.2 maven-jar-plugin @@ -304,7 +304,7 @@ Spring Data - 2.1 + 2.2 @@ -362,7 +362,7 @@ org.jacoco jacoco-maven-plugin - 0.7.9 + 0.8.5 @@ -438,7 +438,7 @@ com.github.spotbugs spotbugs-maven-plugin - 3.1.5 + 3.1.12.2 Max @@ -851,6 +851,8 @@ Low + + org.apache.maven.plugins maven-jxr-plugin @@ -873,7 +875,7 @@ org.apache.maven.plugins maven-surefire-report-plugin - 2.20.1 + 2.22.2 diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java index 7a6ed7e7..6ec19003 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBIdIsHashAndRangeKeyEntityInformationImpl.java @@ -18,7 +18,6 @@ import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMarshaller; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter; import org.springframework.data.annotation.Id; -import org.springframework.data.repository.core.support.ReflectionEntityInformation; import java.util.Map; import java.util.Optional; @@ -34,7 +33,9 @@ * @author Michael Lavelle * @author Sebastian Just */ -public class DynamoDBIdIsHashAndRangeKeyEntityInformationImpl extends ReflectionEntityInformation +public class DynamoDBIdIsHashAndRangeKeyEntityInformationImpl + extends + FieldAndGetterReflectionEntityInformation implements DynamoDBIdIsHashAndRangeKeyEntityInformation { diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java index b3f5a4c3..ab2d35bb 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/FieldAndGetterReflectionEntityInformation.java @@ -77,6 +77,9 @@ public FieldAndGetterReflectionEntityInformation(@NonNull Class domainClass, if (method != null) { ReflectionUtils.makeAccessible(method); } + if (field != null) { + ReflectionUtils.makeAccessible(field); + } } /* @@ -88,6 +91,7 @@ public FieldAndGetterReflectionEntityInformation(@NonNull Class domainClass, @Override @SuppressWarnings("unchecked") public ID getId(T entity) { + if (method != null) { return entity == null ? null : (ID) ReflectionUtils.invokeMethod(method, entity); } else { diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java b/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java index bec3d373..4e5dbed2 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/core/FeedUserIT.java @@ -44,7 +44,7 @@ public static class TestAppConfig { @Test public void feed_test() { - PageRequest pageRequest = PageRequest.of(1, 10, new Sort(Direction.DESC, "usrNo")); + PageRequest pageRequest = PageRequest.of(1, 10, Sort.by(Direction.DESC, "usrNo")); feedUserRepository.findByUsrNo(2, pageRequest); // runnable feedUserRepository.findByUsrNoAndFeedOpenYn(2, true, pageRequest); // not runnable } From d43430fdec905a535caece68a05a290129c333a3 Mon Sep 17 00:00:00 2001 From: John D Date: Thu, 31 Oct 2019 18:20:59 -0700 Subject: [PATCH 3/3] Support for Spring boot 2.2 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5180528..0b904354 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,10 @@ API changes will follow SEMVER and loosly the Spring Framework releases. | 4.4.x | >= 1.4.0 && < 2.0 | >= 4.3 && < 5.0 | Hopper-SR2 | | 4.5.x | >= 1.4.0 && < 2.0 | >= 4.3 && < 5.0 | Ingalls | | 5.0.x | >= 2.0 && < 2.1 | >= 5.0 && < 5.1 | Kay-SR1 | -| 5.1.x | >= 2.1 | >= 5.1 | Lovelace-SR1 | +| 5.1.x | == 2.1 | >= 5.1 | Lovelace-SR1 | +| 5.2.x | >= 2.2 | >= 5.2 | Moore-RELASE | + + `spring-data-dynamodb` depends directly on `spring-data` as also `spring-context`, `spring-data` and `spring-tx`. `compile` and `runtime` dependencies are kept to a minimum to allow easy integartion, for example into