diff --git a/jpa/spring-data-jpa-example/pom.xml b/jpa/example/pom.xml
similarity index 88%
rename from jpa/spring-data-jpa-example/pom.xml
rename to jpa/example/pom.xml
index 9115e231..05e7144a 100644
--- a/jpa/spring-data-jpa-example/pom.xml
+++ b/jpa/example/pom.xml
@@ -20,6 +20,12 @@
org.springframework
spring-aspects
+
+
+ com.google.guava
+ guava
+ 16.0.1
+
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditableUser.java b/jpa/example/src/main/java/example/springdata/jpa/auditing/AuditableUser.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditableUser.java
rename to jpa/example/src/main/java/example/springdata/jpa/auditing/AuditableUser.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditableUserRepository.java b/jpa/example/src/main/java/example/springdata/jpa/auditing/AuditableUserRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditableUserRepository.java
rename to jpa/example/src/main/java/example/springdata/jpa/auditing/AuditableUserRepository.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditingConfiguration.java b/jpa/example/src/main/java/example/springdata/jpa/auditing/AuditingConfiguration.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditingConfiguration.java
rename to jpa/example/src/main/java/example/springdata/jpa/auditing/AuditingConfiguration.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditorAwareImpl.java b/jpa/example/src/main/java/example/springdata/jpa/auditing/AuditorAwareImpl.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/AuditorAwareImpl.java
rename to jpa/example/src/main/java/example/springdata/jpa/auditing/AuditorAwareImpl.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/package-info.java b/jpa/example/src/main/java/example/springdata/jpa/auditing/package-info.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/auditing/package-info.java
rename to jpa/example/src/main/java/example/springdata/jpa/auditing/package-info.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/CachingConfiguration.java b/jpa/example/src/main/java/example/springdata/jpa/caching/CachingConfiguration.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/CachingConfiguration.java
rename to jpa/example/src/main/java/example/springdata/jpa/caching/CachingConfiguration.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java b/jpa/example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java
rename to jpa/example/src/main/java/example/springdata/jpa/caching/CachingUserRepository.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/User.java b/jpa/example/src/main/java/example/springdata/jpa/caching/User.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/User.java
rename to jpa/example/src/main/java/example/springdata/jpa/caching/User.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/package-info.java b/jpa/example/src/main/java/example/springdata/jpa/caching/package-info.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/caching/package-info.java
rename to jpa/example/src/main/java/example/springdata/jpa/caching/package-info.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/CustomRepositoryConfig.java b/jpa/example/src/main/java/example/springdata/jpa/custom/CustomRepositoryConfig.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/CustomRepositoryConfig.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/CustomRepositoryConfig.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/User.java b/jpa/example/src/main/java/example/springdata/jpa/custom/User.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/User.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/User.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepository.java b/jpa/example/src/main/java/example/springdata/jpa/custom/UserRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepository.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/UserRepository.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepositoryCustom.java b/jpa/example/src/main/java/example/springdata/jpa/custom/UserRepositoryCustom.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepositoryCustom.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/UserRepositoryCustom.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepositoryImpl.java b/jpa/example/src/main/java/example/springdata/jpa/custom/UserRepositoryImpl.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepositoryImpl.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/UserRepositoryImpl.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepositoryImplJdbc.java b/jpa/example/src/main/java/example/springdata/jpa/custom/UserRepositoryImplJdbc.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/UserRepositoryImplJdbc.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/UserRepositoryImplJdbc.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/package-info.java b/jpa/example/src/main/java/example/springdata/jpa/custom/package-info.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/custom/package-info.java
rename to jpa/example/src/main/java/example/springdata/jpa/custom/package-info.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/SimpleConfiguration.java b/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleConfiguration.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/SimpleConfiguration.java
rename to jpa/example/src/main/java/example/springdata/jpa/simple/SimpleConfiguration.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java b/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java
similarity index 96%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java
rename to jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java
index 952286eb..8a984dcd 100644
--- a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java
+++ b/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java
@@ -21,6 +21,8 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
+import com.google.common.base.Optional;
+
/**
* Simple repository interface for {@link User} instances. The interface is used to declare so called query methods,
* methods to retrieve single entities or collections of them.
@@ -39,6 +41,8 @@ public interface SimpleUserRepository extends CrudRepository {
*/
User findByTheUsersName(String username);
+ Optional findByUsername(String username);
+
/**
* Find all users with the given lastname. This method will be translated into a query by constructing it directly
* from the method name as there is no other query declared.
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/User.java b/jpa/example/src/main/java/example/springdata/jpa/simple/User.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/User.java
rename to jpa/example/src/main/java/example/springdata/jpa/simple/User.java
diff --git a/jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/package-info.java b/jpa/example/src/main/java/example/springdata/jpa/simple/package-info.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/java/example/springdata/jpa/simple/package-info.java
rename to jpa/example/src/main/java/example/springdata/jpa/simple/package-info.java
diff --git a/jpa/spring-data-jpa-example/src/main/resources/META-INF/orm.xml b/jpa/example/src/main/resources/META-INF/orm.xml
similarity index 100%
rename from jpa/spring-data-jpa-example/src/main/resources/META-INF/orm.xml
rename to jpa/example/src/main/resources/META-INF/orm.xml
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/auditing/AuditableUserSample.java b/jpa/example/src/test/java/example/springdata/jpa/auditing/AuditableUserSample.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/auditing/AuditableUserSample.java
rename to jpa/example/src/test/java/example/springdata/jpa/auditing/AuditableUserSample.java
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/basics/BasicFactorySetup.java b/jpa/example/src/test/java/example/springdata/jpa/basics/BasicFactorySetup.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/basics/BasicFactorySetup.java
rename to jpa/example/src/test/java/example/springdata/jpa/basics/BasicFactorySetup.java
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/basics/BasicSample.java b/jpa/example/src/test/java/example/springdata/jpa/basics/BasicSample.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/basics/BasicSample.java
rename to jpa/example/src/test/java/example/springdata/jpa/basics/BasicSample.java
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/basics/package-info.java b/jpa/example/src/test/java/example/springdata/jpa/basics/package-info.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/basics/package-info.java
rename to jpa/example/src/test/java/example/springdata/jpa/basics/package-info.java
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java b/jpa/example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java
rename to jpa/example/src/test/java/example/springdata/jpa/caching/CachingRepositoryTests.java
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/custom/UserRepositoryCustomizationTests.java b/jpa/example/src/test/java/example/springdata/jpa/custom/UserRepositoryCustomizationTests.java
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/custom/UserRepositoryCustomizationTests.java
rename to jpa/example/src/test/java/example/springdata/jpa/custom/UserRepositoryCustomizationTests.java
diff --git a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java b/jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java
similarity index 81%
rename from jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java
rename to jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java
index c012b209..fb19ad3d 100644
--- a/jpa/spring-data-jpa-example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java
+++ b/jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java
@@ -15,6 +15,7 @@
*/
package example.springdata.jpa.simple;
+import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.util.List;
@@ -27,10 +28,6 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
-import example.springdata.jpa.simple.SimpleConfiguration;
-import example.springdata.jpa.simple.SimpleUserRepository;
-import example.springdata.jpa.simple.User;
-
/**
* Intergration test showing the basic usage of {@link SimpleUserRepository}.
*
@@ -47,6 +44,7 @@ public class SimpleUserRepositoryTests {
@Before
public void setUp() {
+
user = new User();
user.setUsername("foobar");
user.setFirstname("firstname");
@@ -58,7 +56,7 @@ public class SimpleUserRepositoryTests {
user = repository.save(user);
- assertEquals(user, repository.findOne(user.getId()));
+ assertThat(repository.findOne(user.getId()), is(user));
}
@Test
@@ -68,8 +66,8 @@ public class SimpleUserRepositoryTests {
List users = repository.findByLastname("lastname");
- assertNotNull(users);
- assertTrue(users.contains(user));
+ assertThat(users, is(notNullValue()));
+ assertThat(users.contains(user), is(true));
}
@Test
@@ -79,6 +77,16 @@ public class SimpleUserRepositoryTests {
List users = repository.findByFirstnameOrLastname("lastname");
- assertTrue(users.contains(user));
+ assertThat(users.contains(user), is(true));
+ }
+
+ @Test
+ public void useGuavaOptionalInsteadOfNulls() {
+
+ assertThat(repository.findByUsername("foobar").isPresent(), is(false));
+
+ repository.save(user);
+
+ assertThat(repository.findByUsername("foobar").isPresent(), is(true));
}
}
diff --git a/jpa/spring-data-jpa-example/src/test/resources/META-INF/persistence.xml b/jpa/example/src/test/resources/META-INF/persistence.xml
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/resources/META-INF/persistence.xml
rename to jpa/example/src/test/resources/META-INF/persistence.xml
diff --git a/jpa/spring-data-jpa-example/src/test/resources/logback.xml b/jpa/example/src/test/resources/logback.xml
similarity index 100%
rename from jpa/spring-data-jpa-example/src/test/resources/logback.xml
rename to jpa/example/src/test/resources/logback.xml
diff --git a/jpa/spring-data-jpa-interceptors/pom.xml b/jpa/interceptors/pom.xml
similarity index 100%
rename from jpa/spring-data-jpa-interceptors/pom.xml
rename to jpa/interceptors/pom.xml
diff --git a/jpa/spring-data-jpa-interceptors/src/main/java/example/springdata/jpa/interceptors/ApplicationConfiguration.java b/jpa/interceptors/src/main/java/example/springdata/jpa/interceptors/ApplicationConfiguration.java
similarity index 100%
rename from jpa/spring-data-jpa-interceptors/src/main/java/example/springdata/jpa/interceptors/ApplicationConfiguration.java
rename to jpa/interceptors/src/main/java/example/springdata/jpa/interceptors/ApplicationConfiguration.java
diff --git a/jpa/spring-data-jpa-interceptors/src/main/java/example/springdata/jpa/interceptors/Customer.java b/jpa/interceptors/src/main/java/example/springdata/jpa/interceptors/Customer.java
similarity index 100%
rename from jpa/spring-data-jpa-interceptors/src/main/java/example/springdata/jpa/interceptors/Customer.java
rename to jpa/interceptors/src/main/java/example/springdata/jpa/interceptors/Customer.java
diff --git a/jpa/spring-data-jpa-interceptors/src/main/java/example/springdata/jpa/interceptors/CustomerRepository.java b/jpa/interceptors/src/main/java/example/springdata/jpa/interceptors/CustomerRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-interceptors/src/main/java/example/springdata/jpa/interceptors/CustomerRepository.java
rename to jpa/interceptors/src/main/java/example/springdata/jpa/interceptors/CustomerRepository.java
diff --git a/jpa/spring-data-jpa-interceptors/src/test/java/example/springdata/jpa/interceptors/InterceptorIntegrationTest.java b/jpa/interceptors/src/test/java/example/springdata/jpa/interceptors/InterceptorIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-interceptors/src/test/java/example/springdata/jpa/interceptors/InterceptorIntegrationTest.java
rename to jpa/interceptors/src/test/java/example/springdata/jpa/interceptors/InterceptorIntegrationTest.java
diff --git a/jpa/spring-data-jpa-interceptors/src/test/resources/logback.xml b/jpa/interceptors/src/test/resources/logback.xml
similarity index 100%
rename from jpa/spring-data-jpa-interceptors/src/test/resources/logback.xml
rename to jpa/interceptors/src/test/resources/logback.xml
diff --git a/jpa/java8/README.md b/jpa/java8/README.md
new file mode 100644
index 00000000..4d762d6f
--- /dev/null
+++ b/jpa/java8/README.md
@@ -0,0 +1,23 @@
+# Spring Data - Java 8 examples
+
+This project contains samples of Java 8 specific features of Spring Data (JPA).
+
+## Support for JDK 8's `Optional` for repository methods
+
+```java
+interface CustomerRepository extends Repository {
+
+ // CRUD method using Optional
+ Optional findOne(Long id);
+
+ // Query method using Optional
+ Optional findByLastname(String lastname);
+}
+```
+
+* `CustomerRepository.findOne(Long)` effectively "overrides" the default `CrudRepository.findOne(…)` to return `Optional.empty()` instead of `null` in case no uniqe element satisfying the query can be found.
+* `CustomerRepository.findByLastname(…)` does the same for a normal query method.
+
+## Support for JDK 8's date/time types in the auditing sub-system
+
+* `Customer` extends `AbstractEntity` which contains fields of JDK 8's new date/time API and those can be populated the same way legacy types like `Date` and `Calendar` can.
\ No newline at end of file
diff --git a/jpa/spring-data-jpa-java8-auditing/pom.xml b/jpa/java8/pom.xml
similarity index 84%
rename from jpa/spring-data-jpa-java8-auditing/pom.xml
rename to jpa/java8/pom.xml
index 23a2291d..5d2561fa 100644
--- a/jpa/spring-data-jpa-java8-auditing/pom.xml
+++ b/jpa/java8/pom.xml
@@ -8,8 +8,8 @@
1.0.0.BUILD-SNAPSHOT
- spring-data-jpa-java8-auditing
- Spring Data JPA - Auditing on Java 8
+ spring-data-jpa-java8
+ Spring Data JPA - Java 8 specific features
diff --git a/jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/AbstractEntity.java b/jpa/java8/src/main/java/example/springdata/jpa/java8/AbstractEntity.java
similarity index 100%
rename from jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/AbstractEntity.java
rename to jpa/java8/src/main/java/example/springdata/jpa/java8/AbstractEntity.java
diff --git a/jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/AuditingConfiguration.java b/jpa/java8/src/main/java/example/springdata/jpa/java8/AuditingConfiguration.java
similarity index 94%
rename from jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/AuditingConfiguration.java
rename to jpa/java8/src/main/java/example/springdata/jpa/java8/AuditingConfiguration.java
index ee296a7f..882c3f9d 100644
--- a/jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/AuditingConfiguration.java
+++ b/jpa/java8/src/main/java/example/springdata/jpa/java8/AuditingConfiguration.java
@@ -21,6 +21,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableAutoConfiguration
-@EnableJpaAuditing class AuditingConfiguration {
+@EnableJpaAuditing
+class AuditingConfiguration {
-}
\ No newline at end of file
+}
diff --git a/jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/Customer.java b/jpa/java8/src/main/java/example/springdata/jpa/java8/Customer.java
similarity index 100%
rename from jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/Customer.java
rename to jpa/java8/src/main/java/example/springdata/jpa/java8/Customer.java
diff --git a/jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/CustomerRepository.java b/jpa/java8/src/main/java/example/springdata/jpa/java8/CustomerRepository.java
similarity index 62%
rename from jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/CustomerRepository.java
rename to jpa/java8/src/main/java/example/springdata/jpa/java8/CustomerRepository.java
index 5ca47de4..d4113f42 100644
--- a/jpa/spring-data-jpa-java8-auditing/src/main/java/example/springdata/jpa/java8/CustomerRepository.java
+++ b/jpa/java8/src/main/java/example/springdata/jpa/java8/CustomerRepository.java
@@ -15,11 +15,25 @@
*/
package example.springdata.jpa.java8;
+import java.util.Optional;
+
import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.Repository;
/**
+ * Repository to manage {@link Customer} instances.
+ *
* @author Oliver Gierke
*/
-public interface CustomerRepository extends CrudRepository {
+public interface CustomerRepository extends Repository {
+ /**
+ * Special customization of {@link CrudRepository#findOne(java.io.Serializable)} to return a JDK 8 {@link Optional}.
+ *
+ * @param id
+ * @return
+ */
+ Optional findOne(Long id);
+
+ S save(S customer);
}
diff --git a/jpa/spring-data-jpa-java8-auditing/src/main/resources/META-INF/orm.xml b/jpa/java8/src/main/resources/META-INF/orm.xml
similarity index 100%
rename from jpa/spring-data-jpa-java8-auditing/src/main/resources/META-INF/orm.xml
rename to jpa/java8/src/main/resources/META-INF/orm.xml
diff --git a/jpa/spring-data-jpa-java8-auditing/src/test/java/example/springdata/jpa/java8/Java8AuditingIntegrationTests.java b/jpa/java8/src/test/java/example/springdata/jpa/java8/Java8IntegrationTests.java
similarity index 78%
rename from jpa/spring-data-jpa-java8-auditing/src/test/java/example/springdata/jpa/java8/Java8AuditingIntegrationTests.java
rename to jpa/java8/src/test/java/example/springdata/jpa/java8/Java8IntegrationTests.java
index 8d55cafe..7a8d8f76 100644
--- a/jpa/spring-data-jpa-java8-auditing/src/test/java/example/springdata/jpa/java8/Java8AuditingIntegrationTests.java
+++ b/jpa/java8/src/test/java/example/springdata/jpa/java8/Java8IntegrationTests.java
@@ -18,11 +18,14 @@ package example.springdata.jpa.java8;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
+import java.util.Optional;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
/**
* Integration test to show the usage of Java 8 date time APIs with Spring Data JPA auditing.
@@ -31,10 +34,20 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AuditingConfiguration.class)
-public class Java8AuditingIntegrationTests {
+@Transactional
+public class Java8IntegrationTests {
@Autowired CustomerRepository repository;
+ @Test
+ public void providesFindOneWithOptional() {
+
+ Customer carter = repository.save(new Customer("Carter", "Beauford"));
+
+ assertThat(repository.findOne(carter.id).isPresent(), is(true));
+ assertThat(repository.findOne(carter.id + 1), is(Optional. empty()));
+ }
+
@Test
public void auditingSetsJdk8DateTimeTypes() {
diff --git a/jpa/spring-data-jpa-java8-auditing/src/test/resources/logback.xml b/jpa/java8/src/test/resources/logback.xml
similarity index 100%
rename from jpa/spring-data-jpa-java8-auditing/src/test/resources/logback.xml
rename to jpa/java8/src/test/resources/logback.xml
diff --git a/jpa/pom.xml b/jpa/pom.xml
index 3dcc38e1..5b738ff8 100644
--- a/jpa/pom.xml
+++ b/jpa/pom.xml
@@ -17,14 +17,14 @@
2011
- spring-data-jpa-example
- spring-data-jpa-showcase
- spring-data-jpa-interceptors
- spring-data-jpa-java8-auditing
+ example
+ showcase
+ interceptors
+ java8
- 1.5.1.RELEASE
+ 1.6.0.BUILD-SNAPSHOT
4.3.4.Final
@@ -47,4 +47,11 @@
+
+
+ spring-libs-snapshot
+ http:/repo.spring.io/libs-snapshot
+
+
+
\ No newline at end of file
diff --git a/jpa/spring-data-jpa-showcase/README.txt b/jpa/showcase/README.txt
similarity index 100%
rename from jpa/spring-data-jpa-showcase/README.txt
rename to jpa/showcase/README.txt
diff --git a/jpa/spring-data-jpa-showcase/demo.txt b/jpa/showcase/demo.txt
similarity index 100%
rename from jpa/spring-data-jpa-showcase/demo.txt
rename to jpa/showcase/demo.txt
diff --git a/jpa/spring-data-jpa-showcase/pom.xml b/jpa/showcase/pom.xml
similarity index 100%
rename from jpa/spring-data-jpa-showcase/pom.xml
rename to jpa/showcase/pom.xml
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/after/AccountRepository.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/after/AccountRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/after/AccountRepository.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/after/AccountRepository.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/after/CustomerRepository.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/after/CustomerRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/after/CustomerRepository.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/after/CustomerRepository.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/AccountService.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/AccountService.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/AccountService.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/AccountService.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/AccountServiceImpl.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/AccountServiceImpl.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/AccountServiceImpl.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/AccountServiceImpl.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerService.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerService.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerService.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerService.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerServiceImpl.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerServiceImpl.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerServiceImpl.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/before/CustomerServiceImpl.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/core/Account.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/core/Account.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/core/Account.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/core/Account.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/core/Customer.java b/jpa/showcase/src/main/java/example/springdata/jpa/showcase/core/Customer.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/java/example/springdata/jpa/showcase/core/Customer.java
rename to jpa/showcase/src/main/java/example/springdata/jpa/showcase/core/Customer.java
diff --git a/jpa/spring-data-jpa-showcase/src/main/resources/data.sql b/jpa/showcase/src/main/resources/data.sql
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/main/resources/data.sql
rename to jpa/showcase/src/main/resources/data.sql
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountPredicates.java b/jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountPredicates.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountPredicates.java
rename to jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountPredicates.java
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepository.java b/jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepository.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepository.java
rename to jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepository.java
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryCustom.java b/jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryCustom.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryCustom.java
rename to jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryCustom.java
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryImpl.java b/jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryImpl.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryImpl.java
rename to jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryImpl.java
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryJdbcImpl.java b/jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryJdbcImpl.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryJdbcImpl.java
rename to jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/AccountRepositoryJdbcImpl.java
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/CustomerSpecifications.java b/jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/CustomerSpecifications.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/CustomerSpecifications.java
rename to jpa/showcase/src/snippets/java/example/springdata/jpa/showcase/snippets/CustomerSpecifications.java
diff --git a/jpa/spring-data-jpa-showcase/src/snippets/resources/jdbc.xml b/jpa/showcase/src/snippets/resources/jdbc.xml
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/snippets/resources/jdbc.xml
rename to jpa/showcase/src/snippets/resources/jdbc.xml
diff --git a/jpa/spring-data-jpa-showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/AccountRepositoryIntegrationTest.java b/jpa/showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/AccountRepositoryIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/AccountRepositoryIntegrationTest.java
rename to jpa/showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/AccountRepositoryIntegrationTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/CustomerRepositoryIntegrationTest.java b/jpa/showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/CustomerRepositoryIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/CustomerRepositoryIntegrationTest.java
rename to jpa/showcase/src/test-snippets/java/example/springdata/jpa/showcase/snippets/test/CustomerRepositoryIntegrationTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/AbstractShowcaseTest.java b/jpa/showcase/src/test/java/example/springdata/jpa/showcase/AbstractShowcaseTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/AbstractShowcaseTest.java
rename to jpa/showcase/src/test/java/example/springdata/jpa/showcase/AbstractShowcaseTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/after/AccountRepositoryIntegrationTest.java b/jpa/showcase/src/test/java/example/springdata/jpa/showcase/after/AccountRepositoryIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/after/AccountRepositoryIntegrationTest.java
rename to jpa/showcase/src/test/java/example/springdata/jpa/showcase/after/AccountRepositoryIntegrationTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/after/CustomerRepositoryIntegrationTest.java b/jpa/showcase/src/test/java/example/springdata/jpa/showcase/after/CustomerRepositoryIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/after/CustomerRepositoryIntegrationTest.java
rename to jpa/showcase/src/test/java/example/springdata/jpa/showcase/after/CustomerRepositoryIntegrationTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/before/AccountServiceIntegrationTest.java b/jpa/showcase/src/test/java/example/springdata/jpa/showcase/before/AccountServiceIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/before/AccountServiceIntegrationTest.java
rename to jpa/showcase/src/test/java/example/springdata/jpa/showcase/before/AccountServiceIntegrationTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/before/CustomerServiceIntegrationTest.java b/jpa/showcase/src/test/java/example/springdata/jpa/showcase/before/CustomerServiceIntegrationTest.java
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test/java/example/springdata/jpa/showcase/before/CustomerServiceIntegrationTest.java
rename to jpa/showcase/src/test/java/example/springdata/jpa/showcase/before/CustomerServiceIntegrationTest.java
diff --git a/jpa/spring-data-jpa-showcase/src/test/resources/logback.xml b/jpa/showcase/src/test/resources/logback.xml
similarity index 100%
rename from jpa/spring-data-jpa-showcase/src/test/resources/logback.xml
rename to jpa/showcase/src/test/resources/logback.xml