You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by dr...@apache.org on 2020/03/25 21:07:14 UTC

[gora] 01/02: GORA-649 Use com.mongodb.client.MongoClient interface

This is an automated email from the ASF dual-hosted git repository.

drazzib pushed a commit to branch GORA-649-replace-deprecated-mongo-api
in repository https://gitbox.apache.org/repos/asf/gora.git

commit 92c6578259f6612ac7de2a2ae9fdaaa79cb35d26
Author: Damien Raude-Morvan <dr...@drazzib.com>
AuthorDate: Wed Mar 25 22:01:30 2020 +0100

    GORA-649 Use com.mongodb.client.MongoClient interface
    
    This interface, while similar to the existing com.mongodb.MongoClient class
    in that it is a factory for com.mongodb.client.MongoDatabase instances,
    does not support the legacy com.mongodb.DBCollection-based API :
    http://mongodb.github.io/mongo-java-driver/3.12/whats-new/#new-entry-point
---
 .../org/apache/gora/mongodb/store/MongoStore.java  | 32 ++++++++++------------
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java b/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java
index 26680a5..05ca503 100644
--- a/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java
+++ b/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java
@@ -19,10 +19,7 @@ package org.apache.gora.mongodb.store;
 
 import com.google.common.base.Splitter;
 import com.mongodb.*;
-import com.mongodb.client.FindIterable;
-import com.mongodb.client.MongoCollection;
-import com.mongodb.client.MongoDatabase;
-import com.mongodb.client.MongoIterable;
+import com.mongodb.client.*;
 import com.mongodb.client.model.CountOptions;
 import com.mongodb.client.model.CreateCollectionOptions;
 import com.mongodb.client.model.UpdateOptions;
@@ -93,7 +90,7 @@ DataStoreBase<K, T> {
   /**
    * MongoDB client
    */
-  private static ConcurrentHashMap<String, MongoClient> mapsOfClients = new ConcurrentHashMap<>();
+  private static ConcurrentHashMap<String, com.mongodb.client.MongoClient> mapsOfClients = new ConcurrentHashMap<>();
 
   private MongoDatabase mongoClientDB;
 
@@ -151,27 +148,25 @@ DataStoreBase<K, T> {
    *
    * @param params This value should specify the host:port (at least one) for
    *               connecting to remote MongoDB.
-   * @return a {@link Mongo} instance connected to the server
-   * @throws UnknownHostException
+   * @return a {@link com.mongodb.client.MongoClient} instance connected to the server
    */
-  private MongoClient getClient(MongoStoreParameters params)
-      throws UnknownHostException {
+  private com.mongodb.client.MongoClient getClient(MongoStoreParameters params) {
 
     // Utf8 serialization!
     CodecRegistry codecRegistry = CodecRegistries.fromRegistries(
-            MongoClient.getDefaultCodecRegistry(),
+            MongoClientSettings.getDefaultCodecRegistry(),
             CodecRegistries.fromCodecs(new Utf8Codec())
     );
     // Configure options
-    MongoClientOptions.Builder optBuilder = new MongoClientOptions.Builder();
-    optBuilder.codecRegistry(codecRegistry);
+    MongoClientSettings.Builder settings = MongoClientSettings.builder();
+    settings.codecRegistry(codecRegistry);
     if (params.getReadPreference() != null) {
-      optBuilder.readPreference(ReadPreference.valueOf(params.getReadPreference()));
+      settings.readPreference(ReadPreference.valueOf(params.getReadPreference()));
     }
     if (params.getWriteConcern() != null) {
-      optBuilder.writeConcern(WriteConcern.valueOf(params.getWriteConcern()));
+      settings.writeConcern(WriteConcern.valueOf(params.getWriteConcern()));
     }
-    MongoClientOptions options = optBuilder.build();
+
 
     // Build server address
     List<ServerAddress> seeds = new ArrayList<>();
@@ -191,14 +186,15 @@ DataStoreBase<K, T> {
         }
       }
     }
+    settings.applyToClusterSettings(builder -> builder.hosts(seeds));
 
     // If configuration contains a login + secret, try to authenticated with DB
     if (params.getLogin() != null && params.getSecret() != null) {
       MongoCredential credential = createCredential(params.getAuthenticationType(), params.getLogin(), params.getDbname(), params.getSecret());
-      return new MongoClient(seeds, credential, options);
-    } else {
-      return new MongoClient(seeds, options);
+      settings.credential(credential);
     }
+
+    return MongoClients.create(settings.build());
   }
 
   /**