Browse Source

DATAMONGO-2507 - Polishing.

Add 'matching' default method also to imperative variant (ExecutableFindOperation), fix & add tests using 'distinct'.
Update Javadoc and rename input arg 'criteriaDefinition' to 'criteria'.

Original Pull Request: #852
pull/858/head
Christoph Strobl 6 years ago
parent
commit
e1df28797a
  1. 24
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableFindOperation.java
  2. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableMapReduceOperation.java
  3. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableRemoveOperation.java
  4. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableUpdateOperation.java
  5. 22
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveFindOperation.java
  6. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMapReduceOperation.java
  7. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveRemoveOperation.java
  8. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveUpdateOperation.java
  9. 10
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupportTests.java
  10. 19
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java

24
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableFindOperation.java

@ -44,7 +44,7 @@ import com.mongodb.client.MongoCollection; @@ -44,7 +44,7 @@ import com.mongodb.client.MongoCollection;
* query(Human.class)
* .inCollection("star-wars")
* .as(Jedi.class)
* .matching(query(where("firstname").is("luke")))
* .matching(where("firstname").is("luke"))
* .all();
* </code>
* </pre>
@ -174,13 +174,13 @@ public interface ExecutableFindOperation { @@ -174,13 +174,13 @@ public interface ExecutableFindOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingFind}.
* @throws IllegalArgumentException if query is {@literal null}.
* @throws IllegalArgumentException if criteria is {@literal null}.
* @since 3.0
*/
default TerminatingFind<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingFind<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
/**
@ -304,9 +304,21 @@ public interface ExecutableFindOperation { @@ -304,9 +304,21 @@ public interface ExecutableFindOperation {
*
* @param query must not be {@literal null}.
* @return new instance of {@link TerminatingDistinct}.
* @throws IllegalArgumentException if resultType is {@literal null}.
* @throws IllegalArgumentException if query is {@literal null}.
*/
TerminatingDistinct<T> matching(Query query);
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingDistinct}.
* @throws IllegalArgumentException if criteria is {@literal null}.
* @since 3.0
*/
default TerminatingDistinct<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}
/**

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableMapReduceOperation.java

@ -152,13 +152,13 @@ public interface ExecutableMapReduceOperation { @@ -152,13 +152,13 @@ public interface ExecutableMapReduceOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingMapReduce}.
* @throws IllegalArgumentException if query is {@literal null}.
* @since 3.0
*/
default TerminatingMapReduce<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingMapReduce<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableRemoveOperation.java

@ -124,13 +124,13 @@ public interface ExecutableRemoveOperation { @@ -124,13 +124,13 @@ public interface ExecutableRemoveOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingRemove}.
* @throws IllegalArgumentException if query is {@literal null}.
* @since 3.0
*/
default TerminatingRemove<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingRemove<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableUpdateOperation.java

@ -215,13 +215,13 @@ public interface ExecutableUpdateOperation { @@ -215,13 +215,13 @@ public interface ExecutableUpdateOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link UpdateWithUpdate}.
* @throws IllegalArgumentException if query is {@literal null}.
* @since 3.0
*/
default UpdateWithUpdate<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default UpdateWithUpdate<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

22
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveFindOperation.java

@ -39,7 +39,7 @@ import org.springframework.data.mongodb.core.query.Query; @@ -39,7 +39,7 @@ import org.springframework.data.mongodb.core.query.Query;
* query(Human.class)
* .inCollection("star-wars")
* .as(Jedi.class)
* .matching(query(where("firstname").is("luke")))
* .matching(where("firstname").is("luke"))
* .all();
* </code>
* </pre>
@ -149,13 +149,13 @@ public interface ReactiveFindOperation { @@ -149,13 +149,13 @@ public interface ReactiveFindOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingFind}.
* @throws IllegalArgumentException if query is {@literal null}.
* @throws IllegalArgumentException if criteria is {@literal null}.
* @since 3.0
*/
default TerminatingFind<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingFind<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
/**
@ -273,20 +273,20 @@ public interface ReactiveFindOperation { @@ -273,20 +273,20 @@ public interface ReactiveFindOperation {
*
* @param query must not be {@literal null}.
* @return new instance of {@link TerminatingDistinct}.
* @throws IllegalArgumentException if resultType is {@literal null}.
* @throws IllegalArgumentException if query is {@literal null}.
*/
TerminatingDistinct<T> matching(Query query);
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @return new instance of {@link TerminatingFind}.
* @throws IllegalArgumentException if query is {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingDistinct}.
* @throws IllegalArgumentException if criteria is {@literal null}.
* @since 3.0
*/
default TerminatingDistinct<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingDistinct<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMapReduceOperation.java

@ -151,13 +151,13 @@ public interface ReactiveMapReduceOperation { @@ -151,13 +151,13 @@ public interface ReactiveMapReduceOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingMapReduce}.
* @throws IllegalArgumentException if query is {@literal null}.
* @since 3.0
*/
default TerminatingMapReduce<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingMapReduce<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveRemoveOperation.java

@ -111,13 +111,13 @@ public interface ReactiveRemoveOperation { @@ -111,13 +111,13 @@ public interface ReactiveRemoveOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link TerminatingRemove}.
* @throws IllegalArgumentException if query is {@literal null}.
* @since 3.0
*/
default TerminatingRemove<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default TerminatingRemove<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveUpdateOperation.java

@ -176,13 +176,13 @@ public interface ReactiveUpdateOperation { @@ -176,13 +176,13 @@ public interface ReactiveUpdateOperation {
/**
* Set the filter {@link CriteriaDefinition criteria} to be used.
*
* @param criteriaDefinition must not be {@literal null}.
* @param criteria must not be {@literal null}.
* @return new instance of {@link UpdateWithUpdate}.
* @throws IllegalArgumentException if query is {@literal null}.
* @since 3.0
*/
default UpdateWithUpdate<T> matching(CriteriaDefinition criteriaDefinition) {
return matching(Query.query(criteriaDefinition));
default UpdateWithUpdate<T> matching(CriteriaDefinition criteria) {
return matching(Query.query(criteria));
}
}

10
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ExecutableFindOperationSupportTests.java

@ -536,6 +536,16 @@ class ExecutableFindOperationSupportTests { @@ -536,6 +536,16 @@ class ExecutableFindOperationSupportTests {
.isThrownBy(() -> template.query(Person.class).distinct("firstname").as(Long.class).all());
}
@Test // DATAMONGO-2507
void distinctAppliesFilterQuery() {
assertThat(template.query(Person.class).inCollection(STAR_WARS).distinct("firstname") //
.matching(where("lastname").is(luke.lastname)) //
.as(String.class) //
.all() //
).containsExactlyInAnyOrder("luke");
}
interface Contact {}
@Data

19
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java

@ -172,14 +172,6 @@ class ReactiveFindOperationSupportTests { @@ -172,14 +172,6 @@ class ReactiveFindOperationSupportTests {
.verifyComplete();
}
@Test // DATAMONGO-2507
void findAllWithProjectionByCriteria() {
template.query(Person.class).as(Jedi.class).matching(where("firstname").is("luke")).all()
.as(StepVerifier::create).consumeNextWith(it -> assertThat(it).isInstanceOf(Jedi.class)) //
.verifyComplete();
}
@Test // DATAMONGO-1719
void findAllByWithCollectionUsingMappingInformation() {
@ -640,6 +632,17 @@ class ReactiveFindOperationSupportTests { @@ -640,6 +632,17 @@ class ReactiveFindOperationSupportTests {
.verify();
}
@Test // DATAMONGO-2507
void distinctAppliesFilterQuery() {
template.query(Person.class).inCollection(STAR_WARS).distinct("firstname") //
.matching(where("lastname").is(luke.lastname)) //
.as(String.class) //
.all() //
.as(StepVerifier::create).consumeNextWith(it -> assertThat(it).isEqualTo("luke")) //
.verifyComplete();
}
interface Contact {}
@Data

Loading…
Cancel
Save