Skip to content

Commit 74fb1e1

Browse files
affonsovdependabot[bot]Bruce Irschickbirschick-bqaffonsoBQ
authored
Add Mongo Driver Information (#433)
* Bump commons-text from 1.9 to 1.10.0 Bumps commons-text from 1.9 to 1.10.0. --- updated-dependencies: - dependency-name: org.apache.commons:commons-text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * Bump com.github.spotbugs from 5.0.10 to 5.0.13 Bumps com.github.spotbugs from 5.0.10 to 5.0.13. --- updated-dependencies: - dependency-name: com.github.spotbugs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> * Bump mockito-core from 4.8.0 to 4.8.1 Bumps [mockito-core](https://github.com/mockito/mockito) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v4.8.0...v4.8.1) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> * Commit Code Coverage Badge * Bump sslcontext-kickstart from 7.4.7 to 7.4.8 Bumps [sslcontext-kickstart](https://github.com/Hakky54/sslcontext-kickstart) from 7.4.7 to 7.4.8. - [Release notes](https://github.com/Hakky54/sslcontext-kickstart/releases) - [Changelog](https://github.com/Hakky54/sslcontext-kickstart/blob/master/CHANGELOG.md) - [Commits](Hakky54/sslcontext-kickstart@v7.4.7...v7.4.8) --- updated-dependencies: - dependency-name: io.github.hakky54:sslcontext-kickstart dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> * Bump checkstyle from 10.3.4 to 10.4 Bumps [checkstyle](https://github.com/checkstyle/checkstyle) from 10.3.4 to 10.4. - [Release notes](https://github.com/checkstyle/checkstyle/releases) - [Commits](checkstyle/checkstyle@checkstyle-10.3.4...checkstyle-10.4) --- updated-dependencies: - dependency-name: com.puppycrawl.tools:checkstyle dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * Revert "Bump checkstyle from 10.3.4 to 10.4" This reverts commit b4b048d. * Adding mongo driver information * fixing build.gradle * adding missing class * Revert "adding missing class" This reverts commit 5a53d21. * adding missing class * adding license * fixing check style * adding final test fixture * Commit Code Coverage Badge * Commit Code Coverage Badge * Commit Code Coverage Badge * [AD-1032] Driver / Application information for CloudWatch. Simplify application and version handling. * Commit Code Coverage Badge * [AD-1032] Refactored creating the MongoClient for cleaner use. * [AD-1032] Fixed style issues. * [AD-1032] Fixed style issues #2. * [AD-1032] Fixed style issues #3. * Commit Code Coverage Badge Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bruce Irschick <[email protected]> Co-authored-by: birschick-bq <[email protected]> Co-authored-by: affonsoBQ <[email protected]>
1 parent 68db459 commit 74fb1e1

File tree

15 files changed

+60
-54
lines changed

15 files changed

+60
-54
lines changed

.github/badges/jacoco.svg

Lines changed: 1 addition & 1 deletion
Loading

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ build/
2727
/src/main/resources/LICENSE
2828
/src/main/resources/NOTICE
2929
# Generated
30-
/common/src/main/resources/common.properties
30+
/src/main/resources/project.properties
3131

build.gradle

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,7 @@ task writeProperties(type: WriteProperties) {
278278
property("driver.major.version", MAJOR_VERSION)
279279
property("driver.minor.version", MINOR_VERSION)
280280
property("driver.full.version", project.version)
281-
}
282-
283-
/**
284-
* Write default application name to properties file under common.
285-
*/
286-
task writeCommonProperties(type: WriteProperties) {
287-
outputFile("$projectDir/common/src/main/resources/common.properties")
288-
property("default.application.name", "${APPLICATION_NAME} v${project.version}")
281+
property("default.application.name", APPLICATION_NAME)
289282
}
290283

291284
import io.franzbecker.gradle.lombok.task.DelombokTask
@@ -305,7 +298,6 @@ javadoc {
305298

306299
processResources {
307300
from(writeProperties)
308-
from(writeCommonProperties)
309301
duplicatesStrategy(DuplicatesStrategy.INCLUDE)
310302
}
311303

src/main/java/software/amazon/documentdb/jdbc/DocumentDbConnection.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@
2121
import com.jcraft.jsch.JSch;
2222
import com.jcraft.jsch.JSchException;
2323
import com.jcraft.jsch.Session;
24-
import com.mongodb.MongoClientSettings;
2524
import com.mongodb.MongoCommandException;
2625
import com.mongodb.MongoSecurityException;
2726
import com.mongodb.client.MongoClient;
28-
import com.mongodb.client.MongoClients;
2927
import com.mongodb.client.MongoDatabase;
3028
import lombok.AllArgsConstructor;
3129
import lombok.Getter;
@@ -302,9 +300,7 @@ DocumentDbConnectionProperties getConnectionProperties() {
302300
private void initializeClients(final DocumentDbConnectionProperties connectionProperties)
303301
throws SQLException {
304302
// Create the mongo client.
305-
final MongoClientSettings settings = connectionProperties
306-
.buildMongoClientSettings(getSshLocalPort());
307-
mongoClient = MongoClients.create(settings);
303+
mongoClient = connectionProperties.createMongoClient(getSshLocalPort());
308304
mongoDatabase = mongoClient.getDatabase(connectionProperties.getDatabase());
309305
pingDatabase();
310306
}

src/main/java/software/amazon/documentdb/jdbc/DocumentDbConnectionProperties.java

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
import com.google.common.base.Strings;
2121
import com.mongodb.MongoClientSettings;
2222
import com.mongodb.MongoCredential;
23+
import com.mongodb.MongoDriverInformation;
2324
import com.mongodb.ReadPreference;
2425
import com.mongodb.ServerAddress;
26+
import com.mongodb.client.MongoClient;
27+
import com.mongodb.client.MongoClients;
2528
import com.mongodb.connection.SslSettings;
2629
import com.mongodb.event.ServerMonitorListener;
2730
import lombok.SneakyThrows;
@@ -71,20 +74,10 @@ public class DocumentDbConnectionProperties extends Properties {
7174
public static final String DOCUMENTDB_CUSTOM_OPTIONS = "DOCUMENTDB_CUSTOM_OPTIONS";
7275
private static String classPathLocationName = null;
7376
private static String[] documentDbSearchPaths = null;
74-
private static final String DEFAULT_APPLICATION_NAME_KEY = "default.application.name";
75-
private static final String PROPERTIES_FILE_PATH = "/documentdb-jdbc.properties";
7677
static final String DEFAULT_APPLICATION_NAME;
7778

7879
static {
79-
String defaultAppName = "";
80-
try (InputStream is = DocumentDbConnectionProperties.class.getResourceAsStream(PROPERTIES_FILE_PATH)) {
81-
final Properties p = new Properties();
82-
p.load(is);
83-
defaultAppName = p.getProperty(DEFAULT_APPLICATION_NAME_KEY);
84-
} catch (Exception e) {
85-
LOGGER.error("Error loading default application name: " + e.getMessage());
86-
}
87-
DEFAULT_APPLICATION_NAME = defaultAppName;
80+
DEFAULT_APPLICATION_NAME = DocumentDbDriver.DEFAULT_APPLICATION_NAME;
8881
}
8982

9083
/**
@@ -178,6 +171,20 @@ private static String getClassPathLocation() {
178171
return classPathLocation;
179172
}
180173

174+
/**
175+
* Return MongoDriverInformation object. It will initialize the Object with application name
176+
* and driver version.
177+
*
178+
* @return MongoDriverInformation
179+
*/
180+
private MongoDriverInformation getMongoDriverInformation() {
181+
final MongoDriverInformation mongoDriverInformation = MongoDriverInformation.builder()
182+
.driverName(getApplicationName())
183+
.driverVersion(DocumentDbDriver.DRIVER_VERSION)
184+
.build();
185+
return mongoDriverInformation;
186+
}
187+
181188
/**
182189
* Gets the hostname.
183190
*
@@ -258,7 +265,7 @@ public void setDatabase(final String database) {
258265
public String getApplicationName() {
259266
return getProperty(
260267
DocumentDbConnectionProperty.APPLICATION_NAME.getName(),
261-
DocumentDbConnectionProperty.APPLICATION_NAME.getDefaultValue() );
268+
DocumentDbConnectionProperty.APPLICATION_NAME.getDefaultValue());
262269
}
263270

264271
/**
@@ -680,6 +687,29 @@ public DocumentDbAllowDiskUseOption getAllowDiskUseOption() {
680687
return getPropertyAsAllowDiskUseOption(DocumentDbConnectionProperty.ALLOW_DISK_USE.getName());
681688
}
682689

690+
/**
691+
* Creates a {@link MongoClient} instance from the connection properties.
692+
*
693+
* @return a new instance of a {@link MongoClient}.
694+
*/
695+
public MongoClient createMongoClient() {
696+
return MongoClients.create(
697+
buildMongoClientSettings(),
698+
getMongoDriverInformation());
699+
}
700+
701+
/**
702+
* Creates a {@link MongoClient} instance from the connection properties using
703+
* the SSH tunnel port on the local host.
704+
*
705+
* @return a new instance of a {@link MongoClient}.
706+
*/
707+
public MongoClient createMongoClient(final int sshLocalPort) {
708+
return MongoClients.create(
709+
buildMongoClientSettings(sshLocalPort),
710+
getMongoDriverInformation());
711+
}
712+
683713
/**
684714
* Builds the MongoClientSettings from properties.
685715
*

src/main/java/software/amazon/documentdb/jdbc/DocumentDbDriver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,34 @@ public class DocumentDbDriver extends software.amazon.documentdb.jdbc.common.Dri
3737
private static final String DRIVER_MAJOR_VERSION_KEY = "driver.major.version";
3838
private static final String DRIVER_MINOR_VERSION_KEY = "driver.minor.version";
3939
private static final String DRIVER_FULL_VERSION_KEY = "driver.full.version";
40+
private static final String DEFAULT_APPLICATION_NAME_KEY = "default.application.name";
4041
private static final String PROPERTIES_FILE_PATH = "/project.properties";
4142
static final int DRIVER_MAJOR_VERSION;
4243
static final int DRIVER_MINOR_VERSION;
4344
static final String DRIVER_VERSION;
45+
static final String DEFAULT_APPLICATION_NAME;
4446

4547
// Registers the JDBC driver.
4648
static {
4749
// Retrieve driver metadata from properties file.
4850
int majorVersion = 0;
4951
int minorVersion = 0;
5052
String fullVersion = "";
53+
String defaultApplicationName = "";
5154
try (InputStream is = DocumentDbDatabaseMetaData.class.getResourceAsStream(PROPERTIES_FILE_PATH)) {
5255
final Properties p = new Properties();
5356
p.load(is);
5457
majorVersion = Integer.parseInt(p.getProperty(DRIVER_MAJOR_VERSION_KEY));
5558
minorVersion = Integer.parseInt(p.getProperty(DRIVER_MINOR_VERSION_KEY));
5659
fullVersion = p.getProperty(DRIVER_FULL_VERSION_KEY);
60+
defaultApplicationName = p.getProperty(DEFAULT_APPLICATION_NAME_KEY);
5761
} catch (Exception e) {
5862
LOGGER.error("Error loading driver version: " + e.getMessage());
5963
}
6064
DRIVER_MAJOR_VERSION = majorVersion;
6165
DRIVER_MINOR_VERSION = minorVersion;
6266
DRIVER_VERSION = fullVersion;
67+
DEFAULT_APPLICATION_NAME = defaultApplicationName;
6368

6469
new DocumentDbDriver().register();
6570
}

src/main/java/software/amazon/documentdb/jdbc/DocumentDbMain.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import com.google.common.collect.ImmutableList;
3737
import com.mongodb.DuplicateKeyException;
3838
import com.mongodb.client.MongoClient;
39-
import com.mongodb.client.MongoClients;
4039
import lombok.Getter;
4140
import lombok.NonNull;
4241
import org.apache.commons.cli.CommandLine;
@@ -393,7 +392,7 @@ private static void performCommand(
393392

394393
private static MongoClient getMongoClient(final DocumentDbConnectionProperties properties) {
395394
if (client == null) {
396-
client = MongoClients.create(properties.buildMongoClientSettings());
395+
client = properties.createMongoClient();
397396
}
398397
return client;
399398
}

src/main/java/software/amazon/documentdb/jdbc/DocumentDbQueryExecutor.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@
1818

1919
import com.google.common.annotations.VisibleForTesting;
2020
import com.google.common.collect.ImmutableList;
21-
import com.mongodb.MongoClientSettings;
2221
import com.mongodb.MongoException;
2322
import com.mongodb.client.AggregateIterable;
2423
import com.mongodb.client.MongoClient;
25-
import com.mongodb.client.MongoClients;
2624
import com.mongodb.client.MongoCollection;
2725
import com.mongodb.client.MongoCursor;
2826
import com.mongodb.client.MongoDatabase;
@@ -221,8 +219,7 @@ private void resetQueryState() {
221219
}
222220

223221
private void performCancel() throws SQLException {
224-
final MongoClientSettings settings = connectionProperties.buildMongoClientSettings();
225-
try (MongoClient client = MongoClients.create(settings)) {
222+
try (MongoClient client = connectionProperties.createMongoClient()) {
226223
final MongoDatabase database = client.getDatabase("admin");
227224

228225
// Find the opId to kill using the queryId.

src/main/java/software/amazon/documentdb/jdbc/metadata/DocumentDbMetadataService.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616

1717
package software.amazon.documentdb.jdbc.metadata;
1818

19-
import com.mongodb.MongoClientSettings;
2019
import com.mongodb.client.MongoClient;
21-
import com.mongodb.client.MongoClients;
2220
import com.mongodb.client.MongoCollection;
2321
import com.mongodb.client.MongoDatabase;
2422
import com.mongodb.client.model.EstimatedDocumentCountOptions;
@@ -387,10 +385,9 @@ private static DocumentDbSchema getCollectionMetadataDirect(
387385
final Map<String, DocumentDbSchemaTable> tableMap,
388386
final MongoClient client) throws SQLException {
389387

390-
final MongoClientSettings settings = properties.buildMongoClientSettings();
391388
final MongoClient mongoClient = client != null
392389
? client
393-
: MongoClients.create(settings);
390+
: properties.createMongoClient();
394391
try {
395392
final MongoDatabase database = mongoClient.getDatabase(databaseName);
396393
for (String collectionName : getFilteredCollectionNames(database)) {

src/main/java/software/amazon/documentdb/jdbc/persist/DocumentDbSchemaReader.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import com.mongodb.MongoException;
2020
import com.mongodb.client.MongoClient;
21-
import com.mongodb.client.MongoClients;
2221
import com.mongodb.client.MongoCollection;
2322
import com.mongodb.client.MongoDatabase;
2423
import lombok.NonNull;
@@ -87,7 +86,7 @@ public DocumentDbSchemaReader(final @NonNull DocumentDbConnectionProperties prop
8786
this.properties = properties;
8887
this.client = client != null
8988
? client
90-
: MongoClients.create(properties.buildMongoClientSettings());
89+
: properties.createMongoClient();
9190
this.closeClient = client == null;
9291
}
9392

src/main/java/software/amazon/documentdb/jdbc/persist/DocumentDbSchemaWriter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.mongodb.MongoException;
2121
import com.mongodb.client.ClientSession;
2222
import com.mongodb.client.MongoClient;
23-
import com.mongodb.client.MongoClients;
2423
import com.mongodb.client.MongoCollection;
2524
import com.mongodb.client.MongoDatabase;
2625
import com.mongodb.client.model.UpdateOptions;
@@ -87,7 +86,7 @@ public DocumentDbSchemaWriter(final @NonNull DocumentDbConnectionProperties prop
8786
this.properties = properties;
8887
this.client = client != null
8988
? client
90-
: MongoClients.create(properties.buildMongoClientSettings());
89+
: properties.createMongoClient();
9190
this.closeClient = client == null;
9291
}
9392

src/main/resources/documentdb-jdbc.properties

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/main/resources/project.properties

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/test/java/software/amazon/documentdb/jdbc/DocumentDbQueryExecutorTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@
1818

1919
import com.google.common.collect.ImmutableList;
2020
import com.google.common.util.concurrent.ThreadFactoryBuilder;
21-
import com.mongodb.MongoClientSettings;
2221
import com.mongodb.client.FindIterable;
2322
import com.mongodb.client.MongoClient;
24-
import com.mongodb.client.MongoClients;
2523
import com.mongodb.client.MongoCollection;
2624
import com.mongodb.client.MongoCursor;
2725
import com.mongodb.client.MongoDatabase;
@@ -321,8 +319,7 @@ private static class MockQueryExecutor extends DocumentDbQueryExecutor {
321319

322320
@Override
323321
protected java.sql.ResultSet runQuery(final String sql) throws SQLException {
324-
final MongoClientSettings settings = VALID_CONNECTION_PROPERTIES.buildMongoClientSettings();
325-
try (MongoClient client = MongoClients.create(settings)) {
322+
try (MongoClient client = VALID_CONNECTION_PROPERTIES.createMongoClient()) {
326323
final MongoDatabase database =
327324
client.getDatabase(VALID_CONNECTION_PROPERTIES.getDatabase());
328325
final MongoCollection<Document> collection = database.getCollection(

src/testFixtures/java/software/amazon/documentdb/jdbc/common/test/DocumentDbAbstractTestEnvironment.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import com.mongodb.MongoException;
2020
import com.mongodb.client.MongoClient;
21-
import com.mongodb.client.MongoClients;
2221
import com.mongodb.client.MongoCollection;
2322
import com.mongodb.client.MongoDatabase;
2423
import com.mongodb.client.result.InsertOneResult;
@@ -214,9 +213,9 @@ public String newCollectionName(final boolean isTemporary) {
214213

215214
@Override
216215
public MongoClient createMongoClient() throws SQLException {
217-
return MongoClients.create(DocumentDbConnectionProperties
218-
.getPropertiesFromConnectionString(getJdbcConnectionString())
219-
.buildMongoClientSettings());
216+
final DocumentDbConnectionProperties properties = DocumentDbConnectionProperties
217+
.getPropertiesFromConnectionString(getJdbcConnectionString());
218+
return properties.createMongoClient();
220219
}
221220

222221
@Override

0 commit comments

Comments
 (0)