diff --git a/README.md b/README.md index d2c13cef..bd92c6c0 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ API changes will follow SEMVER and loosly the Spring Framework releases. | 5.0.x | >= 2.0 && < 2.1 | >= 5.0 && < 5.1 | Kay-SR1 | | 5.1.x | == 2.1 | >= 5.1 | Lovelace-SR1 | | 5.2.x | >= 2.2 | >= 5.2 | Moore-RELEASE, Nuemann-RELASE | - +| 6.0.x | >= 3.0 | >= 6.0 | 2023.0.5 | `spring-data-dynamodb` depends directly on `spring-data` as also `spring-context`, `spring-data` and `spring-tx`. diff --git a/pom.xml b/pom.xml index 216efa84..6b67975e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 io.github.boostchicken spring-data-dynamodb - 5.2.6-SNAPSHOT + 6.0.0-SNAPSHOT Spring Data DynamoDB 2018 @@ -37,23 +37,22 @@ - 5.3.15 - 2.4.15 + 6.0.13 + 3.1.5 - 6.2.2.Final - 1.12.150 + 1.12.583 4.13.2 - 2.23.0 - 2.0 + 5.7.0 + 4.0.1 1.2.0 1.0.392 3.0.5 UTF-8 UTF-8 - 1.8 - 1.8 - 2.6.3 + 17 + 17 + 3.1.5 @@ -71,19 +70,12 @@ ${spring-data.version} - - org.hibernate.validator - hibernate-validator - ${hibernate-validator.version} - - junit junit ${junit.version} - org.mockito mockito-core @@ -102,11 +94,11 @@ DynamoDBLocal [1.11,2.0) - - org.apache.logging.log4j - log4j-to-slf4j - 2.17.1 - + + org.apache.logging.log4j + log4j-to-slf4j + 2.17.1 + uk.org.lidalia @@ -145,11 +137,11 @@ org.springframework spring-tx - - org.springframework.boot - spring-boot-starter-validation + + org.springframework.boot + spring-boot-starter-validation ${spring-boot-starter-validation.version} - + org.springframework.data @@ -157,8 +149,10 @@ - org.hibernate.validator - hibernate-validator + jakarta.validation + jakarta.validation-api + 3.0.2 + compile @@ -169,8 +163,8 @@ - javax.enterprise - cdi-api + jakarta.enterprise + jakarta.enterprise.cdi-api ${cdi.version} compile @@ -186,11 +180,11 @@ DynamoDBLocal test - - org.apache.logging.log4j - log4j-to-slf4j - test - + + org.apache.logging.log4j + log4j-to-slf4j + test + junit junit @@ -336,7 +330,7 @@ org.jacoco jacoco-maven-plugin - 0.8.5 + 0.8.11 @@ -396,26 +390,28 @@ src/checkstyle.xml - - com.github.spotbugs - spotbugs-maven-plugin - 4.0.4 - - Max - - Max - - src/spotbugs-exclude.xml - - - - verify - - check - - - - + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.1.0 + + + true + Max + + Max + + src/spotbugs-exclude.xml + + + + verify + + check + + + + org.apache.maven.plugins maven-release-plugin @@ -648,31 +644,31 @@ true - - - com.github.github - site-maven-plugin - 0.12 - - - - site - - - site-deploy - - - github - - Building site - - ${site.path} - - true - - - - + + + com.github.github + site-maven-plugin + 0.12 + + + + site + + + site-deploy + + + github + + Building site + + ${site.path} + + true + + + + @@ -692,7 +688,7 @@ 0 - derjust + derjust Sebastian J zeeman@zeeman.de America/New_York @@ -739,7 +735,7 @@ Rene Enriquez enriquezrene - + Ryon Day https://github.com/ryonday @@ -763,8 +759,8 @@ - GitHub - https://github.com/boostchicken/spring-data-dynamodb/issues + GitHub + https://github.com/boostchicken/spring-data-dynamodb/issues diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/config/DynamoDBAuditingRegistrar.java b/src/main/java/org/socialsignin/spring/data/dynamodb/config/DynamoDBAuditingRegistrar.java index 1b0dff98..9478464f 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/config/DynamoDBAuditingRegistrar.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/config/DynamoDBAuditingRegistrar.java @@ -28,12 +28,14 @@ import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport; import org.springframework.data.auditing.config.AuditingConfiguration; import org.springframework.data.config.ParsingUtils; +import org.springframework.data.repository.config.PersistentEntitiesFactoryBean; import org.springframework.util.Assert; import java.lang.annotation.Annotation; import static org.socialsignin.spring.data.dynamodb.config.BeanNames.MAPPING_CONTEXT_BEAN_NAME; import static org.springframework.beans.factory.config.BeanDefinition.ROLE_INFRASTRUCTURE; +import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition; /** * {@link org.springframework.context.annotation.ImportBeanDefinitionRegistrar} @@ -97,8 +99,11 @@ protected BeanDefinitionBuilder getAuditHandlerBeanDefinitionBuilder(AuditingCon LOGGER.trace("getAuditHandlerBeanDefinitionBuilder"); Assert.notNull(configuration, "AuditingConfiguration must not be null!"); + BeanDefinitionBuilder persistentEntities = rootBeanDefinition(PersistentEntitiesFactoryBean.class); + persistentEntities.addConstructorArgReference(MAPPING_CONTEXT_BEAN_NAME); + BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class); - builder.addConstructorArgReference(MAPPING_CONTEXT_BEAN_NAME); + builder.addConstructorArgValue(persistentEntities.getBeanDefinition()); return configureDefaultAuditHandlerAttributes(configuration, builder); } @@ -151,4 +156,4 @@ private void defaultDependenciesIfNecessary(BeanDefinitionRegistry registry, Obj registry.registerBeanDefinition(MAPPING_CONTEXT_BEAN_NAME, definition); } } -} \ No newline at end of file +} diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/config/EnableDynamoDBAuditing.java b/src/main/java/org/socialsignin/spring/data/dynamodb/config/EnableDynamoDBAuditing.java index 38e08d42..48c38e5a 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/config/EnableDynamoDBAuditing.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/config/EnableDynamoDBAuditing.java @@ -57,8 +57,8 @@ /** * @return Configures a * {@link org.springframework.data.auditing.DateTimeProvider} bean name - * that allows customizing the {@link org.joda.time.DateTime} to be used + * that allows customizing the {@link java.time.LocalDateTime} to be used * for setting creation and modification dates. */ String dateTimeProviderRef() default ""; -} \ No newline at end of file +} diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/AbstractDynamoDBDateMarshaller.java b/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/AbstractDynamoDBDateMarshaller.java index 2ce6e89e..fc12d410 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/AbstractDynamoDBDateMarshaller.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/AbstractDynamoDBDateMarshaller.java @@ -64,4 +64,4 @@ public Date unmarshall(Class clazz, String obj) throws IllegalArgumentExce } } -} +} \ No newline at end of file diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListener.java b/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListener.java index b253640f..d68b7443 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListener.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListener.java @@ -34,16 +34,16 @@ import org.slf4j.LoggerFactory; import org.springframework.util.Assert; -import javax.validation.ConstraintViolation; -import javax.validation.ConstraintViolationException; -import javax.validation.Validator; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; +import jakarta.validation.Validator; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** - * javax.validation dependant entities validator. When it is registered as + * jakarta.validation dependant entities validator. When it is registered as * Spring component its automatically invoked before entities are saved in * database. * diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/Query.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/Query.java index 65dddc27..358854d1 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/Query.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/Query.java @@ -111,4 +111,4 @@ * @return expression value mappings for query */ ExpressionAttribute[] expressionMappingValues() default @ExpressionAttribute; -} +} \ No newline at end of file diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBean.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBean.java index 9054d11e..409a6a86 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBean.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBean.java @@ -24,11 +24,10 @@ import org.springframework.data.repository.cdi.CdiRepositoryBean; import org.springframework.util.Assert; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import java.lang.annotation.Annotation; -import java.util.Optional; import java.util.Set; /** @@ -85,13 +84,11 @@ class DynamoDBRepositoryBean extends CdiRepositoryBean { /* * (non-Javadoc) * - * @see javax.enterprise.context.spi.Contextual#create(javax.enterprise + * @see jakarta.enterprise.context.spi.Contextual#create(jakarta.enterprise * .context.spi.CreationalContext, Class, Optional) */ @Override - protected T create(CreationalContext creationalContext, Class repositoryType, - Optional customImplementation) { - + protected T create(CreationalContext creationalContext, Class repositoryType) { // Get an instance from the associated AmazonDynamoDB bean. AmazonDynamoDB amazonDynamoDB = getDependencyInstance(amazonDynamoDBBean, AmazonDynamoDB.class); @@ -121,5 +118,4 @@ protected T create(CreationalContext creationalContext, Class repositoryTy DynamoDBRepositoryFactory factory = new DynamoDBRepositoryFactory(dynamoDBOperations); return factory.getRepository(repositoryType); } - } diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryExtension.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryExtension.java index 55f6775a..003af3c4 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryExtension.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryExtension.java @@ -24,12 +24,12 @@ import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations; import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; -import javax.enterprise.event.Observes; -import javax.enterprise.inject.UnsatisfiedResolutionException; -import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.ProcessBean; +import jakarta.enterprise.event.Observes; +import jakarta.enterprise.inject.UnsatisfiedResolutionException; +import jakarta.enterprise.inject.spi.AfterBeanDiscovery; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.ProcessBean; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.HashMap; diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigFactory.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigFactory.java index 424baa7f..97d12bea 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigFactory.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperConfigFactory.java @@ -80,4 +80,4 @@ private DynamoDBMapperConfig createDynamoDBMapperConfig(DynamoDBMapperConfig dyn // Deprecated but the only way how DynamoDBMapperConfig#merge is exposed return new DynamoDBMapperConfig(dynamoDBMapperConfig, emptyBuilder.build()); } -} +} \ No newline at end of file diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java index c4665c18..b1f18561 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBMapperFactory.java @@ -45,4 +45,4 @@ public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } -} +} \ No newline at end of file diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/EnableDynamoDBRepositories.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/EnableDynamoDBRepositories.java index 92967d66..ccf2d2eb 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/EnableDynamoDBRepositories.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/EnableDynamoDBRepositories.java @@ -159,7 +159,7 @@ String dynamoDBMapperRef() default ""; /** - * Returns the {@link javax.validation.Validator } reference to be used for to + * Returns the {@link jakarta.validation.Validator } reference to be used for to * validate DynamoDB entities * * @return The diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBRepositoryFactoryBean.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBRepositoryFactoryBean.java index b89d29b3..c21ec6d3 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBRepositoryFactoryBean.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/DynamoDBRepositoryFactoryBean.java @@ -19,7 +19,7 @@ import org.socialsignin.spring.data.dynamodb.mapping.DynamoDBMappingContext; import org.socialsignin.spring.data.dynamodb.repository.util.DynamoDBMappingContextProcessor; import org.socialsignin.spring.data.dynamodb.repository.util.Entity2DynamoDBTableSynchronizer; -import org.springframework.beans.factory.annotation.Required; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; import org.springframework.data.repository.core.support.RepositoryFactorySupport; @@ -59,23 +59,23 @@ protected RepositoryFactorySupport createRepositoryFactory() { return dynamoDBRepositoryFactory; } - @Required + @Autowired public void setDynamoDBMappingContextProcessor( DynamoDBMappingContextProcessor dynamoDBMappingContextProcessor) { this.dynamoDBMappingContextProcessor = dynamoDBMappingContextProcessor; } - @Required + @Autowired public void setEntity2DynamoDBTableSynchronizer(Entity2DynamoDBTableSynchronizer tableSynchronizer) { this.tableSynchronizer = tableSynchronizer; } - @Required + @Autowired public void setDynamoDBOperations(DynamoDBOperations dynamoDBOperations) { this.dynamoDBOperations = dynamoDBOperations; } - @Required + @Autowired public void setDynamoDBMappingContext(DynamoDBMappingContext dynamoDBMappingContext) { setMappingContext(dynamoDBMappingContext); } diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepository.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepository.java index fdf35bd7..7b164515 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepository.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepository.java @@ -32,7 +32,6 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; import java.util.stream.StreamSupport; /** @@ -102,7 +101,7 @@ public List findAllById(Iterable ids) { } else { return new KeyPair().withHashKey(id); } - }).collect(Collectors.toList()); + }).toList(); Map, List> keyPairsMap = Collections., List>singletonMap(domainType, keyPairs); @@ -189,6 +188,12 @@ public void delete(T entity) { dynamoDBOperations.delete(entity); } + @Override + public void deleteAllById(Iterable ids) { + var bla = StreamSupport.stream(ids.spliterator(), false).map(id -> (ID)id).toList(); + deleteAll(findAllById(bla)); + } + @Override public void deleteAll(Iterable entities) { diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/util/Entity2DynamoDBTableSynchronizer.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/util/Entity2DynamoDBTableSynchronizer.java index 73bfafe9..e3eb533c 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/util/Entity2DynamoDBTableSynchronizer.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/util/Entity2DynamoDBTableSynchronizer.java @@ -235,4 +235,4 @@ private DescribeTableResult performValidate(DynamoDBEntityInformation ent return result; } -} +} \ No newline at end of file diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/config/AuditingIntegrationTests.java b/src/test/java/org/socialsignin/spring/data/dynamodb/config/AuditingIntegrationTests.java index 7a1f4f4f..cddea7c7 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/config/AuditingIntegrationTests.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/config/AuditingIntegrationTests.java @@ -15,8 +15,9 @@ */ package org.socialsignin.spring.data.dynamodb.config; +import java.time.LocalDateTime; + import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; -import org.joda.time.DateTime; import org.junit.Test; import org.socialsignin.spring.data.dynamodb.mapping.DynamoDBMappingContext; import org.socialsignin.spring.data.dynamodb.mapping.event.BeforeSaveEvent; @@ -69,11 +70,11 @@ class Entity { @Id Long id; @CreatedDate - DateTime created; - DateTime modified; + LocalDateTime created; + LocalDateTime modified; @LastModifiedDate - public DateTime getModified() { + public LocalDateTime getModified() { return modified; } } diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/FeedPagingRepository.java b/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/FeedPagingRepository.java index 015e0cb4..a781ee2c 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/FeedPagingRepository.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/FeedPagingRepository.java @@ -20,9 +20,10 @@ import org.socialsignin.spring.data.dynamodb.repository.EnableScanCount; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.data.repository.CrudRepository; @EnableScan @EnableScanCount -public interface FeedPagingRepository extends DynamoDBPagingAndSortingRepository { +public interface FeedPagingRepository extends DynamoDBPagingAndSortingRepository, CrudRepository { Page findAllByMessageOrderByRegDateDesc(String message, Pageable pageable); -} \ No newline at end of file +} diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/UserPaginationRepository.java b/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/UserPaginationRepository.java index 786334a1..33f9df29 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/UserPaginationRepository.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/domain/sample/UserPaginationRepository.java @@ -21,9 +21,10 @@ import org.socialsignin.spring.data.dynamodb.repository.EnableScanCount; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingRepository; -public interface UserPaginationRepository extends PagingAndSortingRepository { +public interface UserPaginationRepository extends PagingAndSortingRepository, CrudRepository { @EnableScan @EnableScanCount diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListenerTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListenerTest.java index 13da1052..4a488674 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListenerTest.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/mapping/event/ValidatingDynamoDBEventListenerTest.java @@ -24,9 +24,9 @@ import org.mockito.junit.MockitoJUnitRunner; import org.socialsignin.spring.data.dynamodb.domain.sample.User; -import javax.validation.ConstraintViolation; -import javax.validation.ConstraintViolationException; -import javax.validation.Validator; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; +import jakarta.validation.Validator; import java.util.HashSet; import java.util.Set; diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBeanTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBeanTest.java index c8d2e2fd..75085e3a 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBeanTest.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBeanTest.java @@ -29,12 +29,11 @@ import org.socialsignin.spring.data.dynamodb.domain.sample.User; import org.springframework.data.repository.Repository; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import java.lang.annotation.Annotation; import java.util.Collections; -import java.util.Optional; import java.util.Set; import static org.junit.Assert.assertNotNull; @@ -59,7 +58,7 @@ interface SampleRepository extends Repository { @Mock private AmazonDynamoDB amazonDynamoDB; @Mock - private javax.enterprise.inject.spi.Bean dynamoDBMapperConfigBean; + private jakarta.enterprise.inject.spi.Bean dynamoDBMapperConfigBean; @Mock private Bean dynamoDBOperationsBean; @@ -121,8 +120,7 @@ public void testCreateRepostiory() { DynamoDBRepositoryBean underTest = new DynamoDBRepositoryBean<>(beanManager, amazonDynamoDBBean, dynamoDBMapperConfigBean, null, dynamoDBMapperBean, qualifiers, repositoryType); - SampleRepository actual = underTest.create(repoCreationalContext, SampleRepository.class, - Optional.empty()); + SampleRepository actual = underTest.create(repoCreationalContext, SampleRepository.class); assertNotNull(actual); } } diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/query/AbstractDynamoDBQueryTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/query/AbstractDynamoDBQueryTest.java index 7d6eb4e7..f3594a30 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/query/AbstractDynamoDBQueryTest.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/query/AbstractDynamoDBQueryTest.java @@ -15,21 +15,6 @@ */ package org.socialsignin.spring.data.dynamodb.repository.query; -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -47,6 +32,22 @@ import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.util.TypeInformation; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class AbstractDynamoDBQueryTest { @@ -120,6 +121,7 @@ public void setUp() { doReturn(Page.class).when(typeInformation).getType(); doReturn(typeInformation).when(metadata) .getReturnType(ArgumentMatchers.argThat(argument -> "findByName".equals(argument.getName()))); + doReturn(TypeInformation.of(Page.class)).when(metadata).getDomainTypeInformation(); doReturn(UserRepository.class).when(metadata).getRepositoryInterface(); doReturn(User.class).when(metadata).getReturnedDomainClass(any()); } diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepositoryTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepositoryTest.java index 6096a6ec..d5daeb34 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepositoryTest.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/repository/support/SimpleDynamoDBCrudRepositoryTest.java @@ -41,9 +41,11 @@ import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; +import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; +import static org.junit.internal.matchers.ThrowableMessageMatcher.hasMessage; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyIterable; import static org.mockito.ArgumentMatchers.eq; @@ -266,8 +268,9 @@ public void testBatchSaveFailure() { expectedException.expect(BatchWriteException.class); expectedException.expectMessage( - "Processing of entities failed!; nested exception is java.lang.Exception: First exception"); + "Processing of entities failed!"); + expectedException.expectCause(hasMessage(equalTo("First exception"))); repoForEntityWithOnlyHashKey.saveAll(entities); } } diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/utils/ExceptionHandlerTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/utils/ExceptionHandlerTest.java index 23d5e2f4..55ca4142 100644 --- a/src/test/java/org/socialsignin/spring/data/dynamodb/utils/ExceptionHandlerTest.java +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/utils/ExceptionHandlerTest.java @@ -15,15 +15,17 @@ */ package org.socialsignin.spring.data.dynamodb.utils; -import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; -import org.junit.Test; -import org.socialsignin.spring.data.dynamodb.exception.BatchWriteException; - import java.util.ArrayList; import java.util.Collections; import java.util.List; +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; +import org.junit.Test; +import org.socialsignin.spring.data.dynamodb.exception.BatchWriteException; + import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class ExceptionHandlerTest { @@ -50,8 +52,11 @@ public void testSimple() { BatchWriteException actual = underTest.repackageToException(failedBatches, BatchWriteException.class); - assertEquals("Processing of entities failed!; nested exception is java.lang.Exception: Test Exception", - actual.getMessage()); + assertEquals("Processing of entities failed!", actual.getMessage()); + + assertNotNull(actual.getCause()); + assertEquals("Test Exception", actual.getCause().getMessage()); + assertNull(actual.getCause().getCause()); assertEquals(1, actual.getSuppressed().length); assertEquals("Followup Exception", actual.getSuppressed()[0].getMessage());