DATACMNS-1384 - Support for j.u.Date and j.s.Timestamp in AnnotationRevisionMetadata.

We now properly convert legacy Date instances into Instants to expose the revision date. Support for Timestamp is transparent as it extends Date.
This commit is contained in:
Oliver Gierke
2018-09-01 18:34:56 +02:00
parent 1d4a53dc28
commit 3dacaf64d8
2 changed files with 41 additions and 0 deletions

View File

@@ -17,9 +17,11 @@ package org.springframework.data.history;
import static org.assertj.core.api.Assertions.*;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
import org.assertj.core.api.SoftAssertions;
import org.junit.Test;
@@ -126,6 +128,30 @@ public class AnnotationRevisionMetadataUnitTests {
softly.assertAll();
}
@Test // DATACMNS-1384
public void supportsTimestampRevisionInstant() {
SampleWithTimestamp sample = new SampleWithTimestamp();
Instant now = Instant.now();
sample.revision = Timestamp.from(now);
RevisionMetadata<Long> metadata = getMetadata(sample);
assertThat(metadata.getRequiredRevisionInstant()).isEqualTo(now);
}
@Test // DATACMNS-1384
public void supportsDateRevisionInstant() {
SampleWithDate sample = new SampleWithDate();
Date date = new Date();
sample.revision = date;
RevisionMetadata<Long> metadata = getMetadata(sample);
assertThat(metadata.getRequiredRevisionInstant()).isEqualTo(date.toInstant());
}
private static RevisionMetadata<Long> getMetadata(Object sample) {
return new AnnotationRevisionMetadata<>(sample, Autowired.class, Reference.class);
}
@@ -147,4 +173,14 @@ public class AnnotationRevisionMetadataUnitTests {
@Autowired Long revisionNumber;
@Reference long revisionLong;
}
// DATACMNS-1384
static class SampleWithTimestamp {
@Reference Timestamp revision;
}
static class SampleWithDate {
@Reference Date revision;
}
}