#297 - Upgraded to Boot 2.0 and Spring Data Kay.

Bumped version number to 2.0. Upgraded to Spring Boot 2.0.

Stuff disabled in the meantime:

- Cassandra: needs API adaptions in configuration
- JPA > Security: test fails with weird Hibernate error
- Redis > Reactive: API updates needed
- Solr: configration updates necessary

adjust versions

Updated elastic search to the new version.

Fixed the reactor version to Bismuth-BUILD-SNAPSHOT. This probably should be undone when boot references the proper bom.
This commit is contained in:
Oliver Gierke
2017-05-04 19:28:40 +02:00
parent 90546357c7
commit 4164bc4607
98 changed files with 319 additions and 368 deletions

View File

@@ -15,6 +15,8 @@
*/
package example.springdata.jpa.auditing;
import java.util.Optional;
import org.springframework.data.domain.AuditorAware;
/**
@@ -27,20 +29,20 @@ import org.springframework.data.domain.AuditorAware;
*/
public class AuditorAwareImpl implements AuditorAware<AuditableUser> {
private AuditableUser auditor;
private Optional<AuditableUser> auditor = Optional.empty();
/**
* @param auditor the auditor to set
*/
public void setAuditor(AuditableUser auditor) {
this.auditor = auditor;
this.auditor = Optional.of(auditor);
}
/*
* (non-Javadoc)
* @see org.springframework.data.domain.AuditorAware#getCurrentAuditor()
*/
public AuditableUser getCurrentAuditor() {
public Optional<AuditableUser> getCurrentAuditor() {
return auditor;
}
}

View File

@@ -15,7 +15,10 @@
*/
package example.springdata.jpa.basics;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import example.springdata.jpa.simple.SimpleUserRepository;
import example.springdata.jpa.simple.User;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -26,9 +29,6 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
import example.springdata.jpa.simple.SimpleUserRepository;
import example.springdata.jpa.simple.User;
/**
* Test case showing how to use the basic {@link GenericDaoFactory}
*
@@ -81,8 +81,8 @@ public class BasicFactorySetup {
@Test
public void executingFinders() {
assertEquals(user, userRepository.findByTheUsersName("username"));
assertEquals(user, userRepository.findByLastname("lastname").get(0));
assertEquals(user, userRepository.findByFirstname("firstname").get(0));
assertThat(userRepository.findByTheUsersName("username")).isEqualTo(user);
assertThat(userRepository.findByLastname("lastname")).first().isEqualTo(user);
assertThat(userRepository.findByFirstname("firstname")).first().isEqualTo(user);
}
}

View File

@@ -19,7 +19,9 @@ ess or implied.
*/
package example.springdata.jpa.basics;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import example.springdata.jpa.simple.User;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -31,8 +33,6 @@ import org.junit.Test;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.data.repository.CrudRepository;
import example.springdata.jpa.simple.User;
/**
* This unit tests shows plain usage of {@link SimpleJpaRepository}.
*
@@ -41,8 +41,8 @@ import example.springdata.jpa.simple.User;
*/
public class BasicSample {
private CrudRepository<User, Long> userRepository;
private EntityManager em;
CrudRepository<User, Long> userRepository;
EntityManager em;
/**
* Sets up a {@link SimpleJpaRepository} instance.
@@ -65,7 +65,7 @@ public class BasicSample {
/**
* Tests saving users. Don't mimic transactionality shown here. It seriously lacks resource cleanup in case of an
* exception. Simplification serves descriptivness.
* exception. Simplification serves descriptiveness.
*/
@Test
public void savingUsers() {
@@ -75,6 +75,6 @@ public class BasicSample {
user = userRepository.save(user);
assertEquals(user, userRepository.findOne(user.getId()));
assertThat(userRepository.findById(user.getId())).hasValue(user);
}
}

View File

@@ -15,15 +15,13 @@
*/
package example.springdata.jpa.caching;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cache.Cache;
import org.springframework.cache.Cache.ValueWrapper;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.test.context.junit4.SpringRunner;
@@ -51,12 +49,10 @@ public abstract class CachingRepositoryTests {
dave = repository.save(dave);
User result = repository.findByUsername("dmatthews");
assertThat(result, is(dave));
assertThat(repository.findByUsername("dmatthews")).isEqualTo(dave);
// Verify entity cached
Cache cache = cacheManager.getCache("byUsername");
ValueWrapper wrapper = cache.get("dmatthews");
assertThat(wrapper.get(), is((Object) dave));
assertThat(cache.get("dmatthews").get()).isEqualTo(dave);
}
}

View File

@@ -15,7 +15,7 @@
*/
package example.springdata.jpa.custom;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import java.util.List;
@@ -51,7 +51,7 @@ public class UserRepositoryCustomizationTests {
user = repository.save(user);
assertEquals(user, repository.findOne(user.getId()));
assertThat(repository.findById(user.getId())).hasValue(user);
}
@Test
@@ -65,11 +65,8 @@ public class UserRepositoryCustomizationTests {
List<User> users = repository.findByLastname("lastname");
assertNotNull(users);
assertTrue(users.contains(user));
User reference = repository.findByTheUsersName("foobar");
assertEquals(user, reference);
assertThat(users).contains(user);
assertThat(user).isEqualTo(repository.findByTheUsersName("foobar"));
}
/**
@@ -85,7 +82,6 @@ public class UserRepositoryCustomizationTests {
List<User> users = repository.myCustomBatchOperation();
assertNotNull(users);
assertTrue(users.contains(user));
assertThat(users).contains(user);
}
}

View File

@@ -15,8 +15,7 @@
*/
package example.springdata.jpa.customall;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -40,6 +39,6 @@ public class UserRepositoryCustomizationTests {
@Test
public void invokesCustomMethod() {
assertThat(repository.customMethod(), is(0L));
assertThat(repository.customMethod()).isEqualTo(0L);
}
}

View File

@@ -15,8 +15,7 @@
*/
package example.springdata.jpa.projections;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.*;
import java.util.Collection;
import java.util.Map;
@@ -64,37 +63,35 @@ public class CustomerRepositoryIntegrationTest {
@Test
public void projectsEntityIntoInterface() {
Collection<CustomerProjection> result = customers.findAllProjectedBy();
assertThat(result, hasSize(2));
assertThat(result.iterator().next().getFirstname(), is("Dave"));
assertThat(customers.findAllProjectedBy())//
.hasSize(2)//
.first().satisfies(it -> assertThat(it.getFirstname()).isEqualTo("Dave"));
}
@Test
public void projectsMapIntoInterface() {
Collection<CustomerProjection> result = customers.findsByProjectedColumns();
assertThat(customers.findsByProjectedColumns())//
.hasSize(2)//
.first().satisfies(it -> assertThat(it.getFirstname()).isEqualTo("Dave"));
assertThat(result, hasSize(2));
assertThat(result.iterator().next().getFirstname(), is("Dave"));
}
@Test
public void projectsToDto() {
Collection<CustomerDto> result = customers.findAllDtoedBy();
assertThat(result, hasSize(2));
assertThat(result.iterator().next().getFirstname(), is("Dave"));
assertThat(customers.findAllDtoedBy())//
.hasSize(2)//
.first().satisfies(it -> assertThat(it.getFirstname()).isEqualTo("Dave"));
}
@Test
public void projectsDynamically() {
Collection<CustomerProjection> result = customers.findByFirstname("Dave", CustomerProjection.class);
assertThat(result, hasSize(1));
assertThat(result.iterator().next().getFirstname(), is("Dave"));
assertThat(customers.findByFirstname("Dave", CustomerProjection.class))//
.hasSize(1)//
.first()//
.satisfies(it -> assertThat(it.getFirstname()).isEqualTo("Dave"));
}
@Test
@@ -102,10 +99,11 @@ public class CustomerRepositoryIntegrationTest {
CustomerSummary result = customers.findProjectedById(dave.getId(), CustomerSummary.class);
assertThat(result.getFullName(), is("Dave Matthews"));
assertThat(result.getFullName()).isEqualTo("Dave Matthews");
// Proxy backed by original instance as the projection uses dynamic elements
assertThat(((TargetAware) result).getTarget(), is(instanceOf(Customer.class)));
assertThat(result).isInstanceOfSatisfying(TargetAware.class,
it -> assertThat(it.getTarget()).isInstanceOf(Customer.class));
}
@Test
@@ -113,8 +111,9 @@ public class CustomerRepositoryIntegrationTest {
CustomerProjection projectedDave = customers.findProjectedById(dave.getId());
assertThat(projectedDave.getFirstname(), is("Dave"));
assertThat(((TargetAware) projectedDave).getTarget(), is(instanceOf(Map.class)));
assertThat(projectedDave.getFirstname()).isEqualTo("Dave");
assertThat(projectedDave).isInstanceOfSatisfying(TargetAware.class,
it -> assertThat(it.getTarget()).isInstanceOf(Map.class));
}
@Test
@@ -122,21 +121,21 @@ public class CustomerRepositoryIntegrationTest {
Collection<CustomerDto> result = customers.findDtoWithConstructorExpression("Dave");
assertThat(result, hasSize(1));
assertThat(result.iterator().next().getFirstname(), is("Dave"));
assertThat(result).hasSize(1);
assertThat(result.iterator().next().getFirstname()).isEqualTo("Dave");
}
@Test
public void supportsProjectionInCombinationWithPagination() {
Page<CustomerProjection> page = customers
.findPagedProjectedBy(new PageRequest(0, 1, new Sort(Direction.ASC, "lastname")));
.findPagedProjectedBy(PageRequest.of(0, 1, Sort.by(Direction.ASC, "lastname")));
assertThat(page.getContent().get(0).getFirstname(), is("Carter"));
assertThat(page.getContent().get(0).getFirstname()).isEqualTo("Carter");
}
@Test
public void appliesProjectionToOptional() {
assertThat(customers.findOptionalProjectionByLastname("Beauford").isPresent(), is(true));
assertThat(customers.findOptionalProjectionByLastname("Beauford")).isPresent();
}
}

View File

@@ -15,8 +15,9 @@
*/
package example.springdata.jpa.simple;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.junit.Assert.assertThat;
import static org.springframework.data.domain.Sort.Direction.*;
import java.util.ArrayList;
@@ -64,7 +65,7 @@ public class SimpleUserRepositoryTests {
user = repository.save(user);
assertThat(repository.findOne(user.getId()), is(user));
assertThat(repository.findById(user.getId())).hasValue(user);
}
@Test
@@ -72,10 +73,7 @@ public class SimpleUserRepositoryTests {
user = repository.save(user);
List<User> users = repository.findByLastname("lastname");
assertThat(users, is(notNullValue()));
assertThat(users.contains(user), is(true));
assertThat(repository.findByLastname("lastname")).contains(user);
}
@Test
@@ -83,19 +81,17 @@ public class SimpleUserRepositoryTests {
user = repository.save(user);
List<User> users = repository.findByFirstnameOrLastname("lastname");
assertThat(users.contains(user), is(true));
assertThat(repository.findByFirstnameOrLastname("lastname")).contains(user);
}
@Test
public void useOptionalAsReturnAndParameterType() {
assertThat(repository.findByUsername(Optional.of("foobar")), is(Optional.empty()));
assertThat(repository.findByUsername(Optional.of("foobar"))).isEmpty();
repository.save(user);
assertThat(repository.findByUsername(Optional.of("foobar")).isPresent(), is(true));
assertThat(repository.findByUsername(Optional.of("foobar"))).isPresent();
}
@Test
@@ -109,10 +105,10 @@ public class SimpleUserRepositoryTests {
User user3 = new User();
user3.setLastname("no-positive-match");
repository.save(Arrays.asList(user, user2, user3));
repository.saveAll(Arrays.asList(user, user2, user3));
assertThat(repository.removeByLastname(user.getLastname()), is(2L));
assertThat(repository.exists(user3.getId()), is(true));
assertThat(repository.removeByLastname(user.getLastname())).isEqualTo(2L);
assertThat(repository.existsById(user3.getId())).isTrue();
}
@Test
@@ -132,11 +128,11 @@ public class SimpleUserRepositoryTests {
source.add(user);
}
repository.save(source);
repository.saveAll(source);
Slice<User> users = repository.findByLastnameOrderByUsernameAsc(this.user.getLastname(), new PageRequest(1, 5));
Slice<User> users = repository.findByLastnameOrderByUsernameAsc(this.user.getLastname(), PageRequest.of(1, 5));
assertThat(users, contains(source.subList(5, 10).toArray()));
assertThat(users).containsAll(source.subList(5, 10));
}
@Test
@@ -152,7 +148,7 @@ public class SimpleUserRepositoryTests {
user2.setLastname("lastname-2");
// we deliberatly save the items in reverse
repository.save(Arrays.asList(user2, user1, user0));
repository.saveAll(Arrays.asList(user2, user1, user0));
List<User> result = repository.findFirst2ByOrderByLastnameAsc();
@@ -173,7 +169,7 @@ public class SimpleUserRepositoryTests {
user2.setLastname("lastname-2");
// we deliberately save the items in reverse
repository.save(Arrays.asList(user2, user1, user0));
repository.saveAll(Arrays.asList(user2, user1, user0));
List<User> resultAsc = repository.findTop2By(new Sort(ASC, "lastname"));
@@ -197,7 +193,7 @@ public class SimpleUserRepositoryTests {
User third = new User();
repository.save(Arrays.asList(first, second, third));
repository.saveAll(Arrays.asList(first, second, third));
User reference = new User();
reference.setFirstname("firstname");