diff --git a/redis/pom.xml b/redis/pom.xml index 4afcbd3b..9a65ca02 100644 --- a/redis/pom.xml +++ b/redis/pom.xml @@ -20,7 +20,7 @@ cluster-sentinel example cluster - repository + repositories diff --git a/redis/repository/README.md b/redis/repositories/README.md similarity index 83% rename from redis/repository/README.md rename to redis/repositories/README.md index 5357838d..bfd6a98b 100644 --- a/redis/repository/README.md +++ b/redis/repositories/README.md @@ -10,15 +10,15 @@ Redis Repository support allows to convert, store, retrieve and index entities w @RedisHash("persons") class Person { - @Id String id; - - @Indexed String firstname; - @Indexed String lastname; + @Id String id; - Gender gender; - Address address; + @Indexed String firstname; + @Indexed String lastname; - @Reference List children; + Gender gender; + Address address; + + @Reference List children; } ``` @@ -81,36 +81,36 @@ The below configuration uses [Jedis](https://github.com/xetorthio/jedis) to conn @EnableRedisRepositories class AppConfig { - @Bean - RedisConnectionFactory connectionFactory() { - return new JedisConnectionFactory(); - } + @Bean + RedisConnectionFactory connectionFactory() { + return new JedisConnectionFactory(); + } - @Bean - RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { + @Bean + RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { - RedisTemplate template = new RedisTemplate(); - template.setConnectionFactory(connectionFactory); + RedisTemplate template = new RedisTemplate(); + template.setConnectionFactory(connectionFactory); - return template; - } + return template; + } } ``` -Having the infrastructure in place you can go on declaring and using the `Repository` interface. +Having the infrastructure in place you can go on declaring and using the `Repository` interface. ```java interface PersonRepository extends CrudRepository { - List findByLastname(String lastname); + List findByLastname(String lastname); - Page findByLastname(String lastname, Pageable page); + Page findByLastname(String lastname, Pageable page); - List findByFirstnameAndLastname(String firstname, String lastname); + List findByFirstnameAndLastname(String firstname, String lastname); - List findByFirstnameOrLastname(String firstname, String lastname); + List findByFirstnameOrLastname(String firstname, String lastname); - List findByAddress_City(String city); + List findByAddress_City(String city); } ``` diff --git a/redis/repository/pom.xml b/redis/repositories/pom.xml similarity index 66% rename from redis/repository/pom.xml rename to redis/repositories/pom.xml index 25976e00..60c396fe 100644 --- a/redis/repository/pom.xml +++ b/redis/repositories/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-data-redis-repository-example + spring-data-redis-repositories-example Spring Data Redis - Repository Support Example @@ -12,39 +12,31 @@ ../pom.xml + + Hopper-RC1 + + org.springframework.boot spring-boot-starter-data-redis + ${project.groupId} spring-data-redis-example-utils ${project.version} test + com.github.kstyrc embedded-redis 0.6 test - - org.springframework.data - spring-data-redis - 1.7.0.RC1 - - - org.springframework.data - spring-data-keyvalue - 1.1.0.RC1 - - - org.springframework.data - spring-data-commons - 1.12.0.RC1 - + \ No newline at end of file diff --git a/redis/repository/src/main/java/example/springdata/redis/repositories/Address.java b/redis/repositories/src/main/java/example/springdata/redis/repositories/Address.java similarity index 94% rename from redis/repository/src/main/java/example/springdata/redis/repositories/Address.java rename to redis/repositories/src/main/java/example/springdata/redis/repositories/Address.java index 0081e898..c73428fa 100644 --- a/redis/repository/src/main/java/example/springdata/redis/repositories/Address.java +++ b/redis/repositories/src/main/java/example/springdata/redis/repositories/Address.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package example.springdata.redis.domain; +package example.springdata.redis.repositories; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/redis/repository/src/main/java/example/springdata/redis/repositories/ApplicationConfiguration.java b/redis/repositories/src/main/java/example/springdata/redis/repositories/ApplicationConfiguration.java similarity index 87% rename from redis/repository/src/main/java/example/springdata/redis/repositories/ApplicationConfiguration.java rename to redis/repositories/src/main/java/example/springdata/redis/repositories/ApplicationConfiguration.java index 27481177..53054e8b 100644 --- a/redis/repository/src/main/java/example/springdata/redis/repositories/ApplicationConfiguration.java +++ b/redis/repositories/src/main/java/example/springdata/redis/repositories/ApplicationConfiguration.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package example.springdata.redis; +package example.springdata.redis.repositories; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -27,22 +27,13 @@ import org.springframework.data.redis.repository.configuration.EnableRedisReposi */ @Configuration @EnableRedisRepositories -public class AppConfig { +public class ApplicationConfiguration { - /** - * {@link RedisConnectionFactory} to be used when connecting to redis. - * - * @return - */ @Bean RedisConnectionFactory connectionFactory() { return new JedisConnectionFactory(); } - /** - * @param connectionFactory - * @return - */ @Bean RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { @@ -51,5 +42,4 @@ public class AppConfig { return template; } - } diff --git a/redis/repository/src/main/java/example/springdata/redis/repositories/Gender.java b/redis/repositories/src/main/java/example/springdata/redis/repositories/Gender.java similarity index 93% rename from redis/repository/src/main/java/example/springdata/redis/repositories/Gender.java rename to redis/repositories/src/main/java/example/springdata/redis/repositories/Gender.java index 7686d31a..5c777886 100644 --- a/redis/repository/src/main/java/example/springdata/redis/repositories/Gender.java +++ b/redis/repositories/src/main/java/example/springdata/redis/repositories/Gender.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package example.springdata.redis.domain; +package example.springdata.redis.repositories; /** * @author Christoph Strobl diff --git a/redis/repository/src/main/java/example/springdata/redis/repositories/Person.java b/redis/repositories/src/main/java/example/springdata/redis/repositories/Person.java similarity index 95% rename from redis/repository/src/main/java/example/springdata/redis/repositories/Person.java rename to redis/repositories/src/main/java/example/springdata/redis/repositories/Person.java index 256e99da..fef88727 100644 --- a/redis/repository/src/main/java/example/springdata/redis/repositories/Person.java +++ b/redis/repositories/src/main/java/example/springdata/redis/repositories/Person.java @@ -13,13 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package example.springdata.redis.domain; - -import java.lang.reflect.Field; -import java.util.List; +package example.springdata.redis.repositories; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.lang.reflect.Field; +import java.util.List; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Reference; @@ -54,10 +55,12 @@ import org.springframework.data.redis.core.index.Indexed; @Data @EqualsAndHashCode(exclude = { "children" }) @RedisHash("persons") +@NoArgsConstructor class Person { /** - * The {@literal id} and {@link RedisHash#toString()} build up the {@literal key} for the Redis {@literal HASH}.
+ * The {@literal id} and {@link RedisHash#toString()} build up the {@literal key} for the Redis {@literal HASH}. + *
* *
 	 * 
@@ -106,12 +109,10 @@ class Person {
 	 */
 	private @Reference List children;
 
-	public Person() {}
-
 	public Person(String firstname, String lastname, Gender gender) {
+
 		this.firstname = firstname;
 		this.lastname = lastname;
 		this.gender = gender;
 	}
-
 }
diff --git a/redis/repository/src/main/java/example/springdata/redis/repositories/PersonRepository.java b/redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java
similarity index 96%
rename from redis/repository/src/main/java/example/springdata/redis/repositories/PersonRepository.java
rename to redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java
index a9c4c128..d2059202 100644
--- a/redis/repository/src/main/java/example/springdata/redis/repositories/PersonRepository.java
+++ b/redis/repositories/src/main/java/example/springdata/redis/repositories/PersonRepository.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package example.springdata.redis.domain;
+package example.springdata.redis.repositories;
 
 import java.util.List;
 
@@ -35,5 +35,4 @@ interface PersonRepository extends CrudRepository {
 	List findByFirstnameOrLastname(String firstname, String lastname);
 
 	List findByAddress_City(String city);
-
 }
diff --git a/redis/repository/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java b/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
similarity index 78%
rename from redis/repository/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
rename to redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
index 23bc6884..d72d6153 100644
--- a/redis/repository/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
+++ b/redis/repositories/src/test/java/example/springdata/redis/repositories/PersonRepositoryTests.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package example.springdata.redis.domain;
+package example.springdata.redis.repositories;
 
 import static org.hamcrest.collection.IsIterableContainingInAnyOrder.*;
 import static org.hamcrest.core.Is.*;
@@ -21,6 +21,9 @@ import static org.hamcrest.core.IsCollectionContaining.*;
 import static org.hamcrest.core.IsNot.*;
 import static org.junit.Assert.*;
 
+import example.springdata.redis.test.util.EmbeddedRedisServer;
+import example.springdata.redis.test.util.RequiresRedisServer;
+
 import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.List;
@@ -41,15 +44,12 @@ import org.springframework.data.redis.core.RedisOperations;
 import org.springframework.data.redis.core.index.Indexed;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-import example.springdata.redis.AppConfig;
-import example.springdata.redis.test.util.EmbeddedRedisServer;
-import example.springdata.redis.test.util.RequiresRedisServer;
-
 /**
  * @author Christoph Strobl
+ * @author Oliver Gierke
  */
 @RunWith(SpringJUnit4ClassRunner.class)
-@SpringApplicationConfiguration(classes = AppConfig.class)
+@SpringApplicationConfiguration(classes = ApplicationConfiguration.class)
 public class PersonRepositoryTests {
 
 	/**
@@ -57,14 +57,14 @@ public class PersonRepositoryTests {
 	 * 1) Start/Stop an embedded instance or reuse an already running local installation 
* 2) Ignore tests if startup failed and no server running locally. */ - public static @ClassRule RuleChain rules = RuleChain.outerRule( - EmbeddedRedisServer.runningAt(6379).suppressExceptions()).around(RequiresRedisServer.onLocalhost()); + public static @ClassRule RuleChain rules = RuleChain + .outerRule(EmbeddedRedisServer.runningAt(6379).suppressExceptions()).around(RequiresRedisServer.onLocalhost()); /** {@link Charset} for String conversion **/ private static final Charset CHARSET = Charset.forName("UTF-8"); - @Autowired RedisOperations ops; - @Autowired PersonRepository repo; + @Autowired RedisOperations operations; + @Autowired PersonRepository repository; /* * Set of test users @@ -81,7 +81,7 @@ public class PersonRepositoryTests { @After public void setUp() { - ops.execute((RedisConnection connection) -> { + operations.execute((RedisConnection connection) -> { connection.flushDb(); return "OK"; }); @@ -94,10 +94,11 @@ public class PersonRepositoryTests { @Test public void saveSingleEntity() { - repo.save(eddard); + repository.save(eddard); - assertThat(ops.execute((RedisConnection connection) -> connection.exists(new String("persons:" + eddard.getId()) - .getBytes(CHARSET))), is(true)); + assertThat(operations.execute( + (RedisConnection connection) -> connection.exists(new String("persons:" + eddard.getId()).getBytes(CHARSET))), + is(true)); } /** @@ -108,7 +109,7 @@ public class PersonRepositoryTests { flushTestUsers(); - List starks = repo.findByLastname(eddard.getLastname()); + List starks = repository.findByLastname(eddard.getLastname()); assertThat(starks, containsInAnyOrder(eddard, robb, sansa, arya, bran, rickon)); assertThat(starks, not(hasItem(jon))); @@ -122,7 +123,7 @@ public class PersonRepositoryTests { flushTestUsers(); - List aryaStark = repo.findByFirstnameAndLastname(arya.getFirstname(), arya.getLastname()); + List aryaStark = repository.findByFirstnameAndLastname(arya.getFirstname(), arya.getLastname()); assertThat(aryaStark, hasItem(arya)); assertThat(aryaStark, not(hasItems(eddard, robb, sansa, bran, rickon, jon))); @@ -136,7 +137,7 @@ public class PersonRepositoryTests { flushTestUsers(); - List aryaAndJon = repo.findByFirstnameOrLastname(arya.getFirstname(), jon.getLastname()); + List aryaAndJon = repository.findByFirstnameOrLastname(arya.getFirstname(), jon.getLastname()); assertThat(aryaAndJon, containsInAnyOrder(arya, jon)); assertThat(aryaAndJon, not(hasItems(eddard, robb, sansa, bran, rickon))); @@ -150,12 +151,12 @@ public class PersonRepositoryTests { flushTestUsers(); - Page page1 = repo.findPersonByLastname(eddard.getLastname(), new PageRequest(0, 5)); + Page page1 = repository.findPersonByLastname(eddard.getLastname(), new PageRequest(0, 5)); assertThat(page1.getNumberOfElements(), is(5)); assertThat(page1.getTotalElements(), is(6L)); - Page page2 = repo.findPersonByLastname(eddard.getLastname(), new PageRequest(1, 5)); + Page page2 = repository.findPersonByLastname(eddard.getLastname(), new PageRequest(1, 5)); assertThat(page2.getNumberOfElements(), is(1)); assertThat(page2.getTotalElements(), is(6L)); @@ -175,7 +176,7 @@ public class PersonRepositoryTests { flushTestUsers(); - List eddardStark = repo.findByAddress_City(winterfell.getCity()); + List eddardStark = repository.findByAddress_City(winterfell.getCity()); assertThat(eddardStark, hasItem(eddard)); assertThat(eddardStark, not(hasItems(robb, sansa, arya, bran, rickon, jon))); @@ -192,9 +193,9 @@ public class PersonRepositoryTests { eddard.setChildren(Arrays.asList(jon, robb, sansa, arya, bran, rickon)); - repo.save(eddard); + repository.save(eddard); - Person laoded = repo.findOne(eddard.getId()); + Person laoded = repository.findOne(eddard.getId()); assertThat(laoded.getChildren(), hasItems(jon, robb, sansa, arya, bran, rickon)); /* @@ -203,14 +204,14 @@ public class PersonRepositoryTests { * - Robb was killed by Roose Bolton during the Red Wedding. * - Jon was stabbed by brothers or the Night's Watch. */ - repo.delete(Arrays.asList(robb, jon)); + repository.delete(Arrays.asList(robb, jon)); - laoded = repo.findOne(eddard.getId()); + laoded = repository.findOne(eddard.getId()); assertThat(laoded.getChildren(), hasItems(sansa, arya, bran, rickon)); assertThat(laoded.getChildren(), not(hasItems(robb, jon))); } private void flushTestUsers() { - repo.save(Arrays.asList(eddard, robb, sansa, arya, bran, rickon, jon)); + repository.save(Arrays.asList(eddard, robb, sansa, arya, bran, rickon, jon)); } } diff --git a/redis/repository/src/test/resources/logback.xml b/redis/repository/src/test/resources/logback.xml deleted file mode 100644 index 61c86dd9..00000000 --- a/redis/repository/src/test/resources/logback.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - %d %5p %40.40c:%4L - %m%n - - - - - - - - \ No newline at end of file diff --git a/redis/util/pom.xml b/redis/util/pom.xml index 89b17291..b7c1c9e8 100644 --- a/redis/util/pom.xml +++ b/redis/util/pom.xml @@ -10,7 +10,7 @@ spring-data-redis-example-utils - Spring Data Redis - Example utilities + Spring Data Redis - Example Utilities