Browse Source

Remove code duplication.

Mainly reimplements the changes undone in 49e343fe8a.
The check for presence of the ID property is implemented for all variants for save, as it should.

See #1924
Original pull request #1925
pull/1948/head
Jens Schauder 1 year ago
parent
commit
6eed53fd3c
No known key found for this signature in database
GPG Key ID: 74F6C554AE971567
  1. 40
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java

40
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java

@ -173,19 +173,7 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
@Override @Override
public <T> List<T> saveAll(Iterable<T> instances) { public <T> List<T> saveAll(Iterable<T> instances) {
return doInBatch(instances, (first) -> (second -> changeCreatorSelectorForSave(first).apply(second)));
Assert.notNull(instances, "Aggregate instances must not be null");
if (!instances.iterator().hasNext()) {
return Collections.emptyList();
}
List<EntityAndChangeCreator<T>> entityAndChangeCreators = new ArrayList<>();
for (T instance : instances) {
verifyIdProperty(instance);
entityAndChangeCreators.add(new EntityAndChangeCreator<>(instance, changeCreatorSelectorForSave(instance)));
}
return performSaveAll(entityAndChangeCreators);
} }
/** /**
@ -206,21 +194,7 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
@Override @Override
public <T> List<T> insertAll(Iterable<T> instances) { public <T> List<T> insertAll(Iterable<T> instances) {
return doInBatch(instances, (__) -> (entity -> createInsertChange(prepareVersionForInsert(entity))));
Assert.notNull(instances, "Aggregate instances must not be null");
if (!instances.iterator().hasNext()) {
return Collections.emptyList();
}
List<EntityAndChangeCreator<T>> entityAndChangeCreators = new ArrayList<>();
for (T instance : instances) {
Function<T, RootAggregateChange<T>> changeCreator = entity -> createInsertChange(prepareVersionForInsert(entity));
EntityAndChangeCreator<T> entityChange = new EntityAndChangeCreator<>(instance, changeCreator);
entityAndChangeCreators.add(entityChange);
}
return performSaveAll(entityAndChangeCreators);
} }
/** /**
@ -241,6 +215,10 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
@Override @Override
public <T> List<T> updateAll(Iterable<T> instances) { public <T> List<T> updateAll(Iterable<T> instances) {
return doInBatch(instances, (__) -> (entity -> createUpdateChange(prepareVersionForUpdate(entity))));
}
private <T> List<T> doInBatch(Iterable<T> instances,Function<T, Function<T, RootAggregateChange<T>>> changeCreatorFunction) {
Assert.notNull(instances, "Aggregate instances must not be null"); Assert.notNull(instances, "Aggregate instances must not be null");
@ -250,10 +228,8 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
List<EntityAndChangeCreator<T>> entityAndChangeCreators = new ArrayList<>(); List<EntityAndChangeCreator<T>> entityAndChangeCreators = new ArrayList<>();
for (T instance : instances) { for (T instance : instances) {
verifyIdProperty(instance);
Function<T, RootAggregateChange<T>> changeCreator = entity -> createUpdateChange(prepareVersionForUpdate(entity)); entityAndChangeCreators.add(new EntityAndChangeCreator<T>(instance, changeCreatorFunction.apply(instance)));
EntityAndChangeCreator<T> entityChange = new EntityAndChangeCreator<>(instance, changeCreator);
entityAndChangeCreators.add(entityChange);
} }
return performSaveAll(entityAndChangeCreators); return performSaveAll(entityAndChangeCreators);
} }

Loading…
Cancel
Save