Remove unnecessary auditorAwareRef from test config. (#1189)

Remove unnecessary auditorAwareRef from test config as it causes
confusion. The property does not need to be preset for the auditorAwareRef
bean to be used.
The dateTimeProviderRef must be present for the provided
dateTimeProviderRef bean to be used.

Closes #1052.
This commit is contained in:
Michael Reiche
2021-08-17 10:35:33 -07:00
committed by GitHub
parent f8b5ab205c
commit 07022c1e86
10 changed files with 69 additions and 28 deletions

View File

@@ -38,6 +38,7 @@ import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.couchbase.core.ExecutableRemoveByIdOperation.ExecutableRemoveById;
import org.springframework.data.couchbase.core.ExecutableReplaceByIdOperation.ExecutableReplaceById;
import org.springframework.data.couchbase.core.support.OneAndAllEntity;
import org.springframework.data.couchbase.domain.NaiveAuditorAware;
import org.springframework.data.couchbase.domain.PersonValue;
import org.springframework.data.couchbase.domain.User;
import org.springframework.data.couchbase.domain.UserAnnotated;
@@ -77,16 +78,31 @@ class CouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationTests {
User user = new User(UUID.randomUUID().toString(), "firstname", "lastname");
User modified = couchbaseTemplate.upsertById(User.class).one(user);
assertEquals(user, modified);
// create a new object so that the object returned by replaceById() is a different object from the original user
// don't need to copy the ModifiedDate/ModifiedTime as they are not read and are overwritten.
User modifying = new User(user.getId(), user.getFirstname(), user.getLastname());
modifying.setCreatedDate(user.getCreatedDate());
modifying.setCreatedBy(user.getCreatedBy());
modifying.setVersion(user.getVersion());
modified = couchbaseTemplate.replaceById(User.class).one(modifying);
assertEquals(modifying, modified);
if(user == modified){
throw new RuntimeException ( " user == modified ");
}
assertNotEquals(user, modified);
assertEquals(NaiveAuditorAware.AUDITOR, modified.getCreatedBy());
assertEquals(NaiveAuditorAware.AUDITOR, modified.getLastModifiedBy());
assertNotEquals(0, modified.getCreatedDate());
assertNotEquals(0, modified.getLastModifiedDate());
// The FixedDateTimeService of the AuditingDateTimeProvider will guarantee these are equal
assertEquals(user.getLastModifiedDate(), modified.getLastModifiedDate());
modified = couchbaseTemplate.replaceById(User.class).one(user);
assertEquals(user, modified);
user.setVersion(12345678);
assertThrows(DataIntegrityViolationException.class, () -> couchbaseTemplate.replaceById(User.class).one(user));
User badUser = new User(user.getId(), user.getFirstname(), user.getLastname());
badUser.setVersion(12345678);
assertThrows(DataIntegrityViolationException.class, () -> couchbaseTemplate.replaceById(User.class).one(badUser));
User found = couchbaseTemplate.findById(User.class).one(user.getId());
user.setVersion(found.getVersion());
assertEquals(user, found);
assertEquals(modified, found);
couchbaseTemplate.removeById().one(user.getId());
}

View File

@@ -150,7 +150,7 @@ class CouchbaseTemplateQueryCollectionIntegrationTests extends CollectionAwareIn
for (User u : foundUsers) {
assertTrue(u.equals(user1) || u.equals(user2));
assertEquals(auditUser, u.getCreator());
assertEquals(auditUser, u.getCreatedBy());
assertEquals(auditMillis, u.getCreatedDate());
assertEquals(auditUser, u.getLastModifiedBy());
assertEquals(auditMillis, u.getLastModifiedDate());

View File

@@ -99,7 +99,7 @@ class CouchbaseTemplateQueryIntegrationTests extends JavaIntegrationTests {
for (User u : foundUsers) {
assertTrue(u.equals(user1) || u.equals(user2));
assertEquals(auditUser, u.getCreator());
assertEquals(auditUser, u.getCreatedBy());
assertEquals(auditMillis, u.getCreatedDate());
assertEquals(auditUser, u.getLastModifiedBy());
assertEquals(auditMillis, u.getLastModifiedDate());

View File

@@ -37,7 +37,9 @@ import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.couchbase.core.ExecutableRemoveByIdOperation.ExecutableRemoveById;
import org.springframework.data.couchbase.core.support.OneAndAllEntityReactive;
import org.springframework.data.couchbase.domain.NaiveAuditorAware;
import org.springframework.data.couchbase.domain.PersonValue;
import org.springframework.data.couchbase.domain.ReactiveNaiveAuditorAware;
import org.springframework.data.couchbase.domain.User;
import org.springframework.data.couchbase.domain.UserAnnotated;
import org.springframework.data.couchbase.domain.UserAnnotated2;
@@ -72,17 +74,33 @@ class ReactiveCouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationT
User user = new User(UUID.randomUUID().toString(), "firstname", "lastname");
User modified = reactiveCouchbaseTemplate.upsertById(User.class).one(user).block();
assertEquals(user, modified);
// create a new object so that the object returned by replaceById() is a different object from the original user
// don't need to copy the ModifiedDate/ModifiedTime as they are not read and are overwritten.
User modifying = new User(user.getId(), user.getFirstname(), user.getLastname());
modifying.setCreatedDate(user.getCreatedDate());
modifying.setCreatedBy(user.getCreatedBy());
modifying.setVersion(user.getVersion());
modified = reactiveCouchbaseTemplate.replaceById(User.class).one(modifying).block();
assertEquals(modifying, modified);
if(user == modified){
throw new RuntimeException ( " user == modified ");
}
assertNotEquals(user, modified);
assertEquals(ReactiveNaiveAuditorAware.AUDITOR, modified.getCreatedBy());
assertEquals(ReactiveNaiveAuditorAware.AUDITOR, modified.getLastModifiedBy());
assertNotEquals(0, modified.getCreatedDate());
assertNotEquals(0, modified.getLastModifiedDate());
// The FixedDateTimeService of the AuditingDateTimeProvider will guarantee these are equal
assertEquals(user.getLastModifiedDate(), modified.getLastModifiedDate());
modified = reactiveCouchbaseTemplate.replaceById(User.class).one(user).block();
assertEquals(user, modified);
user.setVersion(12345678);
User badUser = new User(user.getId(), user.getFirstname(), user.getLastname());
badUser.setVersion(12345678);
assertThrows(DataIntegrityViolationException.class,
() -> reactiveCouchbaseTemplate.replaceById(User.class).one(user).block());
() -> reactiveCouchbaseTemplate.replaceById(User.class).one(badUser).block());
User found = reactiveCouchbaseTemplate.findById(User.class).one(user.getId()).block();
user.setVersion(found.getVersion());
assertEquals(user, found);
assertEquals(modified, found);
reactiveCouchbaseTemplate.removeById().one(user.getId()).block();
}

View File

@@ -148,7 +148,7 @@ class ReactiveCouchbaseTemplateQueryCollectionIntegrationTests extends Collectio
for (User u : foundUsers) {
assertTrue(u.equals(user1) || u.equals(user2));
assertEquals(auditUser, u.getCreator());
assertEquals(auditUser, u.getCreatedBy());
assertEquals(auditMillis, u.getCreatedDate());
assertEquals(auditUser, u.getLastModifiedBy());
assertEquals(auditMillis, u.getLastModifiedDate());

View File

@@ -54,9 +54,8 @@ import com.couchbase.client.java.json.JacksonTransformers;
@Configuration
@EnableCouchbaseRepositories
@EnableReactiveCouchbaseRepositories
@EnableCouchbaseAuditing(auditorAwareRef = "auditorAwareRef", dateTimeProviderRef = "dateTimeProviderRef")
@EnableReactiveCouchbaseAuditing(auditorAwareRef = "reactiveAuditorAwareRef",
dateTimeProviderRef = "dateTimeProviderRef")
@EnableCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef")
@EnableReactiveCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef")
public class Config extends AbstractCouchbaseConfiguration {
String bucketname = "travel-sample";
@@ -128,11 +127,11 @@ public class Config extends AbstractCouchbaseConfiguration {
try {
// comment out references to 'protected' and 'mybucket' - they are only to show how multi-bucket would work
// ReactiveCouchbaseTemplate personTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("protected"),
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// baseMapping.mapEntity(Person.class, personTemplate); // Person goes in "protected" bucket
// ReactiveCouchbaseTemplate userTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("mybucket"),
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
//baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket"
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket"
// everything else goes in getBucketName() ( which is travel-sample )
} catch (Exception e) {
throw e;
@@ -144,11 +143,11 @@ public class Config extends AbstractCouchbaseConfiguration {
try {
// comment out references to 'protected' and 'mybucket' - they are only to show how multi-bucket would work
// CouchbaseTemplate personTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("protected"),
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// baseMapping.mapEntity(Person.class, personTemplate); // Person goes in "protected" bucket
// MappingCouchbaseConverter cvtr = (MappingCouchbaseConverter)baseMapping.getDefault().getConverter();
// CouchbaseTemplate userTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("mybucket"),
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
// baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket"
// everything else goes in getBucketName() ( which is travel-sample )
} catch (Exception e) {

View File

@@ -32,7 +32,7 @@ import org.springframework.data.domain.AuditorAware;
*/
public class NaiveAuditorAware implements AuditorAware<String> {
static public final String AUDITOR = "auditor";
static public final String AUDITOR = "nonreactive_auditor";
private Optional<String> auditor = Optional.of(AUDITOR);
@Override

View File

@@ -71,10 +71,18 @@ public class User extends ComparableEntity {
return createdDate;
}
public String getCreator() {
public void setCreatedDate(long createdDate) {
this.createdDate = createdDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public long getLastModifiedDate() {
return lastModifiedDate;
}

View File

@@ -636,7 +636,7 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
@Configuration
@EnableCouchbaseRepositories("org.springframework.data.couchbase")
@EnableCouchbaseAuditing(auditorAwareRef = "auditorAwareRef", dateTimeProviderRef = "dateTimeProviderRef")
@EnableCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef")
static class Config extends AbstractCouchbaseConfiguration {
@Override

View File

@@ -82,7 +82,7 @@ public class ReactiveCouchbaseRepositoryKeyValueIntegrationTests extends Cluster
@Configuration
@EnableReactiveCouchbaseRepositories("org.springframework.data.couchbase")
@EnableReactiveCouchbaseAuditing
@EnableReactiveCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef")
static class Config extends AbstractCouchbaseConfiguration {
@Override