Skip to content

Commit 52ffc68

Browse files
DATAMONGO-1719 - Polishing.
Use empty query where possible to avoid null values and introduce non optional findAndModify alternative for imperative api. Add missing ExecutableUpdateOperation Kotlin extension. Update Javadoc and add non-Javadoc comments.
1 parent 36c77e1 commit 52ffc68

22 files changed

+467
-94
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ class ExecutableAggregationOperationSupport implements ExecutableAggregationOper
5151
this.template = template;
5252
}
5353

54+
/*
55+
* (non-Javadoc)
56+
* @see org.springframework.data.mongodb.core.ExecutableAggregationOperation#aggregateAndReturn(java.lang.Class)
57+
*/
5458
@Override
5559
public <T> ExecutableAggregation<T> aggregateAndReturn(Class<T> domainType) {
5660

@@ -73,6 +77,10 @@ static class ExecutableAggregationSupport<T>
7377
Aggregation aggregation;
7478
String collection;
7579

80+
/*
81+
* (non-Javadoc)
82+
* @see org.springframework.data.mongodb.core.ExecutableAggregationOperation.AggregationWithCollection#inCollection(java.lang.String)
83+
*/
7684
@Override
7785
public AggregationWithAggregation<T> inCollection(String collection) {
7886

@@ -81,6 +89,10 @@ public AggregationWithAggregation<T> inCollection(String collection) {
8189
return new ExecutableAggregationSupport<>(template, domainType, aggregation, collection);
8290
}
8391

92+
/*
93+
* (non-Javadoc)
94+
* @see org.springframework.data.mongodb.core.ExecutableAggregationOperation.AggregationWithAggregation#by(org.springframework.data.mongodb.core.aggregation.Aggregation)
95+
*/
8496
@Override
8597
public TerminatingAggregation<T> by(Aggregation aggregation) {
8698

@@ -89,11 +101,19 @@ public TerminatingAggregation<T> by(Aggregation aggregation) {
89101
return new ExecutableAggregationSupport<>(template, domainType, aggregation, collection);
90102
}
91103

104+
/*
105+
* (non-Javadoc)
106+
* @see org.springframework.data.mongodb.core.ExecutableAggregationOperation.TerminatingAggregation#all()
107+
*/
92108
@Override
93109
public AggregationResults<T> all() {
94110
return template.aggregate(aggregation, getCollectionName(aggregation), domainType);
95111
}
96112

113+
/*
114+
* (non-Javadoc)
115+
* @see org.springframework.data.mongodb.core.ExecutableAggregationOperation.TerminatingAggregation#stream()
116+
*/
97117
@Override
98118
public CloseableIterator<T> stream() {
99119
return template.aggregateStream(aggregation, getCollectionName(aggregation), domainType);

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

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ class ExecutableFindOperationSupport implements ExecutableFindOperation {
6363
this.template = template;
6464
}
6565

66+
/*
67+
* (non-Javadoc)
68+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation#query(java.lang.Class)
69+
*/
6670
@Override
6771
public <T> ExecutableFind<T> query(Class<T> domainType) {
6872

@@ -87,6 +91,10 @@ static class ExecutableFindSupport<T>
8791
String collection;
8892
Query query;
8993

94+
/*
95+
* (non-Javadoc)
96+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.FindWithCollection#inCollection(java.lang.String)
97+
*/
9098
@Override
9199
public FindWithProjection<T> inCollection(String collection) {
92100

@@ -95,6 +103,10 @@ public FindWithProjection<T> inCollection(String collection) {
95103
return new ExecutableFindSupport<>(template, domainType, returnType, collection, query);
96104
}
97105

106+
/*
107+
* (non-Javadoc)
108+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.FindWithProjection#as(Class)
109+
*/
98110
@Override
99111
public <T1> FindWithQuery<T1> as(Class<T1> returnType) {
100112

@@ -103,6 +115,10 @@ public <T1> FindWithQuery<T1> as(Class<T1> returnType) {
103115
return new ExecutableFindSupport<>(template, domainType, returnType, collection, query);
104116
}
105117

118+
/*
119+
* (non-Javadoc)
120+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.FindWithQuery#matching(org.springframework.data.mongodb.core.query.Query)
121+
*/
106122
@Override
107123
public TerminatingFind<T> matching(Query query) {
108124

@@ -111,6 +127,10 @@ public TerminatingFind<T> matching(Query query) {
111127
return new ExecutableFindSupport<>(template, domainType, returnType, collection, query);
112128
}
113129

130+
/*
131+
* (non-Javadoc)
132+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.TerminatingFind#oneValue()
133+
*/
114134
@Override
115135
public T oneValue() {
116136

@@ -127,6 +147,10 @@ public T oneValue() {
127147
return result.iterator().next();
128148
}
129149

150+
/*
151+
* (non-Javadoc)
152+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.TerminatingFind#firstValue()
153+
*/
130154
@Override
131155
public T firstValue() {
132156

@@ -135,26 +159,46 @@ public T firstValue() {
135159
return ObjectUtils.isEmpty(result) ? null : result.iterator().next();
136160
}
137161

162+
/*
163+
* (non-Javadoc)
164+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.TerminatingFind#all()
165+
*/
138166
@Override
139167
public List<T> all() {
140168
return doFind(null);
141169
}
142170

171+
/*
172+
* (non-Javadoc)
173+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.TerminatingFind#stream()
174+
*/
143175
@Override
144176
public Stream<T> stream() {
145177
return StreamUtils.createStreamFromIterator(doStream());
146178
}
147179

180+
/*
181+
* (non-Javadoc)
182+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.FindWithQuery#near(org.springframework.data.mongodb.core.query.NearQuery)
183+
*/
148184
@Override
149185
public TerminatingFindNear<T> near(NearQuery nearQuery) {
150186
return () -> template.geoNear(nearQuery, domainType, getCollectionName(), returnType);
151187
}
152188

189+
/*
190+
* (non-Javadoc)
191+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.TerminatingFind#count()
192+
*/
153193
@Override
154194
public long count() {
155195
return template.count(query, domainType, getCollectionName());
156196
}
157197

198+
/*
199+
* (non-Javadoc)
200+
* @see org.springframework.data.mongodb.core.ExecutableFindOperation.TerminatingFind#exists()
201+
*/
158202
@Override
159203
public boolean exists() {
160204
return template.exists(query, domainType, getCollectionName());
@@ -199,6 +243,10 @@ static class DelegatingQueryCursorPreparer implements CursorPreparer {
199243
this.delegate = delegate;
200244
}
201245

246+
/*
247+
* (non-Javadoc)
248+
* @see org.springframework.data.mongodb.core.CursorPreparer#prepare(com.mongodb.clientFindIterable)
249+
*/
202250
@Override
203251
public FindIterable<Document> prepare(FindIterable<Document> cursor) {
204252

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,6 @@ interface TerminatingBulkInsert<T> {
9494
BulkWriteResult bulk(Collection<? extends T> objects);
9595
}
9696

97-
/**
98-
* @author Christoph Strobl
99-
* @since 2.0
100-
*/
101-
interface ExecutableInsert<T> extends TerminatingInsert<T>, InsertWithCollection<T>, InsertWithBulkMode<T> {}
102-
10397
/**
10498
* Collection override (optional).
10599
*
@@ -134,4 +128,10 @@ interface InsertWithBulkMode<T> extends TerminatingInsert<T> {
134128
*/
135129
TerminatingBulkInsert<T> withBulkMode(BulkMode bulkMode);
136130
}
131+
132+
/**
133+
* @author Christoph Strobl
134+
* @since 2.0
135+
*/
136+
interface ExecutableInsert<T> extends TerminatingInsert<T>, InsertWithCollection<T>, InsertWithBulkMode<T> {}
137137
}

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
import lombok.AccessLevel;
1919
import lombok.NonNull;
2020
import lombok.RequiredArgsConstructor;
21+
import lombok.experimental.FieldDefaults;
2122

2223
import java.util.ArrayList;
2324
import java.util.Collection;
2425

25-
import lombok.experimental.FieldDefaults;
2626
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
2727
import org.springframework.util.Assert;
2828
import org.springframework.util.StringUtils;
@@ -53,6 +53,10 @@ class ExecutableInsertOperationSupport implements ExecutableInsertOperation {
5353
this.template = template;
5454
}
5555

56+
/*
57+
* (non-Javadoc)
58+
* @see org.springframework.data.mongodb.coreExecutableInsertOperation#insert(java.lan.Class)
59+
*/
5660
@Override
5761
public <T> ExecutableInsert<T> insert(Class<T> domainType) {
5862

@@ -74,6 +78,10 @@ static class ExecutableInsertSupport<T> implements ExecutableInsert<T> {
7478
String collection;
7579
BulkMode bulkMode;
7680

81+
/*
82+
* (non-Javadoc)
83+
* @see org.springframework.data.mongodb.core.ExecutableInsertOperation.TerminatingInsert#insert(java.lang.Class)
84+
*/
7785
@Override
7886
public void one(T object) {
7987

@@ -82,6 +90,10 @@ public void one(T object) {
8290
template.insert(object, getCollectionName());
8391
}
8492

93+
/*
94+
* (non-Javadoc)
95+
* @see org.springframework.data.mongodb.core.ExecutableInsertOperation.TerminatingInsert#all(java.util.Collection)
96+
*/
8597
@Override
8698
public void all(Collection<? extends T> objects) {
8799

@@ -90,6 +102,10 @@ public void all(Collection<? extends T> objects) {
90102
template.insert(objects, getCollectionName());
91103
}
92104

105+
/*
106+
* (non-Javadoc)
107+
* @see org.springframework.data.mongodb.core.ExecutableInsertOperation.TerminatingBulkInsert#bulk(java.util.Collection)
108+
*/
93109
@Override
94110
public BulkWriteResult bulk(Collection<? extends T> objects) {
95111

@@ -99,6 +115,10 @@ public BulkWriteResult bulk(Collection<? extends T> objects) {
99115
.insert(new ArrayList<>(objects)).execute();
100116
}
101117

118+
/*
119+
* (non-Javadoc)
120+
* @see org.springframework.data.mongodb.core.ExecutableInsertOperation.InsertWithCollection#inCollection(java.lang.String)
121+
*/
102122
@Override
103123
public InsertWithBulkMode<T> inCollection(String collection) {
104124

@@ -107,6 +127,10 @@ public InsertWithBulkMode<T> inCollection(String collection) {
107127
return new ExecutableInsertSupport<>(template, domainType, collection, bulkMode);
108128
}
109129

130+
/*
131+
* (non-Javadoc)
132+
* @see org.springframework.data.mongodb.core.ExecutableInsertOperation.InsertWithBulkMode#withBulkMode(org.springframework.data.mongodb.core.BulkMode)
133+
*/
110134
@Override
111135
public TerminatingBulkInsert<T> withBulkMode(BulkMode bulkMode) {
112136

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

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
import java.util.List;
2424

25-
import org.bson.Document;
26-
import org.springframework.data.mongodb.core.query.BasicQuery;
2725
import org.springframework.data.mongodb.core.query.Query;
2826
import org.springframework.util.Assert;
2927
import org.springframework.util.StringUtils;
@@ -39,6 +37,8 @@
3937
*/
4038
class ExecutableRemoveOperationSupport implements ExecutableRemoveOperation {
4139

40+
private static final Query ALL_QUERY = new Query();
41+
4242
private final MongoTemplate tempate;
4343

4444
/**
@@ -54,12 +54,16 @@ class ExecutableRemoveOperationSupport implements ExecutableRemoveOperation {
5454
this.tempate = template;
5555
}
5656

57+
/*
58+
* (non-Javadoc)
59+
* @see org.springframework.data.mongodb.core.ExecutableRemoveOperation#remove(java.lang.Class)
60+
*/
5761
@Override
5862
public <T> ExecutableRemove<T> remove(Class<T> domainType) {
5963

6064
Assert.notNull(domainType, "DomainType must not be null!");
6165

62-
return new ExecutableRemoveSupport<>(tempate, domainType, null, null);
66+
return new ExecutableRemoveSupport<>(tempate, domainType, ALL_QUERY, null);
6367
}
6468

6569
/**
@@ -75,6 +79,10 @@ static class ExecutableRemoveSupport<T> implements ExecutableRemove<T>, RemoveWi
7579
Query query;
7680
String collection;
7781

82+
/*
83+
* (non-Javadoc)
84+
* @see org.springframework.data.mongodb.core.ExecutableRemoveOperation.RemoveWithCollection#inCollection(java.lang.String)
85+
*/
7886
@Override
7987
public RemoveWithQuery<T> inCollection(String collection) {
8088

@@ -83,6 +91,10 @@ public RemoveWithQuery<T> inCollection(String collection) {
8391
return new ExecutableRemoveSupport<>(template, domainType, query, collection);
8492
}
8593

94+
/*
95+
* (non-Javadoc)
96+
* @see org.springframework.data.mongodb.core.ExecutableRemoveOperation.RemoveWithQuery#matching(org.springframework.data.mongodb.core.query.Query)
97+
*/
8698
@Override
8799
public TerminatingRemove<T> matching(Query query) {
88100

@@ -91,28 +103,32 @@ public TerminatingRemove<T> matching(Query query) {
91103
return new ExecutableRemoveSupport<>(template, domainType, query, collection);
92104
}
93105

106+
/*
107+
* (non-Javadoc)
108+
* @see org.springframework.data.mongodb.core.ExecutableRemoveOperation.TerminatingRemove#all()
109+
*/
94110
@Override
95111
public DeleteResult all() {
96112

97113
String collectionName = getCollectionName();
98114

99-
return template.doRemove(collectionName, getQuery(), domainType);
115+
return template.doRemove(collectionName, query, domainType);
100116
}
101117

118+
/*
119+
* (non-Javadoc)
120+
* @see org.springframework.data.mongodb.core.ExecutableRemoveOperation.TerminatingRemove#findAndRemove()
121+
*/
102122
@Override
103123
public List<T> findAndRemove() {
104124

105125
String collectionName = getCollectionName();
106126

107-
return template.doFindAndDelete(collectionName, getQuery(), domainType);
127+
return template.doFindAndDelete(collectionName, query, domainType);
108128
}
109129

110130
private String getCollectionName() {
111131
return StringUtils.hasText(collection) ? collection : template.determineCollectionName(domainType);
112132
}
113-
114-
private Query getQuery() {
115-
return query != null ? query : new BasicQuery(new Document());
116-
}
117133
}
118134
}

0 commit comments

Comments
 (0)