Skip to content

Commit b7f52d8

Browse files
authored
Merge pull request #113 from derjust/Issue_103
#103 Update Marshaller to use DynamoDBTypeConverter
2 parents 6fd45a1 + 0e1fcfa commit b7f52d8

File tree

8 files changed

+55
-26
lines changed

8 files changed

+55
-26
lines changed

src/changes/changes.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
<action dev="vitolimandibhrata" issue="40" type="add" date="2017-01-07">
1111
Added support for Auditing
1212
</action>
13+
<action dev="derjust" issue="103" type="add" date="2018-01-07">
14+
Update Marshaller to use DynamoDBTypeConverter (while keeping old inheritance intact)
15+
</action>
1316
</release>
1417
<release version="5.0.1" date="2018-01-06" description="Maintenance release">
1518
<action dev="derjust" issue="68" type="fix" date="2017-12-01" >

src/main/java/org/socialsignin/spring/data/dynamodb/marshaller/DateDynamoDBMarshaller.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package org.socialsignin.spring.data.dynamodb.marshaller;
22

33
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMarshaller;
4+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter;
45
import org.springframework.util.StringUtils;
56

67
import java.text.DateFormat;
78
import java.text.ParseException;
89
import java.util.Date;
910

10-
public abstract class DateDynamoDBMarshaller implements DynamoDBMarshaller<Date> {
11+
public abstract class DateDynamoDBMarshaller implements DynamoDBTypeConverter<String, Date>, DynamoDBMarshaller<Date> {
1112

1213
public abstract DateFormat getDateFormat();
1314

15+
@Override
16+
public String convert(Date object) {
17+
return marshall(object);
18+
}
19+
1420
@Override
1521
public String marshall(Date getterReturnResult) {
1622
if (getterReturnResult == null) {
@@ -20,6 +26,11 @@ public String marshall(Date getterReturnResult) {
2026
}
2127
}
2228

29+
@Override
30+
public Date unconvert(String object) {
31+
return unmarshall(Date.class, object);
32+
}
33+
2334
@Override
2435
public Date unmarshall(Class<Date> clazz, String obj) {
2536
if (StringUtils.isEmpty(obj)) {

src/main/java/org/socialsignin/spring/data/dynamodb/marshaller/Instant2EpocheDynamoDBMarshaller.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package org.socialsignin.spring.data.dynamodb.marshaller;
22

33
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMarshaller;
4+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter;
45
import org.springframework.util.StringUtils;
56

67
import java.time.Instant;
78

8-
public class Instant2EpocheDynamoDBMarshaller implements DynamoDBMarshaller<Instant> {
9+
public class Instant2EpocheDynamoDBMarshaller implements DynamoDBTypeConverter<String, Instant>, DynamoDBMarshaller<Instant> {
10+
11+
@Override
12+
public String convert(Instant object) {
13+
return marshall(object);
14+
}
915

1016
@Override
1117
public String marshall(Instant getterReturnResult) {
@@ -16,6 +22,11 @@ public String marshall(Instant getterReturnResult) {
1622
}
1723
}
1824

25+
@Override
26+
public Instant unconvert(String object) {
27+
return unmarshall(Instant.class, object);
28+
}
29+
1930
@Override
2031
public Instant unmarshall(Class<Instant> clazz, String obj) {
2132
if (StringUtils.isEmpty(obj)) {

src/main/java/org/socialsignin/spring/data/dynamodb/marshaller/Instant2IsoDynamoDBMarshaller.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.socialsignin.spring.data.dynamodb.marshaller;
22

33
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMarshaller;
4+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter;
45
import org.springframework.util.StringUtils;
56

67
import java.time.Instant;
78
import java.time.ZoneOffset;
89
import java.time.format.DateTimeFormatter;
910

10-
public class Instant2IsoDynamoDBMarshaller implements DynamoDBMarshaller<Instant> {
11+
public class Instant2IsoDynamoDBMarshaller implements DynamoDBTypeConverter<String, Instant>, DynamoDBMarshaller<Instant> {
1112

1213
private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
1314

@@ -16,6 +17,11 @@ private DateTimeFormatter getDateFormat() {
1617
.withZone(ZoneOffset.UTC);
1718
}
1819

20+
@Override
21+
public String convert(Instant object) {
22+
return marshall(object);
23+
}
24+
1925
@Override
2026
public String marshall(Instant getterReturnResult) {
2127
if (getterReturnResult == null) {
@@ -25,6 +31,11 @@ public String marshall(Instant getterReturnResult) {
2531
}
2632
}
2733

34+
@Override
35+
public Instant unconvert(String object) {
36+
return unmarshall(Instant.class, object);
37+
}
38+
2839
@Override
2940
public Instant unmarshall(Class<Instant> clazz, String obj) {
3041
if (StringUtils.isEmpty(obj)) {

src/test/java/org/socialsignin/spring/data/dynamodb/marshaller/Date2EpocheDynamoDBMarshallerTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ public void testNullMarshall() {
2626

2727
@Test
2828
public void testMarshall() {
29-
String actual = underTest.marshall(new Date(0));
30-
31-
assertEquals("0", actual);
29+
assertEquals("0", underTest.marshall(new Date(0)));
30+
assertEquals("0", underTest.convert(new Date(0)));
3231
}
3332

3433
@Test
@@ -40,9 +39,9 @@ public void testUnmarshallNull() {
4039

4140
@Test
4241
public void testUnmarshall() {
43-
Date actual = underTest.unmarshall(Date.class, "0");
42+
assertEquals(new Date(0), underTest.unmarshall(Date.class, "0"));
43+
assertEquals(new Date(0), underTest.unconvert("0"));;
4444

45-
assertEquals(new Date(0), actual);
4645
}
4746

4847
@Test(expected = NumberFormatException.class)

src/test/java/org/socialsignin/spring/data/dynamodb/marshaller/Date2IsoDynamoDBMarshallerTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ public void testNullMarshall() {
2626

2727
@Test
2828
public void testMarshall() {
29-
String actual = underTest.marshall(new Date(0));
30-
31-
assertEquals("1970-01-01T00:00:00.000Z", actual);
29+
assertEquals("1970-01-01T00:00:00.000Z", underTest.marshall(new Date(0)));
30+
assertEquals("1970-01-01T00:00:00.000Z", underTest.convert(new Date(0)));
3231
}
3332

3433
@Test
@@ -40,9 +39,8 @@ public void testUnmarshallNull() {
4039

4140
@Test
4241
public void testUnmarshall() {
43-
Date actual = underTest.unmarshall(Date.class, "1970-01-01T00:00:00.000Z");
44-
45-
assertEquals(new Date(0), actual);
42+
assertEquals(new Date(0), underTest.unmarshall(Date.class, "1970-01-01T00:00:00.000Z"));
43+
assertEquals(new Date(0), underTest.unconvert("1970-01-01T00:00:00.000Z"));
4644
}
4745

4846
@Test(expected = RuntimeException.class)

src/test/java/org/socialsignin/spring/data/dynamodb/marshaller/Instant2EpocheDynamoDBMarshallerTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ public void testNullMarshall() {
2626

2727
@Test
2828
public void testMarshall() {
29-
String actual = underTest.marshall(Instant.ofEpochMilli(0));
30-
31-
assertEquals("0", actual);
29+
assertEquals("0", underTest.marshall(Instant.ofEpochMilli(0)));
30+
assertEquals("0", underTest.convert(Instant.ofEpochMilli(0)));
3231
}
3332

3433
@Test
@@ -40,9 +39,8 @@ public void testUnmarshallNull() {
4039

4140
@Test
4241
public void testUnmarshall() {
43-
Instant actual = underTest.unmarshall(Instant.class, "0");
44-
45-
assertEquals(Instant.ofEpochMilli(0), actual);
42+
assertEquals(Instant.ofEpochMilli(0), underTest.unmarshall(Instant.class, "0"));
43+
assertEquals(Instant.ofEpochMilli(0), underTest.unconvert("0"));
4644
}
4745

4846
@Test(expected = NumberFormatException.class)

src/test/java/org/socialsignin/spring/data/dynamodb/marshaller/Instant2IsoDynamoDBMarshallerTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ public void testNullMarshall() {
2626

2727
@Test
2828
public void testMarshall() {
29-
String actual = underTest.marshall(Instant.ofEpochMilli(0));
30-
31-
assertEquals("1970-01-01T00:00:00.000Z", actual);
29+
assertEquals("1970-01-01T00:00:00.000Z", underTest.marshall(Instant.ofEpochMilli(0)));
30+
assertEquals("1970-01-01T00:00:00.000Z", underTest.convert(Instant.ofEpochMilli(0)));
3231
}
3332

3433
@Test
@@ -40,9 +39,8 @@ public void testUnmarshallNull() {
4039

4140
@Test
4241
public void testUnmarshall() {
43-
Instant actual = underTest.unmarshall(Instant.class, "1970-01-01T00:00:00.000Z");
44-
45-
assertEquals(Instant.ofEpochMilli(0), actual);
42+
assertEquals(Instant.ofEpochMilli(0), underTest.unmarshall(Instant.class, "1970-01-01T00:00:00.000Z"));
43+
assertEquals(Instant.ofEpochMilli(0), underTest.unconvert("1970-01-01T00:00:00.000Z"));
4644
}
4745

4846
@Test(expected = RuntimeException.class)

0 commit comments

Comments
 (0)