Skip to content

Commit 166bf3f

Browse files
authored
Internal nits and house keeping (#1832)
* Remove MongoDriverInformation#getDriverInformationList from the public API * Revert changes to MongoNamespace public API * Remove Micrometer static variables from the public API * Rename internal namespaces to match their public namesakes JAVA-5955 JAVA-5732
1 parent 43efec0 commit 166bf3f

File tree

47 files changed

+271
-172
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+271
-172
lines changed

driver-core/src/main/com/mongodb/MongoDriverInformation.java

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
package com.mongodb;
1818

19-
import com.mongodb.annotations.Internal;
2019
import com.mongodb.annotations.NotThreadSafe;
20+
import com.mongodb.annotations.Sealed;
2121
import com.mongodb.internal.client.DriverInformation;
22-
import com.mongodb.internal.client.DriverInformationHelper;
22+
import com.mongodb.internal.connection.ConcreteMongoDriverInformation;
2323

2424
import java.util.ArrayList;
2525
import java.util.Collections;
@@ -47,8 +47,9 @@
4747
* @since 3.4
4848
* @mongodb.server.release 3.4
4949
*/
50-
public final class MongoDriverInformation {
51-
private final List<DriverInformation> driverInformationList;
50+
@Sealed
51+
public abstract class MongoDriverInformation {
52+
5253

5354
/**
5455
* Convenience method to create a Builder.
@@ -66,50 +67,36 @@ public static Builder builder() {
6667
* @return a builder
6768
*/
6869
public static Builder builder(final MongoDriverInformation mongoDriverInformation) {
69-
return new Builder(mongoDriverInformation);
70+
return new Builder((ConcreteMongoDriverInformation) mongoDriverInformation);
7071
}
7172

7273
/**
7374
* Returns the driverNames
7475
*
7576
* @return the driverNames
7677
*/
77-
public List<String> getDriverNames() {
78-
return DriverInformationHelper.getNames(driverInformationList);
79-
}
78+
public abstract List<String> getDriverNames();
8079

8180
/**
8281
* Returns the driverVersions
8382
*
8483
* @return the driverVersions
8584
*/
86-
public List<String> getDriverVersions() {
87-
return DriverInformationHelper.getVersions(driverInformationList);
88-
}
85+
public abstract List<String> getDriverVersions();
8986

9087
/**
9188
* Returns the driverPlatforms
9289
*
9390
* @return the driverPlatforms
9491
*/
95-
public List<String> getDriverPlatforms() {
96-
return DriverInformationHelper.getPlatforms(driverInformationList);
97-
}
98-
99-
/**
100-
* For internal use only
101-
*/
102-
@Internal
103-
public List<DriverInformation> getDriverInformationList() {
104-
return driverInformationList;
105-
}
92+
public abstract List<String> getDriverPlatforms();
10693

10794
/**
10895
*
10996
*/
11097
@NotThreadSafe
11198
public static final class Builder {
112-
private final MongoDriverInformation mongoDriverInformation;
99+
private final ConcreteMongoDriverInformation mongoDriverInformation;
113100
private String driverName;
114101
private String driverVersion;
115102
private String driverPlatform;
@@ -156,25 +143,21 @@ public Builder driverPlatform(final String driverPlatform) {
156143
*/
157144
public MongoDriverInformation build() {
158145
DriverInformation driverInformation = new DriverInformation(driverName, driverVersion, driverPlatform);
159-
if (mongoDriverInformation.driverInformationList.contains(driverInformation)) {
146+
if (mongoDriverInformation.getDriverInformationList().contains(driverInformation)) {
160147
return mongoDriverInformation;
161148
}
162149

163-
List<DriverInformation> driverInformationList = new ArrayList<>(mongoDriverInformation.driverInformationList);
150+
List<DriverInformation> driverInformationList = new ArrayList<>(mongoDriverInformation.getDriverInformationList());
164151
driverInformationList.add(driverInformation);
165-
return new MongoDriverInformation(Collections.unmodifiableList(driverInformationList));
152+
return new ConcreteMongoDriverInformation(Collections.unmodifiableList(driverInformationList));
166153
}
167154

168155
private Builder() {
169-
mongoDriverInformation = new MongoDriverInformation(Collections.emptyList());
156+
mongoDriverInformation = new ConcreteMongoDriverInformation(Collections.emptyList());
170157
}
171158

172-
private Builder(final MongoDriverInformation driverInformation) {
159+
private Builder(final ConcreteMongoDriverInformation driverInformation) {
173160
this.mongoDriverInformation = notNull("driverInformation", driverInformation);
174161
}
175162
}
176-
177-
private MongoDriverInformation(final List<DriverInformation> driverInformation) {
178-
this.driverInformationList = notNull("driverInformation", driverInformation);
179-
}
180163
}

driver-core/src/main/com/mongodb/MongoNamespace.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.mongodb;
1818

1919
import com.mongodb.annotations.Immutable;
20-
import com.mongodb.annotations.Internal;
2120
import org.bson.codecs.pojo.annotations.BsonCreator;
2221
import org.bson.codecs.pojo.annotations.BsonIgnore;
2322
import org.bson.codecs.pojo.annotations.BsonProperty;
@@ -44,12 +43,14 @@ public final class MongoNamespace {
4443
private static final Set<Character> PROHIBITED_CHARACTERS_IN_DATABASE_NAME =
4544
new HashSet<>(asList('\0', '/', '\\', ' ', '"', '.'));
4645

47-
@Internal
46+
/**
47+
* The collection name in which to execute a command.
48+
* @deprecated there is no replacement for this constant, as it is only needed for the OP_QUERY wire protocol message, which has
49+
* been replaced by OP_MSG
50+
*/
51+
@Deprecated
4852
public static final String COMMAND_COLLECTION_NAME = "$cmd";
4953

50-
@Internal
51-
public static final MongoNamespace ADMIN_DB_COMMAND_NAMESPACE = new MongoNamespace("admin", COMMAND_COLLECTION_NAME);
52-
5354
private final String databaseName;
5455
private final String collectionName;
5556
@BsonIgnore
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright 2008-present MongoDB, Inc.
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 com.mongodb.internal;
17+
18+
import com.mongodb.MongoNamespace;
19+
20+
public final class MongoNamespaceHelper {
21+
22+
public static final String COMMAND_COLLECTION_NAME = "$cmd";
23+
public static final MongoNamespace ADMIN_DB_COMMAND_NAMESPACE = new MongoNamespace("admin", COMMAND_COLLECTION_NAME);
24+
25+
private MongoNamespaceHelper() {
26+
}
27+
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.mongodb.annotations.ThreadSafe;
2121
import com.mongodb.internal.VisibleForTesting;
2222
import com.mongodb.internal.client.DriverInformation;
23-
import com.mongodb.internal.client.DriverInformationHelper;
2423
import com.mongodb.lang.Nullable;
2524
import org.bson.BsonBinaryWriter;
2625
import org.bson.BsonDocument;
@@ -41,7 +40,7 @@
4140

4241
import static com.mongodb.assertions.Assertions.isTrueArgument;
4342
import static com.mongodb.internal.Locks.withLock;
44-
import static com.mongodb.internal.client.DriverInformationHelper.INITIAL_DRIVER_INFORMATION;
43+
import static com.mongodb.internal.connection.ConcreteMongoDriverInformation.INITIAL_DRIVER_INFORMATION;
4544
import static com.mongodb.internal.connection.FaasEnvironment.getFaasEnvironment;
4645
import static java.lang.System.getProperty;
4746
import static java.nio.file.Paths.get;
@@ -67,7 +66,7 @@ public ClientMetadata(@Nullable final String applicationName, final MongoDriverI
6766
this.driverInformationList = new ArrayList<>();
6867
withLock(readWriteLock.writeLock(), () -> {
6968
driverInformationList.add(INITIAL_DRIVER_INFORMATION);
70-
driverInformationList.addAll(mongoDriverInformation.getDriverInformationList());
69+
driverInformationList.addAll(((ConcreteMongoDriverInformation) mongoDriverInformation).getDriverInformationList());
7170
this.clientMetadataBsonDocument = createClientMetadataDocument(applicationName, driverInformationList);
7271
});
7372
}
@@ -82,7 +81,8 @@ public BsonDocument getBsonDocument() {
8281
public void append(final MongoDriverInformation mongoDriverInformationToAppend) {
8382
withLock(readWriteLock.writeLock(), () -> {
8483
boolean hasAddedNewData = false;
85-
for (DriverInformation driverInformation : mongoDriverInformationToAppend.getDriverInformationList()) {
84+
for (DriverInformation driverInformation
85+
: ((ConcreteMongoDriverInformation) mongoDriverInformationToAppend).getDriverInformationList()) {
8686
if (!driverInformationList.contains(driverInformation)) {
8787
hasAddedNewData = true;
8888
driverInformationList.add(driverInformation);
@@ -112,9 +112,10 @@ private static BsonDocument createClientMetadataDocument(@Nullable final String
112112
});
113113
tryWithLimit(clientMetadata, d -> putAtPath(d, "os.type", getOperatingSystemType(getOperatingSystemName())));
114114
// full driver information:
115+
ConcreteMongoDriverInformation mongoDriverInformation = new ConcreteMongoDriverInformation(driverInformationList);
115116
tryWithLimit(clientMetadata, d -> {
116-
putAtPath(d, "driver.name", listToString(DriverInformationHelper.getNames(driverInformationList)));
117-
putAtPath(d, "driver.version", listToString(DriverInformationHelper.getVersions(driverInformationList)));
117+
putAtPath(d, "driver.name", listToString(mongoDriverInformation.getDriverNames()));
118+
putAtPath(d, "driver.version", listToString(mongoDriverInformation.getDriverVersions()));
118119
});
119120

120121
// optional fields:
@@ -123,7 +124,7 @@ private static BsonDocument createClientMetadataDocument(@Nullable final String
123124
ClientMetadata.Orchestrator orchestrator = ClientMetadata.Orchestrator.determineExecutionOrchestrator();
124125

125126
tryWithLimit(clientMetadata, d -> putAtPath(d, "platform", INITIAL_DRIVER_INFORMATION.getDriverPlatform()));
126-
tryWithLimit(clientMetadata, d -> putAtPath(d, "platform", listToString(DriverInformationHelper.getPlatforms(driverInformationList))));
127+
tryWithLimit(clientMetadata, d -> putAtPath(d, "platform", listToString(mongoDriverInformation.getDriverPlatforms())));
127128
tryWithLimit(clientMetadata, d -> putAtPath(d, "os.name", getOperatingSystemName()));
128129
tryWithLimit(clientMetadata, d -> putAtPath(d, "os.architecture", getProperty("os.arch", "unknown")));
129130
tryWithLimit(clientMetadata, d -> putAtPath(d, "os.version", getProperty("os.version", "unknown")));

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.mongodb.ReadPreference;
2323
import com.mongodb.ServerApi;
2424
import com.mongodb.connection.ClusterConnectionMode;
25+
import com.mongodb.internal.MongoNamespaceHelper;
2526
import com.mongodb.internal.TimeoutContext;
2627
import com.mongodb.internal.connection.MessageSequences.EmptyMessageSequences;
2728
import com.mongodb.internal.session.SessionContext;
@@ -283,7 +284,7 @@ private int writeOpMsg(final ByteBufferBsonOutput bsonOutput, final OperationCon
283284

284285
private int writeOpQuery(final ByteBufferBsonOutput bsonOutput) {
285286
bsonOutput.writeInt32(0);
286-
bsonOutput.writeCString(new MongoNamespace(getDatabase(), "$cmd").getFullName());
287+
bsonOutput.writeCString(new MongoNamespace(getDatabase(), MongoNamespaceHelper.COMMAND_COLLECTION_NAME).getFullName());
287288
bsonOutput.writeInt32(0);
288289
bsonOutput.writeInt32(-1);
289290

driver-core/src/main/com/mongodb/internal/client/DriverInformationHelper.java renamed to driver-core/src/main/com/mongodb/internal/connection/ConcreteMongoDriverInformation.java

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,46 +13,58 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.mongodb.internal.client;
1716

17+
package com.mongodb.internal.connection;
18+
19+
import com.mongodb.MongoDriverInformation;
1820
import com.mongodb.internal.build.MongoDriverVersion;
21+
import com.mongodb.internal.client.DriverInformation;
1922

2023
import java.util.Collections;
2124
import java.util.List;
2225
import java.util.Objects;
2326
import java.util.function.Function;
2427
import java.util.stream.Collectors;
2528

29+
import static com.mongodb.assertions.Assertions.notNull;
2630
import static java.lang.String.format;
2731
import static java.lang.System.getProperty;
2832

29-
public final class DriverInformationHelper {
30-
33+
public final class ConcreteMongoDriverInformation extends MongoDriverInformation {
3134
public static final DriverInformation INITIAL_DRIVER_INFORMATION =
3235
new DriverInformation(MongoDriverVersion.NAME, MongoDriverVersion.VERSION,
3336
format("Java/%s/%s", getProperty("java.vendor", "unknown-vendor"),
34-
getProperty("java.runtime.version", "unknown-version")));
37+
getProperty("java.runtime.version", "unknown-version")));
38+
39+
private final List<DriverInformation> driverInformationList;
40+
41+
public ConcreteMongoDriverInformation(final List<DriverInformation> driverInformation) {
42+
this.driverInformationList = notNull("driverInformation", driverInformation);
43+
}
3544

36-
public static List<String> getNames(final List<DriverInformation> driverInformation) {
37-
return getDriverField(DriverInformation::getDriverName, driverInformation);
45+
@Override
46+
public List<String> getDriverNames() {
47+
return getDriverField(DriverInformation::getDriverName);
3848
}
3949

40-
public static List<String> getVersions(final List<DriverInformation> driverInformation) {
41-
return getDriverField(DriverInformation::getDriverVersion, driverInformation);
50+
@Override
51+
public List<String> getDriverVersions() {
52+
return getDriverField(DriverInformation::getDriverVersion);
4253
}
4354

44-
public static List<String> getPlatforms(final List<DriverInformation> driverInformation) {
45-
return getDriverField(DriverInformation::getDriverPlatform, driverInformation);
55+
@Override
56+
public List<String> getDriverPlatforms() {
57+
return getDriverField(DriverInformation::getDriverPlatform);
4658
}
4759

48-
private static List<String> getDriverField(final Function<DriverInformation, String> fieldSupplier,
49-
final List<DriverInformation> driverInformation) {
50-
return Collections.unmodifiableList(driverInformation.stream()
60+
public List<DriverInformation> getDriverInformationList() {
61+
return driverInformationList;
62+
}
63+
64+
private List<String> getDriverField(final Function<DriverInformation, String> fieldSupplier) {
65+
return Collections.unmodifiableList(driverInformationList.stream()
5166
.map(fieldSupplier)
5267
.filter(Objects::nonNull)
5368
.collect(Collectors.toList()));
5469
}
55-
56-
private DriverInformationHelper() {
57-
}
5870
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@
4949
import com.mongodb.internal.diagnostics.logging.Logger;
5050
import com.mongodb.internal.diagnostics.logging.Loggers;
5151
import com.mongodb.internal.logging.StructuredLogger;
52+
import com.mongodb.internal.observability.micrometer.Span;
5253
import com.mongodb.internal.session.SessionContext;
5354
import com.mongodb.internal.time.Timeout;
54-
import com.mongodb.internal.tracing.Span;
5555
import com.mongodb.lang.Nullable;
5656
import org.bson.BsonBinaryReader;
5757
import org.bson.BsonDocument;
@@ -94,9 +94,9 @@
9494
import static com.mongodb.internal.connection.ProtocolHelper.getSnapshotTimestamp;
9595
import static com.mongodb.internal.connection.ProtocolHelper.isCommandOk;
9696
import static com.mongodb.internal.logging.LogMessage.Level.DEBUG;
97+
import static com.mongodb.internal.observability.micrometer.MongodbObservation.HighCardinalityKeyNames.QUERY_TEXT;
98+
import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.RESPONSE_STATUS_CODE;
9799
import static com.mongodb.internal.thread.InterruptionUtil.translateInterruptedException;
98-
import static com.mongodb.internal.tracing.MongodbObservation.HighCardinalityKeyNames.QUERY_TEXT;
99-
import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.RESPONSE_STATUS_CODE;
100100
import static java.util.Arrays.asList;
101101

102102
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
import com.mongodb.internal.TimeoutContext;
2727
import com.mongodb.internal.TimeoutSettings;
2828
import com.mongodb.internal.VisibleForTesting;
29+
import com.mongodb.internal.observability.micrometer.Span;
30+
import com.mongodb.internal.observability.micrometer.TracingManager;
2931
import com.mongodb.internal.session.SessionContext;
30-
import com.mongodb.internal.tracing.Span;
31-
import com.mongodb.internal.tracing.TracingManager;
3232
import com.mongodb.lang.Nullable;
3333
import com.mongodb.selector.ServerSelector;
3434

driver-core/src/main/com/mongodb/internal/tracing/MicrometerTracer.java renamed to driver-core/src/main/com/mongodb/internal/observability/micrometer/MicrometerTracer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.mongodb.internal.tracing;
17+
package com.mongodb.internal.observability.micrometer;
1818

1919
import com.mongodb.MongoNamespace;
2020
import com.mongodb.lang.Nullable;
@@ -33,11 +33,11 @@
3333
import java.io.PrintWriter;
3434
import java.io.StringWriter;
3535

36-
import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_MESSAGE;
37-
import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_STACKTRACE;
38-
import static com.mongodb.internal.tracing.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_TYPE;
39-
import static com.mongodb.internal.tracing.MongodbObservation.MONGODB_OBSERVATION;
40-
import static com.mongodb.observability.MicrometerObservabilitySettings.ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH;
36+
import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_MESSAGE;
37+
import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_STACKTRACE;
38+
import static com.mongodb.internal.observability.micrometer.MongodbObservation.LowCardinalityKeyNames.EXCEPTION_TYPE;
39+
import static com.mongodb.internal.observability.micrometer.MongodbObservation.MONGODB_OBSERVATION;
40+
import static com.mongodb.internal.observability.micrometer.TracingManager.ENV_OBSERVABILITY_QUERY_TEXT_MAX_LENGTH;
4141
import static java.lang.System.getenv;
4242
import static java.util.Optional.ofNullable;
4343

driver-core/src/main/com/mongodb/internal/tracing/MongodbObservation.java renamed to driver-core/src/main/com/mongodb/internal/observability/micrometer/MongodbObservation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.mongodb.internal.tracing;
17+
package com.mongodb.internal.observability.micrometer;
1818

1919
import io.micrometer.common.docs.KeyName;
2020
import io.micrometer.observation.Observation;

0 commit comments

Comments
 (0)