diff --git a/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java b/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java index 95d6e156..004d5a4e 100644 --- a/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java +++ b/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java @@ -18,13 +18,13 @@ package org.springframework.data.jdbc.repository.support; import lombok.NonNull; import lombok.RequiredArgsConstructor; -import java.util.ArrayList; -import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import org.springframework.data.jdbc.core.JdbcAggregateOperations; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.util.Streamable; /** * @author Jens Schauder @@ -42,10 +42,7 @@ public class SimpleJdbcRepository implements CrudRepository { */ @Override public S save(S instance) { - - entityOperations.save(instance); - - return instance; + return entityOperations.save(instance); } /* @@ -55,9 +52,9 @@ public class SimpleJdbcRepository implements CrudRepository { @Override public Iterable saveAll(Iterable entities) { - List savedEntities = new ArrayList<>(); - entities.forEach(e -> savedEntities.add(save(e))); - return savedEntities; + return Streamable.of(entities).stream() // + .map(this::save) // + .collect(Collectors.toList()); } /* diff --git a/src/test/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepositoryUnitTests.java b/src/test/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepositoryUnitTests.java new file mode 100644 index 00000000..0328209c --- /dev/null +++ b/src/test/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepositoryUnitTests.java @@ -0,0 +1,52 @@ +/* + * Copyright 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.jdbc.repository.support; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.data.jdbc.core.JdbcAggregateOperations; +import org.springframework.data.relational.core.mapping.RelationalPersistentEntity; + +/** + * Unit tests for {@link SimpleJdbcRepository}. + * + * @author Oliver Gierke + */ +@RunWith(MockitoJUnitRunner.class) +public class SimpleJdbcRepositoryUnitTests { + + @Mock JdbcAggregateOperations operations; + @Mock RelationalPersistentEntity entity; + + @Test // DATAJDBC-252 + public void saveReturnsEntityProducedByOperations() { + + SimpleJdbcRepository repository = new SimpleJdbcRepository<>(operations, entity); + + Sample expected = new Sample(); + doReturn(expected).when(operations).save(any()); + + assertThat(repository.save(new Sample())).isEqualTo(expected); + } + + static class Sample {} +}