Skip to content

Commit 81402ae

Browse files
authored
Do minor improvements to how we use field validators (#1477)
Stop unnecessarily creating `NoOpFieldNameValidator`, `ReplacingDocumentFieldNameValidator`
1 parent 5a94048 commit 81402ae

File tree

40 files changed

+98
-114
lines changed

40 files changed

+98
-114
lines changed

bson/src/main/org/bson/AbstractBsonWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public abstract class AbstractBsonWriter implements BsonWriter, Closeable {
4747
* @param settings The writer settings.
4848
*/
4949
protected AbstractBsonWriter(final BsonWriterSettings settings) {
50-
this(settings, new NoOpFieldNameValidator());
50+
this(settings, NoOpFieldNameValidator.INSTANCE);
5151
}
5252

5353
/**

bson/src/main/org/bson/BsonBinaryWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public BsonBinaryWriter(final BsonOutput bsonOutput) {
6767
*/
6868
public BsonBinaryWriter(final BsonWriterSettings settings, final BsonBinaryWriterSettings binaryWriterSettings,
6969
final BsonOutput bsonOutput) {
70-
this(settings, binaryWriterSettings, bsonOutput, new NoOpFieldNameValidator());
70+
this(settings, binaryWriterSettings, bsonOutput, NoOpFieldNameValidator.INSTANCE);
7171
}
7272

7373
/**

bson/src/main/org/bson/NoOpFieldNameValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616

1717
package org.bson;
1818

19-
class NoOpFieldNameValidator implements FieldNameValidator {
19+
final class NoOpFieldNameValidator implements FieldNameValidator {
20+
static final NoOpFieldNameValidator INSTANCE = new NoOpFieldNameValidator();
21+
22+
private NoOpFieldNameValidator() {
23+
}
24+
2025
@Override
2126
public boolean validate(final String fieldName) {
2227
return true;

driver-core/src/main/com/mongodb/internal/connection/CommandHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ private static CommandMessage getCommandMessage(final String database, final Bso
105105
final InternalConnection internalConnection,
106106
final ClusterConnectionMode clusterConnectionMode,
107107
@Nullable final ServerApi serverApi) {
108-
return new CommandMessage(new MongoNamespace(database, COMMAND_COLLECTION_NAME), command, new NoOpFieldNameValidator(), primary(),
108+
return new CommandMessage(new MongoNamespace(database, COMMAND_COLLECTION_NAME), command, NoOpFieldNameValidator.INSTANCE, primary(),
109109
MessageSettings
110110
.builder()
111111
// Note: server version will be 0.0 at this point when called from InternalConnectionInitializer,

driver-core/src/main/com/mongodb/internal/connection/DefaultServerMonitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ private boolean shouldStreamResponses(final ServerDescription currentServerDescr
308308
private CommandMessage createCommandMessage(final BsonDocument command, final InternalConnection connection,
309309
final ServerDescription currentServerDescription) {
310310
return new CommandMessage(new MongoNamespace("admin", COMMAND_COLLECTION_NAME), command,
311-
new NoOpFieldNameValidator(), primary(),
311+
NoOpFieldNameValidator.INSTANCE, primary(),
312312
MessageSettings.builder()
313313
.maxWireVersion(connection.getDescription().getMaxWireVersion())
314314
.build(),

driver-core/src/main/com/mongodb/internal/operation/AsyncCommandBatchCursor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.mongodb.internal.connection.Connection;
3838
import com.mongodb.internal.connection.OperationContext;
3939
import com.mongodb.internal.operation.AsyncOperationHelper.AsyncCallableConnectionWithCallback;
40+
import com.mongodb.internal.validator.NoOpFieldNameValidator;
4041
import com.mongodb.lang.Nullable;
4142
import org.bson.BsonDocument;
4243
import org.bson.BsonTimestamp;
@@ -53,7 +54,6 @@
5354
import static com.mongodb.internal.operation.CommandBatchCursorHelper.FIRST_BATCH;
5455
import static com.mongodb.internal.operation.CommandBatchCursorHelper.MESSAGE_IF_CLOSED_AS_CURSOR;
5556
import static com.mongodb.internal.operation.CommandBatchCursorHelper.NEXT_BATCH;
56-
import static com.mongodb.internal.operation.CommandBatchCursorHelper.NO_OP_FIELD_NAME_VALIDATOR;
5757
import static com.mongodb.internal.operation.CommandBatchCursorHelper.getKillCursorsCommand;
5858
import static com.mongodb.internal.operation.CommandBatchCursorHelper.getMoreCommandDocument;
5959
import static com.mongodb.internal.operation.CommandBatchCursorHelper.logCommandCursorResult;
@@ -177,7 +177,7 @@ private void getMoreLoop(final AsyncConnection connection, final ServerCursor se
177177
final SingleResultCallback<List<T>> callback) {
178178
connection.commandAsync(namespace.getDatabaseName(),
179179
getMoreCommandDocument(serverCursor.getId(), connection.getDescription(), namespace, batchSize, comment),
180-
NO_OP_FIELD_NAME_VALIDATOR, ReadPreference.primary(),
180+
NoOpFieldNameValidator.INSTANCE, ReadPreference.primary(),
181181
CommandResultDocumentCodec.create(decoder, NEXT_BATCH),
182182
assertNotNull(resourceManager.getConnectionSource()).getOperationContext(),
183183
(commandResult, t) -> {
@@ -334,7 +334,7 @@ private void killServerCursor(final MongoNamespace namespace, final ServerCursor
334334
timeoutContext.resetToDefaultMaxTime();
335335

336336
localConnection.commandAsync(namespace.getDatabaseName(), getKillCursorsCommand(namespace, localServerCursor),
337-
NO_OP_FIELD_NAME_VALIDATOR, ReadPreference.primary(), new BsonDocumentCodec(),
337+
NoOpFieldNameValidator.INSTANCE, ReadPreference.primary(), new BsonDocumentCodec(),
338338
operationContext, (r, t) -> callback.onResult(null, null));
339339
}
340340
}

driver-core/src/main/com/mongodb/internal/operation/AsyncOperationHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ static <T> void executeCommandAsync(final AsyncWriteBinding binding,
225225
Assertions.notNull("binding", binding);
226226
SingleResultCallback<T> addingRetryableLabelCallback = addingRetryableLabelCallback(callback,
227227
connection.getDescription().getMaxWireVersion());
228-
connection.commandAsync(database, command, new NoOpFieldNameValidator(), ReadPreference.primary(), new BsonDocumentCodec(),
228+
connection.commandAsync(database, command, NoOpFieldNameValidator.INSTANCE, ReadPreference.primary(), new BsonDocumentCodec(),
229229
binding.getOperationContext(), transformingWriteCallback(transformer, connection, addingRetryableLabelCallback));
230230
}
231231

@@ -306,7 +306,7 @@ static <D, T> void createReadCommandAndExecuteAsync(
306306
callback.onResult(null, e);
307307
return;
308308
}
309-
connection.commandAsync(database, command, new NoOpFieldNameValidator(), source.getReadPreference(), decoder,
309+
connection.commandAsync(database, command, NoOpFieldNameValidator.INSTANCE, source.getReadPreference(), decoder,
310310
operationContext, transformingReadCallback(transformer, source, connection, callback));
311311
}
312312

driver-core/src/main/com/mongodb/internal/operation/BulkWriteBatch.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import org.bson.codecs.configuration.CodecRegistry;
5555

5656
import java.util.ArrayList;
57-
import java.util.HashMap;
5857
import java.util.List;
5958
import java.util.Map;
6059
import java.util.Set;
@@ -69,6 +68,7 @@
6968
import static com.mongodb.internal.operation.OperationHelper.LOGGER;
7069
import static com.mongodb.internal.operation.OperationHelper.isRetryableWrite;
7170
import static com.mongodb.internal.operation.WriteConcernHelper.createWriteConcernError;
71+
import static java.util.Collections.singletonMap;
7272
import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
7373

7474
/**
@@ -77,7 +77,6 @@
7777
public final class BulkWriteBatch {
7878
private static final CodecRegistry REGISTRY = fromProviders(new BsonValueCodecProvider());
7979
private static final Decoder<BsonDocument> DECODER = REGISTRY.get(BsonDocument.class);
80-
private static final FieldNameValidator NO_OP_FIELD_NAME_VALIDATOR = new NoOpFieldNameValidator();
8180

8281
private final MongoNamespace namespace;
8382
private final ConnectionDescription connectionDescription;
@@ -279,15 +278,15 @@ BulkWriteBatch getNextBatch() {
279278

280279
FieldNameValidator getFieldNameValidator() {
281280
if (batchType == UPDATE || batchType == REPLACE) {
282-
Map<String, FieldNameValidator> rootMap = new HashMap<>();
281+
Map<String, FieldNameValidator> rootMap;
283282
if (batchType == REPLACE) {
284-
rootMap.put("u", new ReplacingDocumentFieldNameValidator());
283+
rootMap = singletonMap("u", ReplacingDocumentFieldNameValidator.INSTANCE);
285284
} else {
286-
rootMap.put("u", new UpdateFieldNameValidator());
285+
rootMap = singletonMap("u", new UpdateFieldNameValidator());
287286
}
288-
return new MappedFieldNameValidator(NO_OP_FIELD_NAME_VALIDATOR, rootMap);
287+
return new MappedFieldNameValidator(NoOpFieldNameValidator.INSTANCE, rootMap);
289288
} else {
290-
return NO_OP_FIELD_NAME_VALIDATOR;
289+
return NoOpFieldNameValidator.INSTANCE;
291290
}
292291
}
293292

driver-core/src/main/com/mongodb/internal/operation/CommandBatchCursor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.mongodb.internal.binding.ConnectionSource;
3434
import com.mongodb.internal.connection.Connection;
3535
import com.mongodb.internal.connection.OperationContext;
36+
import com.mongodb.internal.validator.NoOpFieldNameValidator;
3637
import com.mongodb.lang.Nullable;
3738
import org.bson.BsonDocument;
3839
import org.bson.BsonTimestamp;
@@ -52,7 +53,6 @@
5253
import static com.mongodb.internal.operation.CommandBatchCursorHelper.MESSAGE_IF_CLOSED_AS_CURSOR;
5354
import static com.mongodb.internal.operation.CommandBatchCursorHelper.MESSAGE_IF_CLOSED_AS_ITERATOR;
5455
import static com.mongodb.internal.operation.CommandBatchCursorHelper.NEXT_BATCH;
55-
import static com.mongodb.internal.operation.CommandBatchCursorHelper.NO_OP_FIELD_NAME_VALIDATOR;
5656
import static com.mongodb.internal.operation.CommandBatchCursorHelper.getKillCursorsCommand;
5757
import static com.mongodb.internal.operation.CommandBatchCursorHelper.getMoreCommandDocument;
5858
import static com.mongodb.internal.operation.CommandBatchCursorHelper.logCommandCursorResult;
@@ -237,7 +237,7 @@ private void getMore() {
237237
assertNotNull(
238238
connection.command(namespace.getDatabaseName(),
239239
getMoreCommandDocument(serverCursor.getId(), connection.getDescription(), namespace, batchSize, comment),
240-
NO_OP_FIELD_NAME_VALIDATOR,
240+
NoOpFieldNameValidator.INSTANCE,
241241
ReadPreference.primary(),
242242
CommandResultDocumentCodec.create(decoder, NEXT_BATCH),
243243
assertNotNull(resourceManager.getConnectionSource()).getOperationContext())));
@@ -374,7 +374,7 @@ private void killServerCursor(final MongoNamespace namespace, final ServerCursor
374374
timeoutContext.resetToDefaultMaxTime();
375375

376376
localConnection.command(namespace.getDatabaseName(), getKillCursorsCommand(namespace, localServerCursor),
377-
NO_OP_FIELD_NAME_VALIDATOR, ReadPreference.primary(), new BsonDocumentCodec(), operationContext);
377+
NoOpFieldNameValidator.INSTANCE, ReadPreference.primary(), new BsonDocumentCodec(), operationContext);
378378
}
379379
}
380380
}

driver-core/src/main/com/mongodb/internal/operation/CommandBatchCursorHelper.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,13 @@
2222
import com.mongodb.MongoQueryException;
2323
import com.mongodb.ServerCursor;
2424
import com.mongodb.connection.ConnectionDescription;
25-
import com.mongodb.internal.validator.NoOpFieldNameValidator;
2625
import com.mongodb.lang.Nullable;
2726
import org.bson.BsonArray;
2827
import org.bson.BsonDocument;
2928
import org.bson.BsonInt32;
3029
import org.bson.BsonInt64;
3130
import org.bson.BsonString;
3231
import org.bson.BsonValue;
33-
import org.bson.FieldNameValidator;
3432

3533
import static com.mongodb.internal.operation.DocumentHelper.putIfNotNull;
3634
import static com.mongodb.internal.operation.OperationHelper.LOGGER;
@@ -42,7 +40,6 @@ final class CommandBatchCursorHelper {
4240

4341
static final String FIRST_BATCH = "firstBatch";
4442
static final String NEXT_BATCH = "nextBatch";
45-
static final FieldNameValidator NO_OP_FIELD_NAME_VALIDATOR = new NoOpFieldNameValidator();
4643
static final String MESSAGE_IF_CLOSED_AS_CURSOR = "Cursor has been closed";
4744
static final String MESSAGE_IF_CLOSED_AS_ITERATOR = "Iterator has been closed";
4845

0 commit comments

Comments
 (0)