Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-2242

"MongoClientOptions.builder().sslEnabled(true)" modifies the SSL factory

    XMLWordPrintableJSON

Details

    • Icon: Improvement Improvement
    • Resolution: Duplicate
    • Icon: Major - P3 Major - P3
    • None
    • 3.2.2
    • None

    Description

      "MongoClientOptions.builder().sslEnabled(true)" modifies the SSL factory.

      https://github.com/mongodb/mongo-java-driver/blob/08f2160f30287e67d2258f31af0fbb203897c8ba/driver/src/main/com/mongodb/MongoClientOptions.java#L1041

      While this is stated in the JavaDoc comment, it's actually not the best idea.

      It breaks the builder pattern since it introduces a required order of operations on the builder. Moreover, it's simply counter intuitive as "ssl=true" is a well-known flag and nobody actually expects the method "sslEnabled()" to do other things than setting this configuration value.

      So, this will work:

      SSLContext sslContext=SSLContext.getInstance("TLS");
      sslContext.init(null,trustManagers,new SecureRandom());
       
      MongoClientOptions options=MongoClientOptions.builder().
                      sslEnabled(true).
                      sslInvalidHostNameAllowed(true).
                      socketFactory(sslContext.getSocketFactory()).
                      build();
      

      While this will not:

      SSLContext sslContext=SSLContext.getInstance("TLS");
      sslContext.init(null,trustManagers,new SecureRandom());
       
      MongoClientOptions options=MongoClientOptions.builder().
                      socketFactory(sslContext.getSocketFactory()).
                      sslEnabled(true).
                      sslInvalidHostNameAllowed(true).
                      build();
      

      The better solution would be to remove this hidden dependency and set the default factory in "build()" in case it's needed and not explicitly set by the developer.

      Attachments

        Activity

          People

            Unassigned Unassigned
            Imifos Tasha Carl [X]
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: