Skip to content

Commit 42aca61

Browse files
authored
Merge pull request #3 from derjust/master
backport
2 parents d15984d + bbc97ec commit 42aca61

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1437
-713
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ please see [spring-data-dynamodb-examples](https://github.com/derjust/spring-dat
3131

3232
## Quick Start ##
3333

34-
Download the JAR though [Maven Central](http://mvnrepository.com/artifact/com.github.derjust/spring-data-dynamodb) ([`SNAPSHOT` builds](https://oss.sonatype.org/content/repositories/snapshots/com/github/derjust/spring-data-dynamodb/) are available via the [OSSRH snapshot repository](https://stackoverflow.com/a/7717234/25332) ):
34+
Download the JAR though [Maven Central](http://mvnrepository.com/artifact/com.github.derjust/spring-data-dynamodb) ([`SNAPSHOT` builds](https://oss.sonatype.org/content/repositories/snapshots/com/github/derjust/spring-data-dynamodb/) are available via the [OSSRH snapshot repository](https://github.com/derjust/spring-data-dynamodb/wiki/Access-to-releases) ):
3535

3636
```xml
3737
<dependency>
3838
<groupId>com.github.derjust</groupId>
3939
<artifactId>spring-data-dynamodb</artifactId>
40-
<version>5.0.4</version>
40+
<version>5.1.0</version>
4141
</dependency>
4242
```
4343

pom.xml

Lines changed: 46 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<modelVersion>4.0.0</modelVersion>
2121
<groupId>com.github.derjust</groupId>
2222
<artifactId>spring-data-dynamodb</artifactId>
23-
<version>5.1.0-SNAPSHOT</version>
23+
<version>5.1.1-SNAPSHOT</version>
2424
<name>Spring Data DynamoDB</name>
2525
<inceptionYear>2018</inceptionYear>
2626

@@ -101,6 +101,11 @@
101101
<artifactId>DynamoDBLocal</artifactId>
102102
<version>[1.11,2.0)</version>
103103
</dependency>
104+
<dependency>
105+
<groupId>org.apache.logging.log4j</groupId>
106+
<artifactId>log4j-to-slf4j</artifactId>
107+
<version>2.8.2</version>
108+
</dependency>
104109

105110
<dependency>
106111
<groupId>uk.org.lidalia</groupId>
@@ -175,7 +180,12 @@
175180
<groupId>com.amazonaws</groupId>
176181
<artifactId>DynamoDBLocal</artifactId>
177182
<scope>test</scope>
178-
</dependency>
183+
</dependency>
184+
<dependency>
185+
<groupId>org.apache.logging.log4j</groupId>
186+
<artifactId>log4j-to-slf4j</artifactId>
187+
<scope>test</scope>
188+
</dependency>
179189
<dependency>
180190
<groupId>junit</groupId>
181191
<artifactId>junit</artifactId>
@@ -248,6 +258,39 @@
248258
<artifactId>maven-jar-plugin</artifactId>
249259
<version>3.0.2</version>
250260
</plugin>
261+
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
262+
<plugin>
263+
<groupId>org.eclipse.m2e</groupId>
264+
<artifactId>lifecycle-mapping</artifactId>
265+
<version>1.0.0</version>
266+
<configuration>
267+
<lifecycleMappingMetadata>
268+
<pluginExecutions>
269+
<pluginExecution>
270+
<pluginExecutionFilter>
271+
<groupId>
272+
net.revelc.code.formatter
273+
</groupId>
274+
<artifactId>
275+
formatter-maven-plugin
276+
</artifactId>
277+
<versionRange>
278+
[2.7.2,)
279+
</versionRange>
280+
<goals>
281+
<goal>validate</goal>
282+
</goals>
283+
</pluginExecutionFilter>
284+
<action>
285+
<execute>
286+
<runOnIncremental>true</runOnIncremental>
287+
</execute>
288+
</action>
289+
</pluginExecution>
290+
</pluginExecutions>
291+
</lifecycleMappingMetadata>
292+
</configuration>
293+
</plugin>
251294
</plugins>
252295
</pluginManagement>
253296
<plugins>
@@ -401,6 +444,7 @@
401444
<!-- Reports all bugs (other values are medium and max) -->
402445
<threshold>Max</threshold>
403446
<!-- Produces XML report <xmlOutput>true</xmlOutput> -->
447+
<excludeFilterFile>src/spotbugs-exclude.xml</excludeFilterFile>
404448
</configuration>
405449
<executions>
406450
<execution>
@@ -434,26 +478,6 @@
434478
<groupId>org.apache.maven.plugins</groupId>
435479
<artifactId>maven-dependency-plugin</artifactId>
436480
<executions>
437-
<execution>
438-
<!-- Prepare standalone DynamoDB instance (Integration testing) -->
439-
<id>unpack-dynamodb-local</id>
440-
<goals>
441-
<goal>unpack</goal>
442-
</goals>
443-
<phase>pre-integration-test</phase>
444-
<configuration>
445-
<artifactItems>
446-
<artifactItem>
447-
<groupId>com.jcabi</groupId>
448-
<artifactId>DynamoDBLocal</artifactId>
449-
<version>2015-07-16</version>
450-
<type>zip</type>
451-
<outputDirectory>${project.build.directory}/dynamodb-dist</outputDirectory>
452-
<overWrite>false</overWrite>
453-
</artifactItem>
454-
</artifactItems>
455-
</configuration>
456-
</execution>
457481
<execution>
458482
<!-- Prepare SQLite for in-memory DynamoDB instance (Unit testing) -->
459483
<id>copy</id>
@@ -476,60 +500,6 @@
476500
</execution>
477501
</executions>
478502
</plugin>
479-
<plugin>
480-
<groupId>org.codehaus.mojo</groupId>
481-
<artifactId>build-helper-maven-plugin</artifactId>
482-
<executions>
483-
<execution>
484-
<id>reserver-dynamodb-port</id>
485-
<goals>
486-
<goal>reserve-network-port</goal>
487-
</goals>
488-
<phase>pre-integration-test</phase>
489-
<configuration>
490-
<portNames>
491-
<portName>dynamodblocal.port</portName>
492-
</portNames>
493-
</configuration>
494-
</execution>
495-
</executions>
496-
</plugin>
497-
<plugin>
498-
<groupId>com.jcabi</groupId>
499-
<artifactId>jcabi-dynamodb-maven-plugin</artifactId>
500-
<version>0.9.1</version>
501-
<configuration>
502-
<tables>
503-
<table>src/test/resources/user_table.json</table>
504-
<table>src/test/resources/playlist_table.json</table>
505-
<table>src/test/resources/feeduser_table.json</table>
506-
<table>src/test/resources/customerhistory_table.json</table>
507-
<table>src/test/resources/installation_table.json</table>
508-
<table>src/test/resources/auditable_user_table.json</table>
509-
</tables>
510-
<port>${dynamodblocal.port}</port>
511-
<dist>${project.build.directory}/dynamodb-dist</dist>
512-
<arguments>
513-
<argument>-inMemory</argument>
514-
</arguments>
515-
</configuration>
516-
<executions>
517-
<execution>
518-
<id>pre-integration-test</id>
519-
<goals>
520-
<goal>start</goal>
521-
<goal>create-tables</goal>
522-
</goals>
523-
</execution>
524-
<execution>
525-
<id>post-integration-test</id>
526-
<goals>
527-
<goal>stop</goal>
528-
</goals>
529-
<phase>post-integration-test</phase>
530-
</execution>
531-
</executions>
532-
</plugin>
533503
<plugin>
534504
<groupId>org.apache.maven.plugins</groupId>
535505
<artifactId>maven-surefire-plugin</artifactId>

src/changes/changes.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@
2323
<author email="[email protected]">derjust</author>
2424
</properties>
2525
<body>
26-
<release version="5.1.0" date="" description="Spring Boot 2.1 and Spring Data Lovelace-SR1 support">
26+
<release version="5.1.0" date="2019-01-28" description="Spring Boot 2.1 and Spring Data Lovelace-SR1 support">
2727
<action dev="boostschicken" type="add" date="2018-10-28">
2828
Updated all code to work with Spring Boot 2.1 and Lovelace-SR1
2929
</action>
3030
<action dev="boostschicken" type="add" date="2018-10-28">
3131
Updated Mockito to improve test coverage
32+
</action>
3233
<action dev="ryonday" issue="218" type="fix" date="2018-11-09">
3334
Update to Spring-Data 2.1.2.RELEASE and Spring Framework 5.1.2.RELEASE
3435
</action>

src/main/java/org/socialsignin/spring/data/dynamodb/core/DynamoDBTemplate.java

Lines changed: 10 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.socialsignin.spring.data.dynamodb.mapping.event.BeforeSaveEvent;
4040
import org.socialsignin.spring.data.dynamodb.mapping.event.DynamoDBMappingEvent;
4141
import org.springframework.beans.BeansException;
42+
import org.springframework.beans.factory.annotation.Autowired;
4243
import org.springframework.context.ApplicationContext;
4344
import org.springframework.context.ApplicationContextAware;
4445
import org.springframework.context.ApplicationEventPublisher;
@@ -57,42 +58,6 @@ public class DynamoDBTemplate implements DynamoDBOperations, ApplicationContextA
5758
private final DynamoDBMapperConfig dynamoDBMapperConfig;
5859
private ApplicationEventPublisher eventPublisher;
5960

60-
/**
61-
* Convenient constructor to use the default
62-
* {@link DynamoDBMapper#DynamoDBMapper(AmazonDynamoDB)}
63-
*
64-
* @param amazonDynamoDB
65-
* The AWS SDK instance to talk to DynamoDB
66-
* @param dynamoDBMapperConfig
67-
* The config to use
68-
*/
69-
public DynamoDBTemplate(AmazonDynamoDB amazonDynamoDB, DynamoDBMapperConfig dynamoDBMapperConfig) {
70-
this(amazonDynamoDB, dynamoDBMapperConfig, null);
71-
}
72-
73-
/**
74-
* Convenient constructor to use the {@link DynamoDBMapperConfig#DEFAULT}
75-
*
76-
* @param amazonDynamoDB
77-
* The AWS SDK instance to talk to DynamoDB
78-
* @param dynamoDBMapper
79-
* The Mapper to use
80-
*/
81-
public DynamoDBTemplate(AmazonDynamoDB amazonDynamoDB, DynamoDBMapper dynamoDBMapper) {
82-
this(amazonDynamoDB, null, dynamoDBMapper);
83-
}
84-
85-
/**
86-
* Convenient construcotr to thse the {@link DynamoDBMapperConfig#DEFAULT} and
87-
* default {@link DynamoDBMapper#DynamoDBMapper(AmazonDynamoDB)}
88-
*
89-
* @param amazonDynamoDB
90-
* The AWS SDK instance to talk to DynamoDB
91-
*/
92-
public DynamoDBTemplate(AmazonDynamoDB amazonDynamoDB) {
93-
this(amazonDynamoDB, null, null);
94-
}
95-
9661
/**
9762
* Initializes a new {@code DynamoDBTemplate}. The following combinations are
9863
* valid:
@@ -106,49 +71,18 @@ public DynamoDBTemplate(AmazonDynamoDB amazonDynamoDB) {
10671
* can be {@code null} -
10772
* {@link DynamoDBMapper#DynamoDBMapper(AmazonDynamoDB, DynamoDBMapperConfig)}
10873
* is used if {@code null} is passed in
74+
* @param dynamoDBMapperConfig
10975
*/
110-
public DynamoDBTemplate(AmazonDynamoDB amazonDynamoDB, DynamoDBMapperConfig dynamoDBMapperConfig,
111-
DynamoDBMapper dynamoDBMapper) {
76+
@Autowired
77+
public DynamoDBTemplate(AmazonDynamoDB amazonDynamoDB, DynamoDBMapper dynamoDBMapper,
78+
DynamoDBMapperConfig dynamoDBMapperConfig) {
11279
Assert.notNull(amazonDynamoDB, "amazonDynamoDB must not be null!");
113-
this.amazonDynamoDB = amazonDynamoDB;
80+
Assert.notNull(dynamoDBMapper, "dynamoDBMapper must not be null!");
81+
Assert.notNull(dynamoDBMapperConfig, "dynamoDBMapperConfig must not be null!");
11482

115-
if (dynamoDBMapperConfig == null) {
116-
this.dynamoDBMapperConfig = DynamoDBMapperConfig.DEFAULT;
117-
} else {
118-
119-
// #146, #81 #157
120-
// Trying to fix half-initialized DynamoDBMapperConfigs here.
121-
// The old documentation advised to start with an empty builder. Therefore we
122-
// try here to set required fields to their defaults -
123-
// As the documentation at
124-
// https://github.com/derjust/spring-data-dynamodb/wiki/Alter-table-name-during-runtime
125-
// (same as https://git.io/DynamoDBMapperConfig)
126-
// now does: Start with #DEFAULT and add what's required
127-
DynamoDBMapperConfig.Builder emptyBuilder = DynamoDBMapperConfig.builder(); // empty (!) builder
128-
129-
if (dynamoDBMapperConfig.getConversionSchema() == null) {
130-
LOGGER.warn(
131-
"No ConversionSchema set in the provided dynamoDBMapperConfig! Merging with DynamoDBMapperConfig.DEFAULT - Please see https://git.io/DynamoDBMapperConfig");
132-
// DynamoDBMapperConfig#DEFAULT comes with a ConversionSchema
133-
emptyBuilder.withConversionSchema(DynamoDBMapperConfig.DEFAULT.getConversionSchema());
134-
}
135-
136-
if (dynamoDBMapperConfig.getTypeConverterFactory() == null) {
137-
LOGGER.warn(
138-
"No TypeConverterFactory set in the provided dynamoDBMapperConfig! Merging with DynamoDBMapperConfig.DEFAULT - Please see https://git.io/DynamoDBMapperConfig");
139-
// DynamoDBMapperConfig#DEFAULT comes with a TypeConverterFactory
140-
emptyBuilder.withTypeConverterFactory(DynamoDBMapperConfig.DEFAULT.getTypeConverterFactory());
141-
}
142-
143-
// Deprecated but the only way how DynamoDBMapperConfig#merge is exposed
144-
this.dynamoDBMapperConfig = new DynamoDBMapperConfig(dynamoDBMapperConfig, emptyBuilder.build());
145-
}
146-
147-
if (dynamoDBMapper == null) {
148-
this.dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB, dynamoDBMapperConfig);
149-
} else {
150-
this.dynamoDBMapper = dynamoDBMapper;
151-
}
83+
this.amazonDynamoDB = amazonDynamoDB;
84+
this.dynamoDBMapper = dynamoDBMapper;
85+
this.dynamoDBMapperConfig = dynamoDBMapperConfig;
15286
}
15387

15488
@Override

src/main/java/org/socialsignin/spring/data/dynamodb/repository/cdi/DynamoDBRepositoryBean.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.socialsignin.spring.data.dynamodb.repository.cdi;
1717

1818
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
19+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
1920
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig;
2021
import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations;
2122
import org.socialsignin.spring.data.dynamodb.core.DynamoDBTemplate;
@@ -100,8 +101,13 @@ protected T create(CreationalContext<T> creationalContext, Class<T> repositoryTy
100101
? null
101102
: getDependencyInstance(dynamoDBOperationsBean, DynamoDBOperations.class);
102103

104+
if (dynamoDBMapperConfig == null) {
105+
dynamoDBMapperConfig = DynamoDBMapperConfig.DEFAULT;
106+
}
107+
DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB, dynamoDBMapperConfig);
108+
103109
if (dynamoDBOperations == null) {
104-
dynamoDBOperations = new DynamoDBTemplate(amazonDynamoDB, dynamoDBMapperConfig);
110+
dynamoDBOperations = new DynamoDBTemplate(amazonDynamoDB, dynamoDBMapper, dynamoDBMapperConfig);
105111
}
106112

107113
DynamoDBRepositoryFactory factory = new DynamoDBRepositoryFactory(dynamoDBOperations);

0 commit comments

Comments
 (0)