Skip to content

Commit c3dbce4

Browse files
committed
DATAMONGO-1322 - Polishing.
Convert lineendings from CRLF to LF. Reduce validator implementations visibility to package. Extend Javadoc. Slight rewording in reference documentation. Original pull request: spring-projects#525. Related pull request: spring-projects#511. Related ticket: DATACMNS-1835.
1 parent 36614ef commit c3dbce4

File tree

10 files changed

+239
-245
lines changed

10 files changed

+239
-245
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public CollectionOptions schema(@Nullable MongoJsonSchema schema) {
150150
}
151151

152152
/**
153-
* /** Create new {@link CollectionOptions} with already given settings and {@code validationOptions} set to given
153+
* Create new {@link CollectionOptions} with already given settings and {@code validationOptions} set to given
154154
* {@link Validator}.
155155
*
156156
* @param validator can be {@literal null}.

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

+13-22
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import org.springframework.data.mapping.model.ConvertingPropertyAccessor;
6464
import org.springframework.data.mongodb.MongoDbFactory;
6565
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
66-
import org.springframework.data.mongodb.core.CollectionOptions.ValidationOptions;
6766
import org.springframework.data.mongodb.core.DefaultBulkOperations.BulkOperationContext;
6867
import org.springframework.data.mongodb.core.aggregation.Aggregation;
6968
import org.springframework.data.mongodb.core.aggregation.AggregationOperationContext;
@@ -108,7 +107,6 @@
108107
import org.springframework.data.mongodb.core.query.NearQuery;
109108
import org.springframework.data.mongodb.core.query.Query;
110109
import org.springframework.data.mongodb.core.query.Update;
111-
import org.springframework.data.mongodb.core.validation.JsonSchemaValidator;
112110
import org.springframework.data.mongodb.core.validation.Validator;
113111
import org.springframework.data.mongodb.util.MongoClientVersion;
114112
import org.springframework.data.projection.ProjectionInformation;
@@ -141,16 +139,7 @@
141139
import com.mongodb.client.MongoCursor;
142140
import com.mongodb.client.MongoDatabase;
143141
import com.mongodb.client.MongoIterable;
144-
import com.mongodb.client.model.CountOptions;
145-
import com.mongodb.client.model.CreateCollectionOptions;
146-
import com.mongodb.client.model.DeleteOptions;
147-
import com.mongodb.client.model.Filters;
148-
import com.mongodb.client.model.FindOneAndDeleteOptions;
149-
import com.mongodb.client.model.FindOneAndUpdateOptions;
150-
import com.mongodb.client.model.ReturnDocument;
151-
import com.mongodb.client.model.UpdateOptions;
152-
import com.mongodb.client.model.ValidationAction;
153-
import com.mongodb.client.model.ValidationLevel;
142+
import com.mongodb.client.model.*;
154143
import com.mongodb.client.result.DeleteResult;
155144
import com.mongodb.client.result.UpdateResult;
156145
import com.mongodb.util.JSONParseException;
@@ -2385,11 +2374,12 @@ protected Document convertToDocument(@Nullable CollectionOptions collectionOptio
23852374

23862375
Document doc = convertToDocument(collectionOptions);
23872376

2388-
if (collectionOptions != null && collectionOptions.getValidationOptions().isPresent()) {
2377+
if (collectionOptions != null) {
23892378

2390-
ValidationOptions v = collectionOptions.getValidationOptions().get();
2391-
v.getValidator().ifPresent(val -> doc.put("validator", getMappedValidator(val, targetType)));
2379+
collectionOptions.getValidationOptions().ifPresent(it -> it.getValidator() //
2380+
.ifPresent(val -> doc.put("validator", getMappedValidator(val, targetType))));
23922381
}
2382+
23932383
return doc;
23942384
}
23952385

@@ -2402,29 +2392,30 @@ protected Document convertToDocument(@Nullable CollectionOptions collectionOptio
24022392
protected Document convertToDocument(@Nullable CollectionOptions collectionOptions) {
24032393

24042394
Document document = new Document();
2395+
24052396
if (collectionOptions != null) {
24062397

24072398
collectionOptions.getCapped().ifPresent(val -> document.put("capped", val));
24082399
collectionOptions.getSize().ifPresent(val -> document.put("size", val));
24092400
collectionOptions.getMaxDocuments().ifPresent(val -> document.put("max", val));
24102401
collectionOptions.getCollation().ifPresent(val -> document.append("collation", val.toDocument()));
24112402

2412-
if (collectionOptions.getValidationOptions().isPresent()) {
2403+
collectionOptions.getValidationOptions().ifPresent(it -> {
24132404

2414-
CollectionOptions.ValidationOptions v = collectionOptions.getValidationOptions().get();
2415-
v.getValidationLevel().ifPresent(val -> document.append("validationLevel", val.getValue()));
2416-
v.getValidationAction().ifPresent(val -> document.append("validationAction", val.getValue()));
2417-
v.getValidator().ifPresent(val -> document.append("validator", getMappedValidator(val, Object.class)));
2418-
}
2405+
it.getValidationLevel().ifPresent(val -> document.append("validationLevel", val.getValue()));
2406+
it.getValidationAction().ifPresent(val -> document.append("validationAction", val.getValue()));
2407+
it.getValidator().ifPresent(val -> document.append("validator", getMappedValidator(val, Object.class)));
2408+
});
24192409
}
2410+
24202411
return document;
24212412
}
24222413

24232414
Document getMappedValidator(Validator validator, Class<?> domainType) {
24242415

24252416
Document validationRules = validator.toDocument();
24262417

2427-
if (validator instanceof JsonSchemaValidator || validationRules.containsKey("$jsonSchema")) {
2418+
if (validationRules.containsKey("$jsonSchema")) {
24282419
return schemaMapper.mapSchema(validationRules, domainType);
24292420
}
24302421

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

+2-3
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@
100100
import org.springframework.data.mongodb.core.query.NearQuery;
101101
import org.springframework.data.mongodb.core.query.Query;
102102
import org.springframework.data.mongodb.core.query.Update;
103-
import org.springframework.data.mongodb.core.validation.JsonSchemaValidator;
104103
import org.springframework.data.mongodb.core.validation.Validator;
105104
import org.springframework.data.mongodb.util.MongoClientVersion;
106105
import org.springframework.data.projection.ProjectionInformation;
@@ -2033,11 +2032,11 @@ protected CreateCollectionOptions convertToCreateCollectionOptions(@Nullable Col
20332032
return result;
20342033
}
20352034

2036-
Document getMappedValidator(Validator validator, Class<?> domainType) {
2035+
private Document getMappedValidator(Validator validator, Class<?> domainType) {
20372036

20382037
Document validationRules = validator.toDocument();
20392038

2040-
if (validator instanceof JsonSchemaValidator || validationRules.containsKey("$jsonSchema")) {
2039+
if (validationRules.containsKey("$jsonSchema")) {
20412040
return schemaMapper.mapSchema(validationRules, domainType);
20422041
}
20432042

Original file line numberDiff line numberDiff line change
@@ -1,75 +1,75 @@
1-
/*
2-
* Copyright 2018 the original author or authors.
3-
*
4-
* Licensed under the Apache License, Version 2.0 (the "License");
5-
* you may not use this file except in compliance with the License.
6-
* You may obtain a copy of the License at
7-
*
8-
* http://www.apache.org/licenses/LICENSE-2.0
9-
*
10-
* Unless required by applicable law or agreed to in writing, software
11-
* distributed under the License is distributed on an "AS IS" BASIS,
12-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-
* See the License for the specific language governing permissions and
14-
* limitations under the License.
15-
*/
16-
package org.springframework.data.mongodb.core.validation;
17-
18-
import lombok.AccessLevel;
19-
import lombok.EqualsAndHashCode;
20-
import lombok.RequiredArgsConstructor;
21-
22-
import org.bson.Document;
23-
import org.springframework.data.mongodb.core.query.Criteria;
24-
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
25-
import org.springframework.data.mongodb.core.query.SerializationUtils;
26-
import org.springframework.util.Assert;
27-
28-
/**
29-
* {@link Validator} implementation based on {@link CriteriaDefinition query expressions}.
30-
*
31-
* @author Andreas Zink
32-
* @author Christoph Strobl
33-
* @since 2.1
34-
* @see Criteria
35-
* @see <a href="https://docs.mongodb.com/manual/core/schema-validation/#query-expressions">Schema Validation</a>
36-
*/
37-
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
38-
@EqualsAndHashCode
39-
public class CriteriaValidator implements Validator {
40-
41-
private final CriteriaDefinition criteria;
42-
43-
/**
44-
* Creates a new {@link Validator} object, which is basically setup of query operators, based on a
45-
* {@link CriteriaDefinition} instance.
46-
*
47-
* @param criteria the criteria to build the {@code validator} from. Must not be {@literal null}.
48-
* @return new instance of {@link CriteriaValidator}.
49-
* @throws IllegalArgumentException when criteria is {@literal null}.
50-
*/
51-
public static CriteriaValidator of(CriteriaDefinition criteria) {
52-
53-
Assert.notNull(criteria, "Criteria must not be null!");
54-
return new CriteriaValidator(criteria);
55-
}
56-
57-
/*
58-
* (non-Javadoc)
59-
* @see org.springframework.data.mongodb.core.validation.Validator#toDocument()
60-
*/
61-
@Override
62-
public Document toDocument() {
63-
return criteria.getCriteriaObject();
64-
}
65-
66-
/*
67-
* (non-Javadoc)
68-
* @see java.lang.Object#toString()
69-
*/
70-
@Override
71-
public String toString() {
72-
return SerializationUtils.serializeToJsonSafely(toDocument());
73-
}
74-
75-
}
1+
/*
2+
* Copyright 2018 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.data.mongodb.core.validation;
17+
18+
import lombok.AccessLevel;
19+
import lombok.EqualsAndHashCode;
20+
import lombok.RequiredArgsConstructor;
21+
22+
import org.bson.Document;
23+
import org.springframework.data.mongodb.core.query.Criteria;
24+
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
25+
import org.springframework.data.mongodb.core.query.SerializationUtils;
26+
import org.springframework.util.Assert;
27+
28+
/**
29+
* {@link Validator} implementation based on {@link CriteriaDefinition query expressions}.
30+
*
31+
* @author Andreas Zink
32+
* @author Christoph Strobl
33+
* @since 2.1
34+
* @see Criteria
35+
* @see <a href="https://docs.mongodb.com/manual/core/schema-validation/#query-expressions">Schema Validation</a>
36+
*/
37+
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
38+
@EqualsAndHashCode
39+
class CriteriaValidator implements Validator {
40+
41+
private final CriteriaDefinition criteria;
42+
43+
/**
44+
* Creates a new {@link Validator} object, which is basically setup of query operators, based on a
45+
* {@link CriteriaDefinition} instance.
46+
*
47+
* @param criteria the criteria to build the {@code validator} from. Must not be {@literal null}.
48+
* @return new instance of {@link CriteriaValidator}.
49+
* @throws IllegalArgumentException when criteria is {@literal null}.
50+
*/
51+
static CriteriaValidator of(CriteriaDefinition criteria) {
52+
53+
Assert.notNull(criteria, "Criteria must not be null!");
54+
55+
return new CriteriaValidator(criteria);
56+
}
57+
58+
/*
59+
* (non-Javadoc)
60+
* @see org.springframework.data.mongodb.core.validation.Validator#toDocument()
61+
*/
62+
@Override
63+
public Document toDocument() {
64+
return criteria.getCriteriaObject();
65+
}
66+
67+
/*
68+
* (non-Javadoc)
69+
* @see java.lang.Object#toString()
70+
*/
71+
@Override
72+
public String toString() {
73+
return SerializationUtils.serializeToJsonSafely(toDocument());
74+
}
75+
}

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,26 @@
2828
* which can be either a {@code $jsonSchema} or query expression.
2929
*
3030
* @author Christoph Strobl
31+
* @author Mark Paluch
3132
* @since 2.1
3233
* @see <a href="https://docs.mongodb.com/manual/core/schema-validation/">Schema Validation</a>
3334
*/
3435
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
3536
@EqualsAndHashCode
36-
public class DocumentValidator implements Validator {
37+
class DocumentValidator implements Validator {
3738

3839
private final Document validatorObject;
3940

4041
/**
41-
* Create new {@link org.springframework.data.mongodb.core.validation.DocumentValidator} defining validation rules via
42-
* a plain {@link Document}.
42+
* Create new {@link DocumentValidator} defining validation rules via a plain {@link Document}.
4343
*
4444
* @param validatorObject must not be {@literal null}.
4545
* @throws IllegalArgumentException if validatorObject is {@literal null}.
4646
*/
47-
public static DocumentValidator of(Document validatorObject) {
47+
static DocumentValidator of(Document validatorObject) {
4848

4949
Assert.notNull(validatorObject, "ValidatorObject must not be null!");
50+
5051
return new DocumentValidator(new Document(validatorObject));
5152
}
5253

@@ -60,7 +61,7 @@ public Document toDocument() {
6061
}
6162

6263
/*
63-
* (non-Javadoc)
64+
* (non-Javadoc)
6465
* @see java.lang.Object#toString()
6566
*/
6667
@Override

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

+11-7
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,27 @@
2828
* {@link Validator} implementation based on {@link MongoJsonSchema JSON Schema}.
2929
*
3030
* @author Christoph Strobl
31+
* @author Mark Paluch
3132
* @since 2.1
3233
* @see <a href="https://docs.mongodb.com/manual/core/schema-validation/#json-schema">Schema Validation</a>
3334
*/
3435
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
3536
@EqualsAndHashCode
36-
public class JsonSchemaValidator implements Validator {
37+
class JsonSchemaValidator implements Validator {
3738

3839
private final MongoJsonSchema schema;
3940

40-
public static JsonSchemaValidator of(MongoJsonSchema schema) {
41+
/**
42+
* Create new {@link JsonSchemaValidator} defining validation rules via {@link MongoJsonSchema}.
43+
*
44+
* @param schema must not be {@literal null}.
45+
* @throws IllegalArgumentException if schema is {@literal null}.
46+
*/
47+
static JsonSchemaValidator of(MongoJsonSchema schema) {
4148

4249
Assert.notNull(schema, "Schema must not be null!");
43-
return new JsonSchemaValidator(schema);
44-
}
4550

46-
public MongoJsonSchema getSchema() {
47-
return schema;
51+
return new JsonSchemaValidator(schema);
4852
}
4953

5054
/*
@@ -57,7 +61,7 @@ public Document toDocument() {
5761
}
5862

5963
/*
60-
* (non-Javadoc)
64+
* (non-Javadoc)
6165
* @see java.lang.Object#toString()
6266
*/
6367
@Override

0 commit comments

Comments
 (0)