diff --git a/pom.xml b/pom.xml
index 83608da5..01fb0c33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-keyvalue
- 2.5.0-SNAPSHOT
+ 2.5.0-GH-1995-SNAPSHOT
Spring Data KeyValue
diff --git a/src/main/java/org/springframework/data/keyvalue/core/KeyValueAdapter.java b/src/main/java/org/springframework/data/keyvalue/core/KeyValueAdapter.java
index 1e7bf140..3cbbe9d8 100644
--- a/src/main/java/org/springframework/data/keyvalue/core/KeyValueAdapter.java
+++ b/src/main/java/org/springframework/data/keyvalue/core/KeyValueAdapter.java
@@ -102,6 +102,19 @@ public interface KeyValueAdapter extends DisposableBean {
*/
Iterable> getAllOf(String keyspace);
+ /**
+ * Get all elements for given keyspace.
+ *
+ * @param type must not be {@literal null}.
+ * @param keyspace must not be {@literal null}.
+ * @return empty {@link Collection} if nothing found.
+ * @since 2.5
+ */
+ @SuppressWarnings("unchecked")
+ default Iterable getAllOf(String keyspace, Class type) {
+ return (Iterable) getAllOf(keyspace);
+ }
+
/**
* Returns a {@link CloseableIterator} that iterates over all entries.
*
@@ -110,6 +123,19 @@ public interface KeyValueAdapter extends DisposableBean {
*/
CloseableIterator> entries(String keyspace);
+ /**
+ * Returns a {@link CloseableIterator} that iterates over all entries.
+ *
+ * @param type must not be {@literal null}.
+ * @param keyspace must not be {@literal null}.
+ * @return
+ * @since 2.5
+ */
+ @SuppressWarnings("unchecked")
+ default CloseableIterator> entries(String keyspace, Class type) {
+ return (CloseableIterator) entries(keyspace);
+ }
+
/**
* Remove all objects of given type.
*
@@ -129,7 +155,9 @@ public interface KeyValueAdapter extends DisposableBean {
* @param keyspace must not be {@literal null}.
* @return empty {@link Collection} if no match found.
*/
- Iterable> find(KeyValueQuery> query, String keyspace);
+ default Iterable> find(KeyValueQuery> query, String keyspace) {
+ return find(query, keyspace, Object.class);
+ }
/**
* @param query must not be {@literal null}.
diff --git a/src/main/java/org/springframework/data/keyvalue/core/KeyValueTemplate.java b/src/main/java/org/springframework/data/keyvalue/core/KeyValueTemplate.java
index 28517b7c..bfef5cd8 100644
--- a/src/main/java/org/springframework/data/keyvalue/core/KeyValueTemplate.java
+++ b/src/main/java/org/springframework/data/keyvalue/core/KeyValueTemplate.java
@@ -237,7 +237,7 @@ public Iterable findAll(Class type) {
return executeRequired(adapter -> {
- Iterable> values = adapter.getAllOf(resolveKeySpace(type));
+ Iterable> values = adapter.getAllOf(resolveKeySpace(type), type);
ArrayList filtered = new ArrayList<>();
for (Object candidate : values) {
diff --git a/src/test/java/org/springframework/data/keyvalue/core/KeyValueTemplateUnitTests.java b/src/test/java/org/springframework/data/keyvalue/core/KeyValueTemplateUnitTests.java
index d3dc44c0..fe030ed3 100644
--- a/src/test/java/org/springframework/data/keyvalue/core/KeyValueTemplateUnitTests.java
+++ b/src/test/java/org/springframework/data/keyvalue/core/KeyValueTemplateUnitTests.java
@@ -190,7 +190,7 @@ void findAllOfShouldReturnEntireCollection() {
template.findAll(Foo.class);
- verify(adapterMock, times(1)).getAllOf(Foo.class.getName());
+ verify(adapterMock, times(1)).getAllOf(Foo.class.getName(), Foo.class);
}
@Test // DATACMNS-525
@@ -327,7 +327,7 @@ void insertShouldRespectTypeAliasOnSubClass() {
void findAllOfShouldRespectTypeAliasAndFilterNonMatchingTypes() {
Collection foo = Arrays.asList(ALIASED_USING_ALIAS_FOR, SUBCLASS_OF_ALIASED_USING_ALIAS_FOR);
- when(adapterMock.getAllOf("aliased")).thenReturn(foo);
+ when(adapterMock.getAllOf("aliased", SUBCLASS_OF_ALIASED_USING_ALIAS_FOR.getClass())).thenReturn(foo);
assertThat((Iterable) template.findAll(SUBCLASS_OF_ALIASED_USING_ALIAS_FOR.getClass()))
.contains(SUBCLASS_OF_ALIASED_USING_ALIAS_FOR);