From 85a530c7c69ba86303956fd0934757cae3bd523d Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Fri, 19 Apr 2024 17:50:08 -0700 Subject: [PATCH 01/13] Introduce Alpha annotation. JAVA-5402 --- .../main/com/mongodb/annotations/Alpha.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 driver-core/src/main/com/mongodb/annotations/Alpha.java diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java new file mode 100644 index 00000000000..f0b5a0a5826 --- /dev/null +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -0,0 +1,52 @@ +package com.mongodb.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Signifies that a public API (public class, method or field) is in the early stages + * of development and may undergo significant changes or even be removed in future releases. + * An API bearing this annotation is exempt from any compatibility guarantees made by its + * containing library. + * + *

It is discouraged for applications to use Alpha APIs in production environments due to their + * possible instability and frequent changes, and potential performance implications. Similarly, it is inadvisable + * for libraries (which get included on users' CLASSPATHs, outside the library developers' control) + * to depend on Alpha APIs. + * + *

Alpha APIs should be used solely for experimental purposes and with the understanding that substantial + * adjustments may be necessary during upgrades. + * + *

To report issues on this API, please visit the MongoDB JIRA issue tracker at + * https://jira.mongodb.org/browse/JAVA.

+ **/ +@Retention(RetentionPolicy.CLASS) +@Target({ + ElementType.ANNOTATION_TYPE, + ElementType.CONSTRUCTOR, + ElementType.FIELD, + ElementType.METHOD, + ElementType.PACKAGE, + ElementType.TYPE }) +@Documented +@Alpha(Alpha.Reason.CLIENT) +public @interface Alpha { + /** + * @return The reason an API element is marked with {@link Alpha}. + */ + Alpha.Reason[] value(); + + /** + * @see Alpha#value() + */ + enum Reason { + /** + * Indicates that the driver API is either experimental or in development. + * Use in production environments is strongly discouraged due to potential changes and instability. + */ + CLIENT, + } +} From 7c02d9c4d3c74be435bc766cbd57adbb9900c504 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Fri, 19 Apr 2024 17:52:03 -0700 Subject: [PATCH 02/13] Remove redundant words. JAVA-5402 --- driver-core/src/main/com/mongodb/annotations/Alpha.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index f0b5a0a5826..134927601b6 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -45,7 +45,7 @@ enum Reason { /** * Indicates that the driver API is either experimental or in development. - * Use in production environments is strongly discouraged due to potential changes and instability. + * Use in production environments is discouraged due to potential changes and instability. */ CLIENT, } From b8114d74d9ed22f47cdc486ec7eb91d7afb221dc Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Sun, 21 Apr 2024 18:29:46 -0700 Subject: [PATCH 03/13] Mark CSOT API as Alpha. JAVA-5402 --- README.md | 11 ++ THIRD-PARTY-NOTICES | 7 +- docker/Dockerfile | 10 ++ docker/docker-compose.yml | 25 +++ docker/volume/cache/machine.json | 1 + docker/volume/cache/server.test.pem | 150 ++++++++++++++++++ docker/volume/cache/server.test.pem.crt | 122 ++++++++++++++ docker/volume/cache/server.test.pem.key | 28 ++++ .../service-catalog-3_1_0-1_34_23.pickle | Bin 0 -> 609117 bytes .../com/mongodb/ClientSessionOptions.java | 3 + .../main/com/mongodb/ConnectionString.java | 5 +- .../MongoOperationTimeoutException.java | 3 + .../main/com/mongodb/TransactionOptions.java | 3 + .../main/com/mongodb/annotations/Alpha.java | 40 +++-- .../kotlin/client/coroutine/MongoCluster.kt | 3 + .../client/coroutine/MongoCollection.kt | 3 + .../kotlin/client/coroutine/MongoDatabase.kt | 3 + .../com/mongodb/kotlin/client/MongoCluster.kt | 3 + .../mongodb/kotlin/client/MongoCollection.kt | 3 + .../mongodb/kotlin/client/MongoDatabase.kt | 3 + .../reactivestreams/client/MongoCluster.java | 2 + .../client/MongoCollection.java | 3 + .../reactivestreams/client/MongoDatabase.java | 2 + .../client/gridfs/GridFSBucket.java | 3 + .../org/mongodb/scala/MongoCluster.scala | 3 + .../org/mongodb/scala/MongoCollection.scala | 3 + .../org/mongodb/scala/MongoDatabase.scala | 3 + .../mongodb/scala/gridfs/GridFSBucket.scala | 5 +- .../main/com/mongodb/client/MongoCluster.java | 3 + .../com/mongodb/client/MongoCollection.java | 3 + .../com/mongodb/client/MongoDatabase.java | 2 + .../mongodb/client/gridfs/GridFSBucket.java | 3 + 32 files changed, 445 insertions(+), 16 deletions(-) create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.yml create mode 100644 docker/volume/cache/machine.json create mode 100644 docker/volume/cache/server.test.pem create mode 100644 docker/volume/cache/server.test.pem.crt create mode 100644 docker/volume/cache/server.test.pem.key create mode 100644 docker/volume/cache/service-catalog-3_1_0-1_34_23.pickle diff --git a/README.md b/README.md index 95e894d1585..8ed54cdbd91 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,17 @@ almost always be binary compatible with prior minor releases from the same major Patch 4.x.y increments (such as 4.0.0 -> 4.0.1, 4.1.1 -> 4.1.2, etc) will occur for bug fixes only and will always be binary compatible with prior patch releases of the same minor release branch. +#### @Alpha + +APIs marked with the `@Alpha` annotation at the class, method or field level are in the early stages of development, +subject to incompatible changes, or even removal, in a future release and may lack some intended features. These APIs +may be unstable, have potential performance implications as development progresses, and is exempt from any compatibility +guarantees made by its containing library. + +It is inadvisable for applications to use Alpha APIs in production environments and for libraries +(which get included on users' CLASSPATHs, outside the library developers' control) to depend on these APIs. Alpha APIs +are intended for experimental purposes only. + #### @Beta APIs marked with the `@Beta` annotation at the class or method level are subject to change. They can be modified in any way, or even diff --git a/THIRD-PARTY-NOTICES b/THIRD-PARTY-NOTICES index 971643143b8..b864bef56e0 100644 --- a/THIRD-PARTY-NOTICES +++ b/THIRD-PARTY-NOTICES @@ -37,7 +37,12 @@ https://github.com/mongodb/mongo-java-driver. See the License for the specific language governing permissions and limitations under the License. -3) The following files: Beta.java, UnsignedLongs.java, UnsignedLongsTest.java +3) The following files: + + Alpha.java (formerly Beta.java) + Beta.java + UnsignedLongs.java + UnsignedLongsTest.java Copyright 2010 The Guava Authors Copyright 2011 The Guava Authors diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000000..a5f380463d5 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.8-slim + +# Install curl +RUN apt-get update && \ + apt-get install -y curl && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Install awscli and awscli-local +RUN pip install awscli awscli-local \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 00000000000..db2798c5dff --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.8" + +services: + localstack: + container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}" + image: localstack/localstack:3.1 + ports: + - "127.0.0.1:4566:4566" # LocalStack Gateway + - "127.0.0.1:4510-4559:4510-4559" # external services port range + environment: + - DEFAULT_REGION=us-east-1 + - EDGE_PORT=4566 + - AWS_ACCESS_KEY_ID=test + - AWS_SECRET_ACCESS_KEY=test + # LocalStack configuration: https://docs.localstack.cloud/references/configuration/ + - DEBUG=${DEBUG:-0} + volumes: + - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack" + - "/var/run/docker.sock:/var/run/docker.sock" + + init-localstack: + volumes: + - "./init-localstack.sh:/init-localstack.sh" + entrypoint: [ "/bin/sh", "/init-localstack.sh" ] + build: . diff --git a/docker/volume/cache/machine.json b/docker/volume/cache/machine.json new file mode 100644 index 00000000000..d557de6864f --- /dev/null +++ b/docker/volume/cache/machine.json @@ -0,0 +1 @@ +{"machine_id": "dkr_d18c3a7ed870"} \ No newline at end of file diff --git a/docker/volume/cache/server.test.pem b/docker/volume/cache/server.test.pem new file mode 100644 index 00000000000..9360083da92 --- /dev/null +++ b/docker/volume/cache/server.test.pem @@ -0,0 +1,150 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5HJvk6gyU88Fh +RN9Cv4rI+SgGXL9xZEGZYAyeGT+qiMn1G4uX8O9eBxofUAUwQhwLDa2jMaMQO5ij +qng8n1KdZwD9iF7Yu3CZHlWpy+lSbZJDet+uZeHNfcLE8vvYc+5Et6jxfUltMwvr +D1gR3+1pkh1zMCo2tecJMydSFxP7xtHWKdAncM05sebf8VrR7pQSB9Wpu0XyVDhl +cuoFhOi5yGS4Y0LPvLGwi0zD7ryRgLcguBWU0hthty6UcC65wiHfsOJkSw+sCllT +lBGYbWrDJpykMCKcba4nRTVHOFsJIbHknfWCyvzWpzNvO0pjGyVJ2IwM2299X4di +fQQbnvsPAgMBAAECggEAAsd/wicFh/f0ufIDy5vklIiZlmjLAmKgughVzE+V9Y1j +4wRueBC/XO7O/qcZ+ZUNHTgcyBchmwVTO6+foxVgMMe9Q1hYlBDNuduNiQFivu3E +HfYIMkg5zRNuEUGSQC60rVysMnzAPdQ1P3jbmRSDmyb4X9GJ2U9d5spd9QJ6eQRO +LAhfnKbQDngGu8XYufjermcp8v0fvjEy6KVIE3SddNEd1w+biMjguG8obGqocfyG +FBP7JXnYX8Llp1EHSlBb7RmYkFTwHLchk4A0ukG9HWQ0Kezeu2MQb+rXgZa2Al/y +0zhYouA0PYqgzOiZuhNCCziTTEegExxwiXZEGabSPQKBgQD1bMq1KkFuf7EpuVnj +7LuzxqyLUYOfsJxsNJGfS4A4XS9W2yP8HMsL0eEybA5jV/PDnuiIPH8htFcV19Ey +XuK7Vo4IaWN1BM/80ypg5WzjxPS5RIwdTIyhewZnxyHbgAS8Qw4tRDEYQHOBxWQo +xSUUW0a6cLaZ2xOn+2TFue+ZHQKBgQDBFoU5x1IxWbbshksOqdnFsOzDM2xV8RJQ +gKJuxTpjZNixFTJh+igFh74K8LVYlIaW0U4r1Pm22CQT8L34jSDGZ1K0KypSn8E0 +2ECBTPUtDUxODo+SNmvXdEBNPctvAw0V4Hy8XlDQPUmqkRUwe5bcrqhnsmJTLPFT +I+XBSB4ZGwKBgQCiYxiA5HOkzGKJq/VZRRMxMXyLNiU0LSRiyCmuT8OIB8hB3P+j +Wd3TdUxfE3Y1r0VAI03SjszDnVKdxk3J2VSGBhA2apz/GW8Q5xu8PzFcR75xM3TO +Eg9e7UrgsbaqSLtZYbjopJ0jYcnLjLLn8wHExVw4EkoP5Q/Nbx5PYeax1QKBgCKx +6T54kkxL0pKtjs8Ttg3PvLtWgiDvMFtGweklh1hUxpsLNAJm8MoNmhhdKDjCd2yi +L2mw2y3/qHvsxjXjJgCAkFvPZcty6USVlwGk0mlF+nAMLcAYB0ivmt5GPEe2RKOp +ssAmMl84pAQCDcyoaHM+7wOzCffoG3TU/nO8gawBAoGBAKaQxeo94wJNx4u9/IQe +A7FwsjOUNAtEV0kZNbbmUE8rT5urHzJCtw5Zs55T9s3b/K/RNTMYSii5DdI/GmAx +UjkmVBKarYR1PystUdqXgMDr/wipR9izCTsC8Tl3xcGFaDQPi9HY1A3OexsIxd8z +tfVME/lhkZZqLczPc/Ve36XA +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIILDDCCCfSgAwIBAgISBGfisVzu9luFv6rbcu1q7GyNMA0GCSqGSIb3DQEBCwUA +MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD +EwJSMzAeFw0yNDAyMDEwNTM1MTVaFw0yNDA1MDEwNTM1MTRaMCUxIzAhBgNVBAMT +GmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuRyb5OoMlPPBYUTfQr+KyPkoBly/cWRBmWAMnhk/qojJ9RuL +l/DvXgcaH1AFMEIcCw2tozGjEDuYo6p4PJ9SnWcA/Yhe2LtwmR5VqcvpUm2SQ3rf +rmXhzX3CxPL72HPuRLeo8X1JbTML6w9YEd/taZIdczAqNrXnCTMnUhcT+8bR1inQ +J3DNObHm3/Fa0e6UEgfVqbtF8lQ4ZXLqBYTouchkuGNCz7yxsItMw+68kYC3ILgV +lNIbYbculHAuucIh37DiZEsPrApZU5QRmG1qwyacpDAinG2uJ0U1RzhbCSGx5J31 +gsr81qczbztKYxslSdiMDNtvfV+HYn0EG577DwIDAQABo4IIJzCCCCMwDgYDVR0P +AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB +Af8EAjAAMB0GA1UdDgQWBBTIzzprMrjc8cILMtZ3iPPRZ/LXCTAfBgNVHSMEGDAW +gBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUH +MAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3Iz +LmkubGVuY3Iub3JnLzCCBi4GA1UdEQSCBiUwggYhgicqLmFtcGxpZnlhcHAubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCJyouY2xvdWRmcm9udC5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIIxKi5ka3IuZWNyLmV1LWNlbnRyYWwtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLmV1LXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIgKi5lbGIubG9jYWxob3N0LmxvY2Fsc3RhY2su +Y2xvdWSCNCouZXUtY2VudHJhbC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSouZXUtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCKCouZXhlY3V0ZS1hcGkubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCNCoubGFtYmRhLXVybC5ldS1jZW50cmFsLTEubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC5ldS13ZXN0LTEubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTEubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTIubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0LTEu +bG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0 +LTIubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCHCoubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCJyoub3BlbnNlYXJjaC5sb2NhbGhvc3QubG9jYWxzdGFjay5j +bG91ZIInKi5zMy13ZWJzaXRlLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgh8q +LnMzLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgiAqLnNjbS5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIImKi5zbm93Zmxha2UubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCMSoudXMtZWFzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSoudXMtZWFzdC0yLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0yLm9wZW5zZWFyY2gubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCGmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vk +gitzcXMuZXUtY2VudHJhbC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgihz +cXMuZXUtd2VzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMt +ZWFzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtZWFzdC0y +LmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0xLmxvY2Fs +aG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0yLmxvY2FsaG9zdC5s +b2NhbHN0YWNrLmNsb3VkMBMGA1UdIAQMMAowCAYGZ4EMAQIBMIIBBAYKKwYBBAHW +eQIEAgSB9QSB8gDwAHYASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMA +AAGNY2D3eQAABAMARzBFAiBdE7XBMCsk5cbzH0Z26jFLtlFWbkbVBiX/UYETMSco +uwIhANoVDexnsNasLlqlwAUwwhoYzoTCuKY5Ht4WvH1YUtKBAHYAO1N3dT4tuYBO +izBbBv5AO2fYT8P0x70ADS1yb+H61BcAAAGNY2D3hAAABAMARzBFAiEAvAiEu96/ +gsVfNKhEFZnkc3LF+iS2mDwrwTtudF6LK4QCIC9GFfPiUqgfUPr79nSlm9aGDbhF +QB+BAOpnz87kd8tfMA0GCSqGSIb3DQEBCwUAA4IBAQASrsGTWc7/imeo8kqt3Sn6 +HFYSZv2Sjxha5gCcWxB4a8c63GZ/q37+2l72jAf+qRocV0xWioW2g+6U1fUxWN5A +oII8E9BqUy7CJAZE0+oGAWcN/d8OQmwt8kMfjpzDK+LCttzrQyENbvtDTGDgqGwm +c+bAfMYic66lO3romx4f4mtQAQmxDsu5uLCvvRUIk4/xEpqAKd/jiAeIqRgNxrhH +l+32EtDTQTjvZdaCsWJ2rJKH6rleq17kveE8ppRdikcObbU6UFUGXSUAoodMQD23 +nhnd+CwdZoFWU2pO3LKoUOlg2qcRCKZiyaZ56V3EwMk30AI+LOjdhx+qJUS3ewjt +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw +WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg +RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP +R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx +sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm +NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg +Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG +/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB +Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA +FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw +AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw +Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB +gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W +PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl +ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz +CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm +lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 +avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 +yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O +yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids +hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ +HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv +MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX +nLRbwHOoq7hHwg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC +ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL +wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D +LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK +4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5 +bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y +sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ +Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4 +FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc +SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql +PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND +TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1 +c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx ++tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB +ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu +b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E +U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu +MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC +5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW +9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG +WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O +he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC +Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5 +-----END CERTIFICATE----- diff --git a/docker/volume/cache/server.test.pem.crt b/docker/volume/cache/server.test.pem.crt new file mode 100644 index 00000000000..3d467aa3a90 --- /dev/null +++ b/docker/volume/cache/server.test.pem.crt @@ -0,0 +1,122 @@ +-----BEGIN CERTIFICATE----- +MIILDDCCCfSgAwIBAgISBGfisVzu9luFv6rbcu1q7GyNMA0GCSqGSIb3DQEBCwUA +MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD +EwJSMzAeFw0yNDAyMDEwNTM1MTVaFw0yNDA1MDEwNTM1MTRaMCUxIzAhBgNVBAMT +GmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuRyb5OoMlPPBYUTfQr+KyPkoBly/cWRBmWAMnhk/qojJ9RuL +l/DvXgcaH1AFMEIcCw2tozGjEDuYo6p4PJ9SnWcA/Yhe2LtwmR5VqcvpUm2SQ3rf +rmXhzX3CxPL72HPuRLeo8X1JbTML6w9YEd/taZIdczAqNrXnCTMnUhcT+8bR1inQ +J3DNObHm3/Fa0e6UEgfVqbtF8lQ4ZXLqBYTouchkuGNCz7yxsItMw+68kYC3ILgV +lNIbYbculHAuucIh37DiZEsPrApZU5QRmG1qwyacpDAinG2uJ0U1RzhbCSGx5J31 +gsr81qczbztKYxslSdiMDNtvfV+HYn0EG577DwIDAQABo4IIJzCCCCMwDgYDVR0P +AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB +Af8EAjAAMB0GA1UdDgQWBBTIzzprMrjc8cILMtZ3iPPRZ/LXCTAfBgNVHSMEGDAW +gBQULrMXt1hWy65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUH +MAGGFWh0dHA6Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3Iz +LmkubGVuY3Iub3JnLzCCBi4GA1UdEQSCBiUwggYhgicqLmFtcGxpZnlhcHAubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCJyouY2xvdWRmcm9udC5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIIxKi5ka3IuZWNyLmV1LWNlbnRyYWwtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLmV1LXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLWVhc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMS5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIuKi5ka3IuZWNyLnVzLXdlc3QtMi5sb2NhbGhv +c3QubG9jYWxzdGFjay5jbG91ZIIgKi5lbGIubG9jYWxob3N0LmxvY2Fsc3RhY2su +Y2xvdWSCNCouZXUtY2VudHJhbC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSouZXUtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCKCouZXhlY3V0ZS1hcGkubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCNCoubGFtYmRhLXVybC5ldS1jZW50cmFsLTEubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC5ldS13ZXN0LTEubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTEubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy1lYXN0LTIubG9j +YWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0LTEu +bG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCMSoubGFtYmRhLXVybC51cy13ZXN0 +LTIubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCHCoubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCJyoub3BlbnNlYXJjaC5sb2NhbGhvc3QubG9jYWxzdGFjay5j +bG91ZIInKi5zMy13ZWJzaXRlLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgh8q +LnMzLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgiAqLnNjbS5sb2NhbGhvc3Qu +bG9jYWxzdGFjay5jbG91ZIImKi5zbm93Zmxha2UubG9jYWxob3N0LmxvY2Fsc3Rh +Y2suY2xvdWSCMSoudXMtZWFzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0LmxvY2Fs +c3RhY2suY2xvdWSCMSoudXMtZWFzdC0yLm9wZW5zZWFyY2gubG9jYWxob3N0Lmxv +Y2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0xLm9wZW5zZWFyY2gubG9jYWxob3N0 +LmxvY2Fsc3RhY2suY2xvdWSCMSoudXMtd2VzdC0yLm9wZW5zZWFyY2gubG9jYWxo +b3N0LmxvY2Fsc3RhY2suY2xvdWSCGmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vk +gitzcXMuZXUtY2VudHJhbC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3Vkgihz +cXMuZXUtd2VzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMt +ZWFzdC0xLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtZWFzdC0y +LmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0xLmxvY2Fs +aG9zdC5sb2NhbHN0YWNrLmNsb3VkgihzcXMudXMtd2VzdC0yLmxvY2FsaG9zdC5s +b2NhbHN0YWNrLmNsb3VkMBMGA1UdIAQMMAowCAYGZ4EMAQIBMIIBBAYKKwYBBAHW +eQIEAgSB9QSB8gDwAHYASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMA +AAGNY2D3eQAABAMARzBFAiBdE7XBMCsk5cbzH0Z26jFLtlFWbkbVBiX/UYETMSco +uwIhANoVDexnsNasLlqlwAUwwhoYzoTCuKY5Ht4WvH1YUtKBAHYAO1N3dT4tuYBO +izBbBv5AO2fYT8P0x70ADS1yb+H61BcAAAGNY2D3hAAABAMARzBFAiEAvAiEu96/ +gsVfNKhEFZnkc3LF+iS2mDwrwTtudF6LK4QCIC9GFfPiUqgfUPr79nSlm9aGDbhF +QB+BAOpnz87kd8tfMA0GCSqGSIb3DQEBCwUAA4IBAQASrsGTWc7/imeo8kqt3Sn6 +HFYSZv2Sjxha5gCcWxB4a8c63GZ/q37+2l72jAf+qRocV0xWioW2g+6U1fUxWN5A +oII8E9BqUy7CJAZE0+oGAWcN/d8OQmwt8kMfjpzDK+LCttzrQyENbvtDTGDgqGwm +c+bAfMYic66lO3romx4f4mtQAQmxDsu5uLCvvRUIk4/xEpqAKd/jiAeIqRgNxrhH +l+32EtDTQTjvZdaCsWJ2rJKH6rleq17kveE8ppRdikcObbU6UFUGXSUAoodMQD23 +nhnd+CwdZoFWU2pO3LKoUOlg2qcRCKZiyaZ56V3EwMk30AI+LOjdhx+qJUS3ewjt +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw +WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg +RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP +R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx +sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm +NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg +Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG +/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB +Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA +FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw +AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw +Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB +gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W +PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl +ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz +CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm +lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 +avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 +yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O +yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids +hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ +HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv +MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX +nLRbwHOoq7hHwg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC +ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL +wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D +LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK +4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5 +bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y +sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ +Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4 +FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc +SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql +PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND +TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1 +c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx ++tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB +ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu +b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E +U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu +MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC +5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW +9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG +WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O +he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC +Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5 +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/volume/cache/server.test.pem.key b/docker/volume/cache/server.test.pem.key new file mode 100644 index 00000000000..6d7fadcb4c4 --- /dev/null +++ b/docker/volume/cache/server.test.pem.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5HJvk6gyU88Fh +RN9Cv4rI+SgGXL9xZEGZYAyeGT+qiMn1G4uX8O9eBxofUAUwQhwLDa2jMaMQO5ij +qng8n1KdZwD9iF7Yu3CZHlWpy+lSbZJDet+uZeHNfcLE8vvYc+5Et6jxfUltMwvr +D1gR3+1pkh1zMCo2tecJMydSFxP7xtHWKdAncM05sebf8VrR7pQSB9Wpu0XyVDhl +cuoFhOi5yGS4Y0LPvLGwi0zD7ryRgLcguBWU0hthty6UcC65wiHfsOJkSw+sCllT +lBGYbWrDJpykMCKcba4nRTVHOFsJIbHknfWCyvzWpzNvO0pjGyVJ2IwM2299X4di +fQQbnvsPAgMBAAECggEAAsd/wicFh/f0ufIDy5vklIiZlmjLAmKgughVzE+V9Y1j +4wRueBC/XO7O/qcZ+ZUNHTgcyBchmwVTO6+foxVgMMe9Q1hYlBDNuduNiQFivu3E +HfYIMkg5zRNuEUGSQC60rVysMnzAPdQ1P3jbmRSDmyb4X9GJ2U9d5spd9QJ6eQRO +LAhfnKbQDngGu8XYufjermcp8v0fvjEy6KVIE3SddNEd1w+biMjguG8obGqocfyG +FBP7JXnYX8Llp1EHSlBb7RmYkFTwHLchk4A0ukG9HWQ0Kezeu2MQb+rXgZa2Al/y +0zhYouA0PYqgzOiZuhNCCziTTEegExxwiXZEGabSPQKBgQD1bMq1KkFuf7EpuVnj +7LuzxqyLUYOfsJxsNJGfS4A4XS9W2yP8HMsL0eEybA5jV/PDnuiIPH8htFcV19Ey +XuK7Vo4IaWN1BM/80ypg5WzjxPS5RIwdTIyhewZnxyHbgAS8Qw4tRDEYQHOBxWQo +xSUUW0a6cLaZ2xOn+2TFue+ZHQKBgQDBFoU5x1IxWbbshksOqdnFsOzDM2xV8RJQ +gKJuxTpjZNixFTJh+igFh74K8LVYlIaW0U4r1Pm22CQT8L34jSDGZ1K0KypSn8E0 +2ECBTPUtDUxODo+SNmvXdEBNPctvAw0V4Hy8XlDQPUmqkRUwe5bcrqhnsmJTLPFT +I+XBSB4ZGwKBgQCiYxiA5HOkzGKJq/VZRRMxMXyLNiU0LSRiyCmuT8OIB8hB3P+j +Wd3TdUxfE3Y1r0VAI03SjszDnVKdxk3J2VSGBhA2apz/GW8Q5xu8PzFcR75xM3TO +Eg9e7UrgsbaqSLtZYbjopJ0jYcnLjLLn8wHExVw4EkoP5Q/Nbx5PYeax1QKBgCKx +6T54kkxL0pKtjs8Ttg3PvLtWgiDvMFtGweklh1hUxpsLNAJm8MoNmhhdKDjCd2yi +L2mw2y3/qHvsxjXjJgCAkFvPZcty6USVlwGk0mlF+nAMLcAYB0ivmt5GPEe2RKOp +ssAmMl84pAQCDcyoaHM+7wOzCffoG3TU/nO8gawBAoGBAKaQxeo94wJNx4u9/IQe +A7FwsjOUNAtEV0kZNbbmUE8rT5urHzJCtw5Zs55T9s3b/K/RNTMYSii5DdI/GmAx +UjkmVBKarYR1PystUdqXgMDr/wipR9izCTsC8Tl3xcGFaDQPi9HY1A3OexsIxd8z +tfVME/lhkZZqLczPc/Ve36XA +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/docker/volume/cache/service-catalog-3_1_0-1_34_23.pickle b/docker/volume/cache/service-catalog-3_1_0-1_34_23.pickle new file mode 100644 index 0000000000000000000000000000000000000000..587c8d4e0d9a3fc2ccc2993a3e3cbff8ed6006d3 GIT binary patch literal 609117 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

9D*@idv=v>XvxmO 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

E&X49M4^y81Zb} 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 K4W-6OqW=Pijx`tn literal 0 HcmV?d00001 diff --git a/driver-core/src/main/com/mongodb/ClientSessionOptions.java b/driver-core/src/main/com/mongodb/ClientSessionOptions.java index 4e9b0c3781e..73ac7f7060b 100644 --- a/driver-core/src/main/com/mongodb/ClientSessionOptions.java +++ b/driver-core/src/main/com/mongodb/ClientSessionOptions.java @@ -16,6 +16,7 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; import com.mongodb.lang.Nullable; @@ -94,6 +95,7 @@ public TransactionOptions getDefaultTransactionOptions() { * @return the default timeout * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable public Long getDefaultTimeout(final TimeUnit timeUnit) { return defaultTimeoutMS == null ? null : timeUnit.convert(defaultTimeoutMS, MILLISECONDS); @@ -223,6 +225,7 @@ public Builder defaultTransactionOptions(final TransactionOptions defaultTransac * @since CSOT * @see #getDefaultTimeout */ + @Alpha(Alpha.Reason.CLIENT) public Builder defaultTimeout(final long defaultTimeout, final TimeUnit timeUnit) { this.defaultTimeoutMS = convertAndValidateTimeout(defaultTimeout, timeUnit, "defaultTimeout"); return this; diff --git a/driver-core/src/main/com/mongodb/ConnectionString.java b/driver-core/src/main/com/mongodb/ConnectionString.java index 925479b489e..d749281a408 100644 --- a/driver-core/src/main/com/mongodb/ConnectionString.java +++ b/driver-core/src/main/com/mongodb/ConnectionString.java @@ -16,6 +16,7 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; import com.mongodb.connection.ClusterSettings; import com.mongodb.connection.ConnectionPoolSettings; import com.mongodb.connection.ServerMonitoringMode; @@ -137,7 +138,8 @@ *

  • {@code sslInvalidHostNameAllowed=true|false}: Whether to allow invalid host names for TLS connections.
  • *
  • {@code tlsAllowInvalidHostnames=true|false}: Whether to allow invalid host names for TLS connections. Supersedes the * sslInvalidHostNameAllowed option
  • - *
  • {@code timeoutMS=ms}: Time limit for the full execution of an operation.
  • + *
  • {@code timeoutMS=ms}: Time limit for the full execution of an operation. Note: This parameter is part of an Alpha API and may be + * subject to changes or even removal in future releases.
  • *
  • {@code connectTimeoutMS=ms}: How long a connection can take to be opened before timing out.
  • *
  • {@code socketTimeoutMS=ms}: How long a receive on a socket can take before timing out. * This option is the same as {@link SocketSettings#getReadTimeout(TimeUnit)}. @@ -1575,6 +1577,7 @@ public Integer getMaxConnecting() { * @return the time limit for the full execution of an operation in milliseconds or null. * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable public Long getTimeout() { return timeout; diff --git a/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java b/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java index 8ba8b3afe12..42125e7bc35 100644 --- a/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java +++ b/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java @@ -15,6 +15,8 @@ */ package com.mongodb; +import com.mongodb.annotations.Alpha; + import java.util.concurrent.TimeUnit; /** @@ -35,6 +37,7 @@ * @see MongoClientSettings#getTimeout(TimeUnit) * @since CSOT */ +@Alpha(Alpha.Reason.CLIENT) public final class MongoOperationTimeoutException extends MongoTimeoutException { private static final long serialVersionUID = 1L; diff --git a/driver-core/src/main/com/mongodb/TransactionOptions.java b/driver-core/src/main/com/mongodb/TransactionOptions.java index a3ef77a6164..20944c757e9 100644 --- a/driver-core/src/main/com/mongodb/TransactionOptions.java +++ b/driver-core/src/main/com/mongodb/TransactionOptions.java @@ -16,6 +16,7 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.lang.Nullable; @@ -112,6 +113,7 @@ public Long getMaxCommitTime(final TimeUnit timeUnit) { * @since CSOT */ @Nullable + @Alpha(Alpha.Reason.CLIENT) public Long getTimeout(final TimeUnit timeUnit) { notNull("timeUnit", timeUnit); if (timeoutMS == null) { @@ -308,6 +310,7 @@ public Builder maxCommitTime(@Nullable final Long maxCommitTime, final TimeUnit * @return this * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public Builder timeout(@Nullable final Long timeout, final TimeUnit timeUnit) { this.timeoutMS = convertAndValidateTimeoutNullable(timeout, timeUnit); return this; diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index 134927601b6..0f3db0c871c 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -1,3 +1,20 @@ +/* + * Copyright 2008-present MongoDB, Inc. + * Copyright 2010 The Guava Authors + * Copyright 2011 The Guava Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.mongodb.annotations; import java.lang.annotation.Documented; @@ -8,21 +25,18 @@ /** * Signifies that a public API (public class, method or field) is in the early stages - * of development and may undergo significant changes or even be removed in future releases. - * An API bearing this annotation is exempt from any compatibility guarantees made by its - * containing library. - * - *

    It is discouraged for applications to use Alpha APIs in production environments due to their - * possible instability and frequent changes, and potential performance implications. Similarly, it is inadvisable - * for libraries (which get included on users' CLASSPATHs, outside the library developers' control) - * to depend on Alpha APIs. + * of development, subject to incompatible changes, or even removal, in a future release + * and may lack some intended features. An API bearing this annotation may be unstable, + * have potential performance implications as development progresses, and is exempt from + * any compatibility guarantees made by its containing library. * - *

    Alpha APIs should be used solely for experimental purposes and with the understanding that substantial - * adjustments may be necessary during upgrades. + *

    It is inadvisable for applications to use Alpha APIs in production environments and + * for libraries (which get included on users' CLASSPATHs, outside the library developers' + * control) to depend on these APIs. Alpha APIs are intended for experimental purposes only.

    * - *

    To report issues on this API, please visit the MongoDB JIRA issue tracker at - * https://jira.mongodb.org/browse/JAVA.

    - **/ + *

    To report issues on this API as development continues towards a more stable release, please visit the + * MongoDB JIRA issue tracker at https://jira.mongodb.org/browse/JAVA.

    + */ @Retention(RetentionPolicy.CLASS) @Target({ ElementType.ANNOTATION_TYPE, diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt index 74a129643bb..78cd37e24ef 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt @@ -19,6 +19,7 @@ import com.mongodb.ClientSessionOptions import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern +import com.mongodb.annotations.Alpha import com.mongodb.reactivestreams.client.MongoCluster as JMongoCluster import java.util.concurrent.TimeUnit import kotlinx.coroutines.flow.Flow @@ -73,6 +74,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * * @return the optional timeout duration */ + @Alpha(Alpha.Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -129,6 +131,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * @see [MongoDatabase.timeout] * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCluster = MongoCluster(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt index aa3751762b4..eaa6c695903 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt @@ -19,6 +19,7 @@ import com.mongodb.MongoNamespace import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern +import com.mongodb.annotations.Alpha import com.mongodb.bulk.BulkWriteResult import com.mongodb.client.model.BulkWriteOptions import com.mongodb.client.model.CountOptions @@ -106,6 +107,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @return the optional timeout duration * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -182,6 +184,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @see [MongoCollection.timeout] * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCollection = MongoCollection(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt index 182375b1bba..b724d1fb960 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt @@ -18,6 +18,7 @@ package com.mongodb.kotlin.client.coroutine import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern +import com.mongodb.annotations.Alpha import com.mongodb.client.model.CreateCollectionOptions import com.mongodb.client.model.CreateViewOptions import com.mongodb.reactivestreams.client.MongoDatabase as JMongoDatabase @@ -74,6 +75,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @return the optional timeout duration * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -130,6 +132,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @see [MongoDatabase.timeout] * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoDatabase = MongoDatabase(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt index b4febfdba38..55a341ede31 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt @@ -19,6 +19,7 @@ import com.mongodb.ClientSessionOptions import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern +import com.mongodb.annotations.Alpha import com.mongodb.client.MongoCluster as JMongoCluster import java.util.concurrent.TimeUnit import org.bson.Document @@ -70,6 +71,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * * @return the optional timeout duration */ + @Alpha(Alpha.Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -126,6 +128,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * @see [MongoDatabase.timeout] * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCluster = MongoCluster(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt index 677f73aa707..89a44abec5d 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt @@ -19,6 +19,7 @@ import com.mongodb.MongoNamespace import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern +import com.mongodb.annotations.Alpha import com.mongodb.bulk.BulkWriteResult import com.mongodb.client.MongoCollection as JMongoCollection import com.mongodb.client.model.BulkWriteOptions @@ -103,6 +104,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @return the optional timeout duration * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -179,6 +181,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @see [MongoCollection.timeout] * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCollection = MongoCollection(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt index ee242354342..fd3237e1548 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt @@ -18,6 +18,7 @@ package com.mongodb.kotlin.client import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern +import com.mongodb.annotations.Alpha import com.mongodb.client.MongoDatabase as JMongoDatabase import com.mongodb.client.model.CreateCollectionOptions import com.mongodb.client.model.CreateViewOptions @@ -72,6 +73,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @return the optional timeout duration * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -128,6 +130,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @see [MongoDatabase.timeout] * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoDatabase = MongoDatabase(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java index 9c2cd0b9df7..429171bae17 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java @@ -21,6 +21,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.lang.Nullable; import org.bson.Document; @@ -165,6 +166,7 @@ public interface MongoCluster { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) MongoCluster withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java index 135cade2d68..b6d629cb589 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java @@ -20,6 +20,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.ThreadSafe; import com.mongodb.bulk.BulkWriteResult; import com.mongodb.client.model.BulkWriteOptions; @@ -136,6 +137,7 @@ public interface MongoCollection { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -202,6 +204,7 @@ public interface MongoCollection { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) MongoCollection withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java index e2d802c012e..1a69eb61cb6 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java @@ -19,6 +19,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.model.CreateCollectionOptions; import com.mongodb.client.model.CreateViewOptions; @@ -160,6 +161,7 @@ public interface MongoDatabase { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) MongoDatabase withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java index b452ad36a21..9ed2c0587cb 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java @@ -19,6 +19,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.gridfs.model.GridFSDownloadOptions; import com.mongodb.client.gridfs.model.GridFSUploadOptions; @@ -104,6 +105,7 @@ public interface GridFSBucket { * @return the timeout in the given time unit * @since 4.x */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -155,6 +157,7 @@ public interface GridFSBucket { * @since 4.x * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) GridFSBucket withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala b/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala index a76f91363a4..8144eeeedb5 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala @@ -16,6 +16,7 @@ package org.mongodb.scala +import com.mongodb.annotations.Alpha import com.mongodb.{ ReadConcern, ReadPreference, WriteConcern } import com.mongodb.reactivestreams.client.{ MongoCluster => JMongoCluster } import org.bson.codecs.configuration.CodecRegistry @@ -99,6 +100,7 @@ class MongoCluster(private val wrapped: JMongoCluster) { * * @return the optional timeout duration */ + @Alpha(Array(Alpha.Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -156,6 +158,7 @@ class MongoCluster(private val wrapped: JMongoCluster) { * @return a new MongoCluster instance with the set time limit for operations * @since CSOT */ + @Alpha(Array(Alpha.Reason.CLIENT)) def withTimeout(timeout: Duration): MongoCluster = MongoCluster(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala b/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala index 5a3f552014d..aaba1229fd9 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala @@ -16,6 +16,7 @@ package org.mongodb.scala +import com.mongodb.annotations.Alpha import com.mongodb.client.model.DropCollectionOptions import java.util @@ -103,6 +104,7 @@ case class MongoCollection[TResult](private val wrapped: JMongoCollection[TResul * @return the optional timeout duration * @since CSOT */ + @Alpha(Array(Alpha.Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -169,6 +171,7 @@ case class MongoCollection[TResult](private val wrapped: JMongoCollection[TResul * @return a new MongoCollection instance with the set time limit for operations * @since CSOT */ + @Alpha(Array(Alpha.Reason.CLIENT)) def withTimeout(timeout: Duration): MongoCollection[TResult] = MongoCollection(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala b/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala index 2200cbbcfcd..5e273350755 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala @@ -16,6 +16,7 @@ package org.mongodb.scala +import com.mongodb.annotations.Alpha import com.mongodb.client.model.{ CreateCollectionOptions, CreateViewOptions } import com.mongodb.reactivestreams.client.{ MongoDatabase => JMongoDatabase } import org.bson.codecs.configuration.CodecRegistry @@ -89,6 +90,7 @@ case class MongoDatabase(private[scala] val wrapped: JMongoDatabase) { * @return the optional timeout duration * @since CSOT */ + @Alpha(Array(Alpha.Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -146,6 +148,7 @@ case class MongoDatabase(private[scala] val wrapped: JMongoDatabase) { * @return a new MongoDatabase instance with the set time limit for operations * @since CSOT */ + @Alpha(Array(Alpha.Reason.CLIENT)) def withTimeout(timeout: Duration): MongoDatabase = MongoDatabase(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala b/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala index bd89781aa8a..24cff391f4d 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala @@ -16,6 +16,7 @@ package org.mongodb.scala.gridfs +import com.mongodb.annotations.Alpha import java.nio.ByteBuffer import com.mongodb.reactivestreams.client.gridfs.{ GridFSBucket => JGridFSBucket, GridFSBuckets } import org.mongodb.scala.bson.conversions.Bson @@ -120,8 +121,9 @@ case class GridFSBucket(private val wrapped: JGridFSBucket) { * - `> 0` The time limit to use for the full execution of an operation. * * @return the optional timeout duration - * @since 4.x + * @since CSOT */ + @Alpha(Array(Alpha.Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -170,6 +172,7 @@ case class GridFSBucket(private val wrapped: JGridFSBucket) { * @return a new GridFSBucket instance with the set time limit for operations * @since 4.x */ + @Alpha(Array(Alpha.Reason.CLIENT)) def withTimeout(timeout: Duration): GridFSBucket = GridFSBucket(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-sync/src/main/com/mongodb/client/MongoCluster.java b/driver-sync/src/main/com/mongodb/client/MongoCluster.java index 7d02a98f0f2..424d0020567 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoCluster.java +++ b/driver-sync/src/main/com/mongodb/client/MongoCluster.java @@ -21,6 +21,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.lang.Nullable; import org.bson.Document; @@ -105,6 +106,7 @@ public interface MongoCluster { * @since CSOT */ @Nullable + @Alpha(Alpha.Reason.CLIENT) Long getTimeout(TimeUnit timeUnit); /** @@ -164,6 +166,7 @@ public interface MongoCluster { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) MongoCluster withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/MongoCollection.java b/driver-sync/src/main/com/mongodb/client/MongoCollection.java index 7f69fad4dd1..bd4911eb3be 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoCollection.java +++ b/driver-sync/src/main/com/mongodb/client/MongoCollection.java @@ -20,6 +20,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.ThreadSafe; import com.mongodb.bulk.BulkWriteResult; import com.mongodb.client.model.BulkWriteOptions; @@ -140,6 +141,7 @@ public interface MongoCollection { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -207,6 +209,7 @@ public interface MongoCollection { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) MongoCollection withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/MongoDatabase.java b/driver-sync/src/main/com/mongodb/client/MongoDatabase.java index b7fee5c1634..f6417b5d172 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoDatabase.java +++ b/driver-sync/src/main/com/mongodb/client/MongoDatabase.java @@ -19,6 +19,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.model.CreateCollectionOptions; import com.mongodb.client.model.CreateViewOptions; @@ -163,6 +164,7 @@ public interface MongoDatabase { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) MongoDatabase withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java b/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java index d79ae468db7..8d875670b40 100644 --- a/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java +++ b/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java @@ -19,6 +19,7 @@ import com.mongodb.ReadConcern; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.ClientSession; import com.mongodb.client.MongoDatabase; @@ -106,6 +107,7 @@ public interface GridFSBucket { * @return the timeout in the given time unit * @since 4.x */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -158,6 +160,7 @@ public interface GridFSBucket { * @since 4.x * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) GridFSBucket withTimeout(long timeout, TimeUnit timeUnit); /** From bac7c704b23d79d600949443e4ba4bf126241fef Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Sun, 21 Apr 2024 18:36:39 -0700 Subject: [PATCH 04/13] Fix typo in README. JAVA-5402 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ed54cdbd91..59da2150cb5 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ with prior patch releases of the same minor release branch. APIs marked with the `@Alpha` annotation at the class, method or field level are in the early stages of development, subject to incompatible changes, or even removal, in a future release and may lack some intended features. These APIs -may be unstable, have potential performance implications as development progresses, and is exempt from any compatibility +may be unstable, have potential performance implications as development progresses, and are exempt from any compatibility guarantees made by its containing library. It is inadvisable for applications to use Alpha APIs in production environments and for libraries From 0ea0c32a3fc1989f0c52f868d1f91d2d296b6690 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Sun, 21 Apr 2024 19:08:04 -0700 Subject: [PATCH 05/13] Add Alpha annotation to timeout configuration option in MongoClientSettings. JAVA-5402 --- driver-core/src/main/com/mongodb/MongoClientSettings.java | 3 +++ driver-legacy/src/main/com/mongodb/MongoClientOptions.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/driver-core/src/main/com/mongodb/MongoClientSettings.java b/driver-core/src/main/com/mongodb/MongoClientSettings.java index 6dac0b05a21..442f82219ed 100644 --- a/driver-core/src/main/com/mongodb/MongoClientSettings.java +++ b/driver-core/src/main/com/mongodb/MongoClientSettings.java @@ -16,6 +16,7 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; import com.mongodb.client.gridfs.codecs.GridFSFileCodecProvider; @@ -704,6 +705,7 @@ public Builder inetAddressResolver(@Nullable final InetAddressResolver inetAddre * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) public Builder timeout(final long timeout, final TimeUnit timeUnit) { this.timeoutMS = convertAndValidateTimeout(timeout, timeUnit); return this; @@ -916,6 +918,7 @@ public ServerApi getServerApi() { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable public Long getTimeout(final TimeUnit timeUnit) { return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); diff --git a/driver-legacy/src/main/com/mongodb/MongoClientOptions.java b/driver-legacy/src/main/com/mongodb/MongoClientOptions.java index 602df1cecf3..8bfe5ae6268 100644 --- a/driver-legacy/src/main/com/mongodb/MongoClientOptions.java +++ b/driver-legacy/src/main/com/mongodb/MongoClientOptions.java @@ -16,6 +16,7 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; import com.mongodb.connection.ClusterConnectionMode; @@ -579,6 +580,7 @@ public ServerApi getServerApi() { * @return the timeout in milliseconds * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable public Long getTimeout() { return wrapped.getTimeout(MILLISECONDS); @@ -1377,6 +1379,7 @@ public Builder srvServiceName(final String srvServiceName) { * @since CSOT * @see #getTimeout */ + @Alpha(Alpha.Reason.CLIENT) public Builder timeout(final long timeoutMS) { wrapped.timeout(timeoutMS, MILLISECONDS); return this; From 6bf7434bad981d01ef397fe6eb0b5cdd93355524 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Sun, 21 Apr 2024 19:41:42 -0700 Subject: [PATCH 06/13] Change wording. JAVA-5402 --- driver-core/src/main/com/mongodb/annotations/Alpha.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index 0f3db0c871c..0328c51fef7 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -59,7 +59,7 @@ enum Reason { /** * Indicates that the driver API is either experimental or in development. - * Use in production environments is discouraged due to potential changes and instability. + * Use in production environments is inadvisable due to potential API changes and possible instability. */ CLIENT, } From 6cc01538bbadf2209d3abe62dd5f1f691e8a0ff9 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Sun, 21 Apr 2024 19:50:46 -0700 Subject: [PATCH 07/13] Change 'and' to 'or'. JAVA-5402 --- README.md | 2 +- driver-core/src/main/com/mongodb/annotations/Alpha.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 59da2150cb5..0bb3408e7a9 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ subject to incompatible changes, or even removal, in a future release and may la may be unstable, have potential performance implications as development progresses, and are exempt from any compatibility guarantees made by its containing library. -It is inadvisable for applications to use Alpha APIs in production environments and for libraries +It is inadvisable for applications to use Alpha APIs in production environments or for libraries (which get included on users' CLASSPATHs, outside the library developers' control) to depend on these APIs. Alpha APIs are intended for experimental purposes only. diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index 0328c51fef7..44335dda8ac 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -30,7 +30,7 @@ * have potential performance implications as development progresses, and is exempt from * any compatibility guarantees made by its containing library. * - *

    It is inadvisable for applications to use Alpha APIs in production environments and + *

    It is inadvisable for applications to use Alpha APIs in production environments or * for libraries (which get included on users' CLASSPATHs, outside the library developers' * control) to depend on these APIs. Alpha APIs are intended for experimental purposes only.

    * From cc8d54ec444c042cdfb3702eced7f735455a215c Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Mon, 22 Apr 2024 13:54:21 -0700 Subject: [PATCH 08/13] Mark getTimeout methods with Alpha. JAVA-5402 --- driver-core/src/main/com/mongodb/annotations/Alpha.java | 3 --- .../main/com/mongodb/reactivestreams/client/MongoCluster.java | 1 + .../main/com/mongodb/reactivestreams/client/MongoDatabase.java | 1 + driver-sync/src/main/com/mongodb/client/MongoCluster.java | 2 +- driver-sync/src/main/com/mongodb/client/MongoDatabase.java | 1 + 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index 44335dda8ac..07932d887b7 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -33,9 +33,6 @@ *

    It is inadvisable for applications to use Alpha APIs in production environments or * for libraries (which get included on users' CLASSPATHs, outside the library developers' * control) to depend on these APIs. Alpha APIs are intended for experimental purposes only.

    - * - *

    To report issues on this API as development continues towards a more stable release, please visit the - * MongoDB JIRA issue tracker at https://jira.mongodb.org/browse/JAVA.

    */ @Retention(RetentionPolicy.CLASS) @Target({ diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java index 429171bae17..d37a77833e6 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java @@ -106,6 +106,7 @@ public interface MongoCluster { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java index 1a69eb61cb6..912694a1e93 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java @@ -104,6 +104,7 @@ public interface MongoDatabase { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); diff --git a/driver-sync/src/main/com/mongodb/client/MongoCluster.java b/driver-sync/src/main/com/mongodb/client/MongoCluster.java index 424d0020567..9608af248ff 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoCluster.java +++ b/driver-sync/src/main/com/mongodb/client/MongoCluster.java @@ -105,8 +105,8 @@ public interface MongoCluster { * @return the timeout in the given time unit * @since CSOT */ - @Nullable @Alpha(Alpha.Reason.CLIENT) + @Nullable Long getTimeout(TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/MongoDatabase.java b/driver-sync/src/main/com/mongodb/client/MongoDatabase.java index f6417b5d172..643afc18301 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoDatabase.java +++ b/driver-sync/src/main/com/mongodb/client/MongoDatabase.java @@ -106,6 +106,7 @@ public interface MongoDatabase { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Alpha.Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); From ce399a00eba226a2e6b8f3f0811396ce0da75a81 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Fri, 26 Apr 2024 11:25:32 -0700 Subject: [PATCH 09/13] - Mark timeoutMode as Alpha. - Mode Reason to top-level class. - Change JavaDoc of Alpha annotation for better accuracy. JAVA-5402 --- .../src/main/com/mongodb/AwsCredential.java | 3 +- .../com/mongodb/ClientEncryptionSettings.java | 4 + .../com/mongodb/ClientSessionOptions.java | 5 +- .../main/com/mongodb/ConnectionString.java | 3 +- .../main/com/mongodb/MongoClientSettings.java | 5 +- .../src/main/com/mongodb/MongoCredential.java | 3 +- .../MongoExecutionTimeoutException.java | 3 + .../MongoOperationTimeoutException.java | 3 +- .../MongoSocketWriteTimeoutException.java | 4 + .../com/mongodb/MongoTimeoutException.java | 4 + .../MongoUpdatedEncryptedFieldsException.java | 3 +- .../main/com/mongodb/TransactionOptions.java | 5 +- .../main/com/mongodb/annotations/Alpha.java | 21 +--- .../main/com/mongodb/annotations/Beta.java | 17 +--- .../main/com/mongodb/annotations/Reason.java | 33 +++++++ .../mongodb/client/cursor/TimeoutMode.java | 4 + .../com/mongodb/client/model/Aggregates.java | 5 +- .../client/model/CreateCollectionOptions.java | 5 +- .../CreateEncryptedCollectionParams.java | 3 +- .../client/model/DropCollectionOptions.java | 5 +- .../com/mongodb/client/model/Projections.java | 3 +- .../mongodb/client/model/mql/Branches.java | 3 +- .../model/mql/BranchesIntermediary.java | 3 +- .../client/model/mql/BranchesTerminal.java | 3 +- .../model/mql/ExpressionCodecProvider.java | 3 +- .../mongodb/client/model/mql/MqlArray.java | 3 +- .../mongodb/client/model/mql/MqlBoolean.java | 3 +- .../com/mongodb/client/model/mql/MqlDate.java | 3 +- .../mongodb/client/model/mql/MqlDocument.java | 3 +- .../mongodb/client/model/mql/MqlEntry.java | 3 +- .../mongodb/client/model/mql/MqlInteger.java | 3 +- .../com/mongodb/client/model/mql/MqlMap.java | 3 +- .../mongodb/client/model/mql/MqlNumber.java | 3 +- .../mongodb/client/model/mql/MqlString.java | 3 +- .../mongodb/client/model/mql/MqlValue.java | 3 +- .../mongodb/client/model/mql/MqlValues.java | 3 +- .../client/model/mql/package-info.java | 3 +- .../search/AddSearchScoreExpression.java | 3 +- .../search/AutocompleteSearchOperator.java | 3 +- .../model/search/CompoundSearchOperator.java | 3 +- .../search/CompoundSearchOperatorBase.java | 3 +- .../model/search/ConstantSearchScore.java | 3 +- .../search/ConstantSearchScoreExpression.java | 3 +- .../model/search/DateNearSearchOperator.java | 3 +- .../model/search/DateRangeSearchOperator.java | 3 +- .../search/DateRangeSearchOperatorBase.java | 3 +- .../client/model/search/DateSearchFacet.java | 3 +- .../model/search/ExistsSearchOperator.java | 3 +- .../model/search/FacetSearchCollector.java | 3 +- .../client/model/search/FieldSearchPath.java | 3 +- .../search/FilterCompoundSearchOperator.java | 3 +- .../model/search/FunctionSearchScore.java | 3 +- .../model/search/FuzzySearchOptions.java | 3 +- .../search/GaussSearchScoreExpression.java | 3 +- .../model/search/GeoNearSearchOperator.java | 3 +- .../search/Log1pSearchScoreExpression.java | 3 +- .../search/LogSearchScoreExpression.java | 3 +- .../model/search/LowerBoundSearchCount.java | 3 +- .../search/MultiplySearchScoreExpression.java | 3 +- .../search/MustCompoundSearchOperator.java | 3 +- .../search/MustNotCompoundSearchOperator.java | 3 +- .../search/NumberNearSearchOperator.java | 3 +- .../search/NumberRangeSearchOperator.java | 3 +- .../search/NumberRangeSearchOperatorBase.java | 3 +- .../model/search/NumberSearchFacet.java | 3 +- .../model/search/PathBoostSearchScore.java | 3 +- .../search/PathSearchScoreExpression.java | 3 +- .../RelevanceSearchScoreExpression.java | 3 +- .../client/model/search/SearchCollector.java | 5 +- .../client/model/search/SearchCount.java | 3 +- .../client/model/search/SearchFacet.java | 3 +- .../client/model/search/SearchHighlight.java | 3 +- .../client/model/search/SearchOperator.java | 3 +- .../client/model/search/SearchOptions.java | 7 +- .../client/model/search/SearchPath.java | 3 +- .../client/model/search/SearchScore.java | 3 +- .../model/search/SearchScoreExpression.java | 3 +- .../search/ShouldCompoundSearchOperator.java | 3 +- .../model/search/StringSearchFacet.java | 3 +- .../model/search/TextSearchOperator.java | 3 +- .../client/model/search/TotalSearchCount.java | 3 +- .../model/search/ValueBoostSearchScore.java | 3 +- .../model/search/VectorSearchOptions.java | 3 +- .../model/search/WildcardSearchPath.java | 3 +- .../client/model/search/package-info.java | 3 +- .../client/model/vault/EncryptOptions.java | 5 +- .../client/model/vault/RangeOptions.java | 3 +- .../mongodb/connection/ServerDescription.java | 4 + .../internal/client/model/FindOptions.java | 4 + .../kotlin/client/coroutine/AggregateFlow.kt | 3 + .../kotlin/client/coroutine/DistinctFlow.kt | 3 + .../kotlin/client/coroutine/FindFlow.kt | 3 + .../client/coroutine/ListCollectionsFlow.kt | 3 + .../client/coroutine/ListDatabasesFlow.kt | 3 + .../client/coroutine/ListIndexesFlow.kt | 3 + .../client/coroutine/ListSearchIndexesFlow.kt | 3 + .../kotlin/client/coroutine/MapReduceFlow.kt | 3 + .../kotlin/client/coroutine/MongoCluster.kt | 5 +- .../client/coroutine/MongoCollection.kt | 5 +- .../kotlin/client/coroutine/MongoDatabase.kt | 5 +- .../kotlin/client/AggregateIterable.kt | 3 + .../mongodb/kotlin/client/DistinctIterable.kt | 3 + .../com/mongodb/kotlin/client/FindIterable.kt | 3 + .../kotlin/client/ListCollectionsIterable.kt | 3 + .../kotlin/client/ListDatabasesIterable.kt | 3 + .../kotlin/client/ListIndexesIterable.kt | 3 + .../client/ListSearchIndexesIterable.kt | 3 + .../com/mongodb/kotlin/client/MongoCluster.kt | 5 +- .../mongodb/kotlin/client/MongoCollection.kt | 5 +- .../mongodb/kotlin/client/MongoDatabase.kt | 5 +- .../main/com/mongodb/MongoClientOptions.java | 5 +- .../client/AggregatePublisher.java | 3 + .../client/DistinctPublisher.java | 3 + .../reactivestreams/client/MongoCluster.java | 5 +- .../client/MongoCollection.java | 5 +- .../reactivestreams/client/MongoDatabase.java | 5 +- .../client/gridfs/GridFSBucket.java | 5 +- .../client/internal/crypt/Crypt.java | 3 +- .../client/vault/ClientEncryption.java | 3 +- .../mongodb/scala/AggregateObservable.scala | 2 + .../mongodb/scala/DistinctObservable.scala | 3 + .../org/mongodb/scala/FindObservable.scala | 2 + .../scala/ListCollectionsObservable.scala | 3 + .../scala/ListDatabasesObservable.scala | 3 + .../mongodb/scala/ListIndexesObservable.scala | 3 + .../scala/ListSearchIndexesObservable.scala | 2 + .../mongodb/scala/MapReduceObservable.scala | 4 +- .../org/mongodb/scala/MongoCluster.scala | 6 +- .../org/mongodb/scala/MongoCollection.scala | 6 +- .../org/mongodb/scala/MongoDatabase.scala | 6 +- .../mongodb/scala/gridfs/GridFSBucket.scala | 8 +- .../org/mongodb/scala/model/Aggregates.scala | 6 +- .../org/mongodb/scala/model/Windows.scala | 6 +- .../org/mongodb/scala/model/package.scala | 6 +- .../model/search/FuzzySearchOptions.scala | 4 +- .../scala/model/search/SearchCollector.scala | 6 +- .../scala/model/search/SearchCount.scala | 4 +- .../scala/model/search/SearchFacet.scala | 4 +- .../scala/model/search/SearchHighlight.scala | 4 +- .../scala/model/search/SearchOperator.scala | 4 +- .../scala/model/search/SearchOptions.scala | 4 +- .../scala/model/search/SearchPath.scala | 4 +- .../scala/model/search/SearchScore.scala | 4 +- .../model/search/SearchScoreExpression.scala | 4 +- .../model/search/VectorSearchOptions.scala | 4 +- .../mongodb/scala/model/search/package.scala | 96 +++++++++---------- .../mongodb/scala/model/vault/package.scala | 4 +- .../scala/org/mongodb/scala/package.scala | 4 +- .../scala/vault/ClientEncryption.scala | 6 +- .../main/com/mongodb/client/MongoCluster.java | 5 +- .../com/mongodb/client/MongoCollection.java | 5 +- .../com/mongodb/client/MongoDatabase.java | 5 +- .../mongodb/client/gridfs/GridFSBucket.java | 5 +- .../com/mongodb/client/internal/Crypt.java | 3 +- .../client/vault/ClientEncryption.java | 3 +- 155 files changed, 459 insertions(+), 256 deletions(-) create mode 100644 driver-core/src/main/com/mongodb/annotations/Reason.java diff --git a/driver-core/src/main/com/mongodb/AwsCredential.java b/driver-core/src/main/com/mongodb/AwsCredential.java index dfd6c86776c..2fd6f8fb6f4 100644 --- a/driver-core/src/main/com/mongodb/AwsCredential.java +++ b/driver-core/src/main/com/mongodb/AwsCredential.java @@ -17,6 +17,7 @@ package com.mongodb; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import static com.mongodb.assertions.Assertions.notNull; @@ -28,7 +29,7 @@ * @see MongoCredential#AWS_CREDENTIAL_PROVIDER_KEY * @since 4.4 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public final class AwsCredential { private final String accessKeyId; private final String secretAccessKey; diff --git a/driver-core/src/main/com/mongodb/ClientEncryptionSettings.java b/driver-core/src/main/com/mongodb/ClientEncryptionSettings.java index 9c1b4c11382..8d0d8f071ec 100644 --- a/driver-core/src/main/com/mongodb/ClientEncryptionSettings.java +++ b/driver-core/src/main/com/mongodb/ClientEncryptionSettings.java @@ -16,7 +16,9 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.NotThreadSafe; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import javax.net.ssl.SSLContext; @@ -159,6 +161,7 @@ public Builder kmsProviderSslContextMap(final Map kmsProvide * @since CSOT * @see #getTimeout */ + @Alpha(Reason.CLIENT) public ClientEncryptionSettings.Builder timeout(final long timeout, final TimeUnit timeUnit) { this.timeoutMS = convertAndValidateTimeout(timeout, timeUnit); return this; @@ -324,6 +327,7 @@ public Map getKmsProviderSslContextMap() { * @return the timeout in the given time unit * @since CSOT */ + @Alpha(Reason.CLIENT) @Nullable public Long getTimeout(final TimeUnit timeUnit) { return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); diff --git a/driver-core/src/main/com/mongodb/ClientSessionOptions.java b/driver-core/src/main/com/mongodb/ClientSessionOptions.java index 73ac7f7060b..9b79eacea21 100644 --- a/driver-core/src/main/com/mongodb/ClientSessionOptions.java +++ b/driver-core/src/main/com/mongodb/ClientSessionOptions.java @@ -19,6 +19,7 @@ import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import com.mongodb.session.ClientSession; @@ -95,7 +96,7 @@ public TransactionOptions getDefaultTransactionOptions() { * @return the default timeout * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable public Long getDefaultTimeout(final TimeUnit timeUnit) { return defaultTimeoutMS == null ? null : timeUnit.convert(defaultTimeoutMS, MILLISECONDS); @@ -225,7 +226,7 @@ public Builder defaultTransactionOptions(final TransactionOptions defaultTransac * @since CSOT * @see #getDefaultTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public Builder defaultTimeout(final long defaultTimeout, final TimeUnit timeUnit) { this.defaultTimeoutMS = convertAndValidateTimeout(defaultTimeout, timeUnit, "defaultTimeout"); return this; diff --git a/driver-core/src/main/com/mongodb/ConnectionString.java b/driver-core/src/main/com/mongodb/ConnectionString.java index d749281a408..98c09871c02 100644 --- a/driver-core/src/main/com/mongodb/ConnectionString.java +++ b/driver-core/src/main/com/mongodb/ConnectionString.java @@ -17,6 +17,7 @@ package com.mongodb; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.connection.ClusterSettings; import com.mongodb.connection.ConnectionPoolSettings; import com.mongodb.connection.ServerMonitoringMode; @@ -1577,7 +1578,7 @@ public Integer getMaxConnecting() { * @return the time limit for the full execution of an operation in milliseconds or null. * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable public Long getTimeout() { return timeout; diff --git a/driver-core/src/main/com/mongodb/MongoClientSettings.java b/driver-core/src/main/com/mongodb/MongoClientSettings.java index 442f82219ed..0ef351113be 100644 --- a/driver-core/src/main/com/mongodb/MongoClientSettings.java +++ b/driver-core/src/main/com/mongodb/MongoClientSettings.java @@ -19,6 +19,7 @@ import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; +import com.mongodb.annotations.Reason; import com.mongodb.client.gridfs.codecs.GridFSFileCodecProvider; import com.mongodb.client.model.geojson.codecs.GeoJsonCodecProvider; import com.mongodb.client.model.mql.ExpressionCodecProvider; @@ -705,7 +706,7 @@ public Builder inetAddressResolver(@Nullable final InetAddressResolver inetAddre * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public Builder timeout(final long timeout, final TimeUnit timeUnit) { this.timeoutMS = convertAndValidateTimeout(timeout, timeUnit); return this; @@ -918,7 +919,7 @@ public ServerApi getServerApi() { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable public Long getTimeout(final TimeUnit timeUnit) { return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); diff --git a/driver-core/src/main/com/mongodb/MongoCredential.java b/driver-core/src/main/com/mongodb/MongoCredential.java index ffa2a3c4e02..f27d8924d9c 100644 --- a/driver-core/src/main/com/mongodb/MongoCredential.java +++ b/driver-core/src/main/com/mongodb/MongoCredential.java @@ -18,6 +18,7 @@ import com.mongodb.annotations.Beta; import com.mongodb.annotations.Immutable; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import java.util.Arrays; @@ -176,7 +177,7 @@ public final class MongoCredential { * @see AwsCredential * @since 4.4 */ - @Beta(Beta.Reason.CLIENT) + @Beta(Reason.CLIENT) public static final String AWS_CREDENTIAL_PROVIDER_KEY = "AWS_CREDENTIAL_PROVIDER"; /** diff --git a/driver-core/src/main/com/mongodb/MongoExecutionTimeoutException.java b/driver-core/src/main/com/mongodb/MongoExecutionTimeoutException.java index fb79c9625fc..f4df19402bb 100644 --- a/driver-core/src/main/com/mongodb/MongoExecutionTimeoutException.java +++ b/driver-core/src/main/com/mongodb/MongoExecutionTimeoutException.java @@ -16,6 +16,8 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import org.bson.BsonDocument; /** @@ -32,6 +34,7 @@ public class MongoExecutionTimeoutException extends MongoException { * @param message the error message * @since CSOT */ + @Alpha(Reason.CLIENT) public MongoExecutionTimeoutException(final String message) { super(message); diff --git a/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java b/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java index 42125e7bc35..a1469fb24b5 100644 --- a/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java +++ b/driver-core/src/main/com/mongodb/MongoOperationTimeoutException.java @@ -16,6 +16,7 @@ package com.mongodb; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import java.util.concurrent.TimeUnit; @@ -37,7 +38,7 @@ * @see MongoClientSettings#getTimeout(TimeUnit) * @since CSOT */ -@Alpha(Alpha.Reason.CLIENT) +@Alpha(Reason.CLIENT) public final class MongoOperationTimeoutException extends MongoTimeoutException { private static final long serialVersionUID = 1L; diff --git a/driver-core/src/main/com/mongodb/MongoSocketWriteTimeoutException.java b/driver-core/src/main/com/mongodb/MongoSocketWriteTimeoutException.java index 97382656fc0..e4e4e22a1b9 100644 --- a/driver-core/src/main/com/mongodb/MongoSocketWriteTimeoutException.java +++ b/driver-core/src/main/com/mongodb/MongoSocketWriteTimeoutException.java @@ -16,11 +16,15 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; + /** * This exception is thrown when there is a timeout writing a response from the socket. * * @since CSOT */ +@Alpha(Reason.CLIENT) public class MongoSocketWriteTimeoutException extends MongoSocketException { private static final long serialVersionUID = 1L; diff --git a/driver-core/src/main/com/mongodb/MongoTimeoutException.java b/driver-core/src/main/com/mongodb/MongoTimeoutException.java index a1f3c760667..6fb9c7ff69f 100644 --- a/driver-core/src/main/com/mongodb/MongoTimeoutException.java +++ b/driver-core/src/main/com/mongodb/MongoTimeoutException.java @@ -16,6 +16,9 @@ package com.mongodb; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; + /** * An exception indicating that the driver has timed out waiting for either a server or a connection to become available. */ @@ -38,6 +41,7 @@ public MongoTimeoutException(final String message) { * @param cause the cause * @since CSOT */ + @Alpha(Reason.CLIENT) public MongoTimeoutException(final String message, final Throwable cause) { super(message, cause); } diff --git a/driver-core/src/main/com/mongodb/MongoUpdatedEncryptedFieldsException.java b/driver-core/src/main/com/mongodb/MongoUpdatedEncryptedFieldsException.java index 1db6b4eba07..c91a3c87fc5 100644 --- a/driver-core/src/main/com/mongodb/MongoUpdatedEncryptedFieldsException.java +++ b/driver-core/src/main/com/mongodb/MongoUpdatedEncryptedFieldsException.java @@ -16,6 +16,7 @@ package com.mongodb; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import org.bson.BsonDocument; import static com.mongodb.assertions.Assertions.assertNotNull; @@ -26,7 +27,7 @@ * * @since 4.9 */ -@Beta(Beta.Reason.SERVER) +@Beta(Reason.SERVER) public final class MongoUpdatedEncryptedFieldsException extends MongoClientException { private static final long serialVersionUID = 1; diff --git a/driver-core/src/main/com/mongodb/TransactionOptions.java b/driver-core/src/main/com/mongodb/TransactionOptions.java index 20944c757e9..c59bb7918d8 100644 --- a/driver-core/src/main/com/mongodb/TransactionOptions.java +++ b/driver-core/src/main/com/mongodb/TransactionOptions.java @@ -18,6 +18,7 @@ import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import java.util.Objects; @@ -113,7 +114,7 @@ public Long getMaxCommitTime(final TimeUnit timeUnit) { * @since CSOT */ @Nullable - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public Long getTimeout(final TimeUnit timeUnit) { notNull("timeUnit", timeUnit); if (timeoutMS == null) { @@ -310,7 +311,7 @@ public Builder maxCommitTime(@Nullable final Long maxCommitTime, final TimeUnit * @return this * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public Builder timeout(@Nullable final Long timeout, final TimeUnit timeUnit) { this.timeoutMS = convertAndValidateTimeoutNullable(timeout, timeUnit); return this; diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index 07932d887b7..3543ff69711 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -26,9 +26,9 @@ /** * Signifies that a public API (public class, method or field) is in the early stages * of development, subject to incompatible changes, or even removal, in a future release - * and may lack some intended features. An API bearing this annotation may be unstable, - * have potential performance implications as development progresses, and is exempt from - * any compatibility guarantees made by its containing library. + * and may lack some intended features. An API bearing this annotation may contain known + * issues affecting functionality, performance, and stability. It is also exempt from any + * compatibility guarantees made by its containing library. * *

    It is inadvisable for applications to use Alpha APIs in production environments or * for libraries (which get included on users' CLASSPATHs, outside the library developers' @@ -43,21 +43,10 @@ ElementType.PACKAGE, ElementType.TYPE }) @Documented -@Alpha(Alpha.Reason.CLIENT) +@Beta(Reason.CLIENT) public @interface Alpha { /** * @return The reason an API element is marked with {@link Alpha}. */ - Alpha.Reason[] value(); - - /** - * @see Alpha#value() - */ - enum Reason { - /** - * Indicates that the driver API is either experimental or in development. - * Use in production environments is inadvisable due to potential API changes and possible instability. - */ - CLIENT, - } + Reason[] value(); } diff --git a/driver-core/src/main/com/mongodb/annotations/Beta.java b/driver-core/src/main/com/mongodb/annotations/Beta.java index a44dae43cd5..55753ddc051 100644 --- a/driver-core/src/main/com/mongodb/annotations/Beta.java +++ b/driver-core/src/main/com/mongodb/annotations/Beta.java @@ -47,25 +47,10 @@ ElementType.PACKAGE, ElementType.TYPE }) @Documented -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public @interface Beta { /** * @return The reason an API element is marked with {@link Beta}. */ Reason[] value(); - - /** - * @see Beta#value() - */ - enum Reason { - /** - * The driver API is in preview. - */ - CLIENT, - /** - * The driver API relies on the server API, which is in preview. - * We still may decide to change the driver API even if the server API stays unchanged. - */ - SERVER - } } diff --git a/driver-core/src/main/com/mongodb/annotations/Reason.java b/driver-core/src/main/com/mongodb/annotations/Reason.java new file mode 100644 index 00000000000..3fb2b6f06c1 --- /dev/null +++ b/driver-core/src/main/com/mongodb/annotations/Reason.java @@ -0,0 +1,33 @@ +/* + * Copyright 2008-present MongoDB, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.mongodb.annotations; + +/** + * Enumerates the reasons an API element which might be marked with annotations like {@link Alpha} or {@link Beta}. + */ +public enum Reason { + /** + * Indicates that the status of the driver API is the reason for the annotation. + */ + CLIENT, + + /** + * The driver API relies on the server API. + * This dependency is the reason for the annotation and suggests that changes in the server API could impact the driver API. + */ + SERVER +} diff --git a/driver-core/src/main/com/mongodb/client/cursor/TimeoutMode.java b/driver-core/src/main/com/mongodb/client/cursor/TimeoutMode.java index 063efc21e6e..55745d8bfe1 100644 --- a/driver-core/src/main/com/mongodb/client/cursor/TimeoutMode.java +++ b/driver-core/src/main/com/mongodb/client/cursor/TimeoutMode.java @@ -15,6 +15,9 @@ */ package com.mongodb.client.cursor; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; + import java.util.concurrent.TimeUnit; /** @@ -26,6 +29,7 @@ * @see com.mongodb.MongoClientSettings#getTimeout(TimeUnit) * @since CSOT */ +@Alpha(Reason.CLIENT) public enum TimeoutMode { /** diff --git a/driver-core/src/main/com/mongodb/client/model/Aggregates.java b/driver-core/src/main/com/mongodb/client/model/Aggregates.java index 08e2fb10b02..53e9e1eaf52 100644 --- a/driver-core/src/main/com/mongodb/client/model/Aggregates.java +++ b/driver-core/src/main/com/mongodb/client/model/Aggregates.java @@ -18,6 +18,7 @@ import com.mongodb.MongoNamespace; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.model.densify.DensifyOptions; import com.mongodb.client.model.densify.DensifyRange; import com.mongodb.client.model.fill.FillOptions; @@ -955,7 +956,7 @@ public static Bson searchMeta(final SearchCollector collector, final SearchOptio * @mongodb.server.release 6.0.10 * @since 4.11 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public static Bson vectorSearch( final FieldSearchPath path, final Iterable queryVector, @@ -984,7 +985,7 @@ public static Bson vectorSearch( * @mongodb.server.release 6.0.10 * @since 4.11 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public static Bson vectorSearch( final FieldSearchPath path, final Iterable queryVector, diff --git a/driver-core/src/main/com/mongodb/client/model/CreateCollectionOptions.java b/driver-core/src/main/com/mongodb/client/model/CreateCollectionOptions.java index 5aa79112871..31165688d4a 100644 --- a/driver-core/src/main/com/mongodb/client/model/CreateCollectionOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/CreateCollectionOptions.java @@ -18,6 +18,7 @@ import com.mongodb.AutoEncryptionSettings; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.conversions.Bson; @@ -353,7 +354,7 @@ public CreateCollectionOptions changeStreamPreAndPostImagesOptions( * @since 4.7 * @mongodb.server.release 7.0 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) @Nullable public Bson getEncryptedFields() { return encryptedFields; @@ -370,7 +371,7 @@ public Bson getEncryptedFields() { * @mongodb.driver.manual core/security-client-side-encryption/ In-use encryption * @mongodb.server.release 7.0 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public CreateCollectionOptions encryptedFields(@Nullable final Bson encryptedFields) { this.encryptedFields = encryptedFields; return this; diff --git a/driver-core/src/main/com/mongodb/client/model/CreateEncryptedCollectionParams.java b/driver-core/src/main/com/mongodb/client/model/CreateEncryptedCollectionParams.java index eba101ac000..537efdc1716 100644 --- a/driver-core/src/main/com/mongodb/client/model/CreateEncryptedCollectionParams.java +++ b/driver-core/src/main/com/mongodb/client/model/CreateEncryptedCollectionParams.java @@ -17,6 +17,7 @@ package com.mongodb.client.model; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.model.vault.DataKeyOptions; import com.mongodb.lang.Nullable; import org.bson.BsonDocument; @@ -28,7 +29,7 @@ * * @since 4.9 */ -@Beta(Beta.Reason.SERVER) +@Beta(Reason.SERVER) public final class CreateEncryptedCollectionParams { private final String kmsProvider; @Nullable diff --git a/driver-core/src/main/com/mongodb/client/model/DropCollectionOptions.java b/driver-core/src/main/com/mongodb/client/model/DropCollectionOptions.java index 5c904888c00..cf2dbca66c4 100644 --- a/driver-core/src/main/com/mongodb/client/model/DropCollectionOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/DropCollectionOptions.java @@ -18,6 +18,7 @@ import com.mongodb.AutoEncryptionSettings; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.conversions.Bson; @@ -39,7 +40,7 @@ public class DropCollectionOptions { * @since 4.7 * @mongodb.server.release 7.0 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) @Nullable public Bson getEncryptedFields() { return encryptedFields; @@ -56,7 +57,7 @@ public Bson getEncryptedFields() { * @mongodb.server.release 7.0 * @mongodb.driver.manual core/security-client-side-encryption/ In-use encryption */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public DropCollectionOptions encryptedFields(@Nullable final Bson encryptedFields) { this.encryptedFields = encryptedFields; return this; diff --git a/driver-core/src/main/com/mongodb/client/model/Projections.java b/driver-core/src/main/com/mongodb/client/model/Projections.java index e92a95abf81..98fd2810ed5 100644 --- a/driver-core/src/main/com/mongodb/client/model/Projections.java +++ b/driver-core/src/main/com/mongodb/client/model/Projections.java @@ -17,6 +17,7 @@ package com.mongodb.client.model; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.model.search.FieldSearchPath; import com.mongodb.client.model.search.SearchCollector; import com.mongodb.client.model.search.SearchCount; @@ -223,7 +224,7 @@ public static Bson metaSearchScore(final String fieldName) { * @mongodb.server.release 6.0.10 * @since 4.11 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public static Bson metaVectorSearchScore(final String fieldName) { return meta(fieldName, "vectorSearchScore"); } diff --git a/driver-core/src/main/com/mongodb/client/model/mql/Branches.java b/driver-core/src/main/com/mongodb/client/model/mql/Branches.java index 1a576cfe581..c6b414de213 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/Branches.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/Branches.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.assertions.Assertions; import java.util.ArrayList; @@ -36,7 +37,7 @@ * @param the type of the values that may be checked. * @since 4.9.0 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public final class Branches { Branches() { diff --git a/driver-core/src/main/com/mongodb/client/model/mql/BranchesIntermediary.java b/driver-core/src/main/com/mongodb/client/model/mql/BranchesIntermediary.java index 9b1b88e4467..b068c118ad3 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/BranchesIntermediary.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/BranchesIntermediary.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.assertions.Assertions; import java.util.ArrayList; @@ -32,7 +33,7 @@ * @param the type of the value produced. * @since 4.9.0 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public final class BranchesIntermediary extends BranchesTerminal { BranchesIntermediary(final List>> branches) { super(branches, null); diff --git a/driver-core/src/main/com/mongodb/client/model/mql/BranchesTerminal.java b/driver-core/src/main/com/mongodb/client/model/mql/BranchesTerminal.java index f72cb5cb1f4..299942ebdbf 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/BranchesTerminal.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/BranchesTerminal.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import java.util.List; @@ -30,7 +31,7 @@ * @param the type of the value produced. * @since 4.9.0 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public class BranchesTerminal { private final List>> branches; diff --git a/driver-core/src/main/com/mongodb/client/model/mql/ExpressionCodecProvider.java b/driver-core/src/main/com/mongodb/client/model/mql/ExpressionCodecProvider.java index d4176b7205f..893c57c5c86 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/ExpressionCodecProvider.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/ExpressionCodecProvider.java @@ -18,6 +18,7 @@ import com.mongodb.annotations.Beta; import com.mongodb.annotations.Immutable; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.codecs.Codec; import org.bson.codecs.configuration.CodecProvider; @@ -35,7 +36,7 @@ * * @since 4.9.0 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) @Immutable public final class ExpressionCodecProvider implements CodecProvider { @Override diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlArray.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlArray.java index 047e294c8e9..e979b4687e7 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlArray.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlArray.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.util.function.Function; @@ -33,7 +34,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlArray extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlBoolean.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlBoolean.java index 5e594a757c7..28290cf25f4 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlBoolean.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlBoolean.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.util.function.Function; @@ -28,7 +29,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlBoolean extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlDate.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlDate.java index 7c39057ee23..b6600aaf689 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlDate.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlDate.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.util.function.Function; @@ -30,7 +31,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlDate extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlDocument.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlDocument.java index b99d5b3354b..c60fde8f82a 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlDocument.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlDocument.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.assertions.Assertions; import org.bson.conversions.Bson; @@ -40,7 +41,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlDocument extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlEntry.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlEntry.java index bcb1f26e251..dffa35405f1 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlEntry.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlEntry.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -34,7 +35,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlEntry extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlInteger.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlInteger.java index 0fe85fd88d9..46380b57773 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlInteger.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlInteger.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.util.function.Function; @@ -30,7 +31,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlInteger extends MqlNumber { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlMap.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlMap.java index 24ee3ef405b..58a279c89c7 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlMap.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlMap.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.assertions.Assertions; @@ -35,7 +36,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlMap extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlNumber.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlNumber.java index ec3099047b8..7b6590b7624 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlNumber.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlNumber.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.assertions.Assertions; @@ -31,7 +32,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlNumber extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlString.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlString.java index dd24a8c94a2..e5b6e8fa8bc 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlString.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlString.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.util.function.Function; @@ -30,7 +31,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlString extends MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlValue.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlValue.java index 9366ce77fe9..8cb50885584 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlValue.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlValue.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.util.function.Function; @@ -89,7 +90,7 @@ * @since 4.9.0 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MqlValue { /** diff --git a/driver-core/src/main/com/mongodb/client/model/mql/MqlValues.java b/driver-core/src/main/com/mongodb/client/model/mql/MqlValues.java index 8d791dc6b3b..a2d58fbc02b 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/MqlValues.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/MqlValues.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.assertions.Assertions; import org.bson.BsonArray; import org.bson.BsonBoolean; @@ -46,7 +47,7 @@ * * @since 4.9.0 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public final class MqlValues { private MqlValues() {} diff --git a/driver-core/src/main/com/mongodb/client/model/mql/package-info.java b/driver-core/src/main/com/mongodb/client/model/mql/package-info.java index 08cbc6195a7..caef0925787 100644 --- a/driver-core/src/main/com/mongodb/client/model/mql/package-info.java +++ b/driver-core/src/main/com/mongodb/client/model/mql/package-info.java @@ -19,8 +19,9 @@ * @see com.mongodb.client.model.mql.MqlValues * @since 4.9.0 */ -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) @NonNullApi package com.mongodb.client.model.mql; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.NonNullApi; diff --git a/driver-core/src/main/com/mongodb/client/model/search/AddSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/AddSearchScoreExpression.java index 11411ca923d..d8a2fe5e908 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/AddSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/AddSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface AddSearchScoreExpression extends SearchScoreExpression { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/AutocompleteSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/AutocompleteSearchOperator.java index 2a700e6a770..447de8168cd 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/AutocompleteSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/AutocompleteSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -24,7 +25,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface AutocompleteSearchOperator extends SearchOperator { @Override AutocompleteSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperator.java index 3d1549fb2fa..b12a86ae78a 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface CompoundSearchOperator extends CompoundSearchOperatorBase, SearchOperator { @Override CompoundSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperatorBase.java b/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperatorBase.java index f3fe27dbe3d..2834199a4e0 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperatorBase.java +++ b/driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperatorBase.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -26,7 +27,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface CompoundSearchOperatorBase { /** * Creates a new {@link CompoundSearchOperator} by adding to it {@code clauses} that must all be satisfied. diff --git a/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScore.java b/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScore.java index 31c9cfb4c21..463df7634e3 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScore.java +++ b/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScore.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface ConstantSearchScore extends SearchScore { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScoreExpression.java index e7ae9be59f2..691ee643572 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface ConstantSearchScoreExpression extends SearchScoreExpression { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/DateNearSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/DateNearSearchOperator.java index 5edb7a02756..8421d058eeb 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/DateNearSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/DateNearSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.time.Duration; @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface DateNearSearchOperator extends SearchOperator { @Override DateNearSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperator.java index dfa98485837..f8c654cae1d 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -24,7 +25,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface DateRangeSearchOperator extends DateRangeSearchOperatorBase, SearchOperator { @Override DateRangeSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperatorBase.java b/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperatorBase.java index b7db8c190e9..df8fbaa93d8 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperatorBase.java +++ b/driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperatorBase.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import java.time.Instant; @@ -29,7 +30,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface DateRangeSearchOperatorBase { /** * Creates a new {@link DateRangeSearchOperator} that tests if values are within (l; ∞). diff --git a/driver-core/src/main/com/mongodb/client/model/search/DateSearchFacet.java b/driver-core/src/main/com/mongodb/client/model/search/DateSearchFacet.java index 936ac3040f8..39d8bb2ddf0 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/DateSearchFacet.java +++ b/driver-core/src/main/com/mongodb/client/model/search/DateSearchFacet.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface DateSearchFacet extends SearchFacet { /** * Creates a new {@link DateSearchFacet} with the default bucket specified. diff --git a/driver-core/src/main/com/mongodb/client/model/search/ExistsSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/ExistsSearchOperator.java index cb847a49b66..847070dc3bc 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/ExistsSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/ExistsSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface ExistsSearchOperator extends SearchOperator { @Override ExistsSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/FacetSearchCollector.java b/driver-core/src/main/com/mongodb/client/model/search/FacetSearchCollector.java index 72be0245b2c..01190216633 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/FacetSearchCollector.java +++ b/driver-core/src/main/com/mongodb/client/model/search/FacetSearchCollector.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface FacetSearchCollector extends SearchCollector { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/FieldSearchPath.java b/driver-core/src/main/com/mongodb/client/model/search/FieldSearchPath.java index cc4b89f6381..2be4cdecb90 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/FieldSearchPath.java +++ b/driver-core/src/main/com/mongodb/client/model/search/FieldSearchPath.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import org.bson.conversions.Bson; @@ -26,7 +27,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface FieldSearchPath extends SearchPath { /** * Creates a new {@link FieldSearchPath} with the name of the alternate analyzer specified. diff --git a/driver-core/src/main/com/mongodb/client/model/search/FilterCompoundSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/FilterCompoundSearchOperator.java index 92b414ebbc8..df23133d1a8 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/FilterCompoundSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/FilterCompoundSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface FilterCompoundSearchOperator extends CompoundSearchOperator { @Override FilterCompoundSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/FunctionSearchScore.java b/driver-core/src/main/com/mongodb/client/model/search/FunctionSearchScore.java index 047cf65b2e4..e2bf09bf1a5 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/FunctionSearchScore.java +++ b/driver-core/src/main/com/mongodb/client/model/search/FunctionSearchScore.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface FunctionSearchScore extends SearchScore { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/FuzzySearchOptions.java b/driver-core/src/main/com/mongodb/client/model/search/FuzzySearchOptions.java index 7afe5fc1c8a..2acbb244537 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/FuzzySearchOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/search/FuzzySearchOptions.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import org.bson.conversions.Bson; @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface FuzzySearchOptions extends Bson { /** * Creates a new {@link FuzzySearchOptions} with the maximum diff --git a/driver-core/src/main/com/mongodb/client/model/search/GaussSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/GaussSearchScoreExpression.java index 038d5973d78..b3ac5fadedb 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/GaussSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/GaussSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface GaussSearchScoreExpression extends SearchScoreExpression { /** * Creates a new {@link GaussSearchScoreExpression} which does not decay, i.e., its output stays 1, if the value of the diff --git a/driver-core/src/main/com/mongodb/client/model/search/GeoNearSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/GeoNearSearchOperator.java index 5c02fce3030..1501bbd819e 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/GeoNearSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/GeoNearSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.geojson.Point; @@ -25,7 +26,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface GeoNearSearchOperator extends SearchOperator { @Override GeoNearSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/Log1pSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/Log1pSearchScoreExpression.java index f1499a5de16..40ad061cbcb 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/Log1pSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/Log1pSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface Log1pSearchScoreExpression extends SearchScoreExpression { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/LogSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/LogSearchScoreExpression.java index 10ad3b9d40d..ae4e5fa8725 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/LogSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/LogSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface LogSearchScoreExpression extends SearchScoreExpression { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/LowerBoundSearchCount.java b/driver-core/src/main/com/mongodb/client/model/search/LowerBoundSearchCount.java index 888d66d50b0..15576d4a5b6 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/LowerBoundSearchCount.java +++ b/driver-core/src/main/com/mongodb/client/model/search/LowerBoundSearchCount.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface LowerBoundSearchCount extends SearchCount { /** * Creates a new {@link LowerBoundSearchCount} that instructs to count documents up to the {@code threshold} exactly, diff --git a/driver-core/src/main/com/mongodb/client/model/search/MultiplySearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/MultiplySearchScoreExpression.java index 31d330ba161..e6ab2332bfe 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/MultiplySearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/MultiplySearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MultiplySearchScoreExpression extends SearchScoreExpression { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/MustCompoundSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/MustCompoundSearchOperator.java index e9715a9b076..d9db7f7e34b 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/MustCompoundSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/MustCompoundSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MustCompoundSearchOperator extends CompoundSearchOperator { @Override MustCompoundSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/MustNotCompoundSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/MustNotCompoundSearchOperator.java index aad0bb633cc..5bdcc56009d 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/MustNotCompoundSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/MustNotCompoundSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface MustNotCompoundSearchOperator extends CompoundSearchOperator { @Override MustNotCompoundSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/NumberNearSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/NumberNearSearchOperator.java index 1baf5f2303f..65d6ec4969e 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/NumberNearSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/NumberNearSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -24,7 +25,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface NumberNearSearchOperator extends SearchOperator { @Override NumberNearSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperator.java index e0acad425c6..fe5d37bdc41 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -24,7 +25,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface NumberRangeSearchOperator extends NumberRangeSearchOperatorBase, SearchOperator { @Override NumberRangeSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperatorBase.java b/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperatorBase.java index 2492f1db11c..daa31d48656 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperatorBase.java +++ b/driver-core/src/main/com/mongodb/client/model/search/NumberRangeSearchOperatorBase.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface NumberRangeSearchOperatorBase { /** * Creates a new {@link NumberRangeSearchOperator} that tests if values are within (l; ∞). diff --git a/driver-core/src/main/com/mongodb/client/model/search/NumberSearchFacet.java b/driver-core/src/main/com/mongodb/client/model/search/NumberSearchFacet.java index 4fc6bc27d21..4587f688097 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/NumberSearchFacet.java +++ b/driver-core/src/main/com/mongodb/client/model/search/NumberSearchFacet.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface NumberSearchFacet extends SearchFacet { /** * Creates a new {@link NumberSearchFacet} with the default bucket specified. diff --git a/driver-core/src/main/com/mongodb/client/model/search/PathBoostSearchScore.java b/driver-core/src/main/com/mongodb/client/model/search/PathBoostSearchScore.java index 37c675e523b..40459fa1724 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/PathBoostSearchScore.java +++ b/driver-core/src/main/com/mongodb/client/model/search/PathBoostSearchScore.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface PathBoostSearchScore extends SearchScore { /** * Creates a new {@link PathBoostSearchScore} with the value to fall back to diff --git a/driver-core/src/main/com/mongodb/client/model/search/PathSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/PathSearchScoreExpression.java index a144addae89..b3c14025f4e 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/PathSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/PathSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface PathSearchScoreExpression extends SearchScoreExpression { /** * Creates a new {@link PathSearchScoreExpression} with the value to fall back to diff --git a/driver-core/src/main/com/mongodb/client/model/search/RelevanceSearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/RelevanceSearchScoreExpression.java index 89491f5c935..2a36a679ad5 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/RelevanceSearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/RelevanceSearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface RelevanceSearchScoreExpression extends SearchScoreExpression { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchCollector.java b/driver-core/src/main/com/mongodb/client/model/search/SearchCollector.java index a93c5690699..6f2c45b4961 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchCollector.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchCollector.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Aggregates; import com.mongodb.client.model.Projections; @@ -34,7 +35,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchCollector extends Bson { /** * Returns a {@link SearchCollector} that groups results by values or ranges in the specified faceted fields and returns the count @@ -45,7 +46,7 @@ public interface SearchCollector extends Bson { * @return The requested {@link SearchCollector}. * @mongodb.atlas.manual atlas-search/facet/ facet collector */ - @Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) + @Beta({Reason.CLIENT, Reason.SERVER}) static FacetSearchCollector facet(final SearchOperator operator, final Iterable facets) { notNull("operator", operator); notNull("facets", facets); diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchCount.java b/driver-core/src/main/com/mongodb/client/model/search/SearchCount.java index bb80a894f95..f9a5917582b 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchCount.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchCount.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Projections; import org.bson.BsonDocument; @@ -33,7 +34,7 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface SearchCount extends Bson { /** * Returns a {@link SearchCount} that instructs to count documents exactly. diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchFacet.java b/driver-core/src/main/com/mongodb/client/model/search/SearchFacet.java index fcc4e2866b8..4aac0fef089 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchFacet.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchFacet.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import org.bson.BsonDocument; import org.bson.BsonType; @@ -43,7 +44,7 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface SearchFacet extends Bson { /** * Returns a {@link SearchFacet} that allows narrowing down search results based on the most frequent diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchHighlight.java b/driver-core/src/main/com/mongodb/client/model/search/SearchHighlight.java index c337be57e5b..6610c57590f 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchHighlight.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchHighlight.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Projections; import org.bson.BsonDocument; @@ -37,7 +38,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchHighlight extends Bson { /** * Creates a new {@link SearchHighlight} with the maximum number of characters to examine on a document diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/SearchOperator.java index e9fd4796234..9234db91c51 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Aggregates; import com.mongodb.client.model.geojson.Point; @@ -40,7 +41,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchOperator extends Bson { /** * Creates a new {@link SearchOperator} with the scoring modifier specified. diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchOptions.java b/driver-core/src/main/com/mongodb/client/model/search/SearchOptions.java index 8550c672ee5..f5cd0261e8f 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchOptions.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Aggregates; import org.bson.conversions.Bson; @@ -29,7 +30,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchOptions extends Bson { /** * Creates a new {@link SearchOptions} with the index name specified. @@ -53,7 +54,7 @@ public interface SearchOptions extends Bson { * @param option The counting option. * @return A new {@link SearchOptions}. */ - @Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) + @Beta({Reason.CLIENT, Reason.SERVER}) SearchOptions count(SearchCount option); /** @@ -63,7 +64,7 @@ public interface SearchOptions extends Bson { * @return A new {@link SearchOptions}. * @mongodb.atlas.manual atlas-search/return-stored-source/ Return stored source fields */ - @Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) + @Beta({Reason.CLIENT, Reason.SERVER}) SearchOptions returnStoredSource(boolean returnStoredSource); /** diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchPath.java b/driver-core/src/main/com/mongodb/client/model/search/SearchPath.java index c620c2995f0..7213f3f894b 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchPath.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchPath.java @@ -17,6 +17,7 @@ import com.mongodb.annotations.Beta; import com.mongodb.annotations.Sealed; +import com.mongodb.annotations.Reason; import com.mongodb.internal.client.model.Util; import org.bson.BsonDocument; import org.bson.BsonString; @@ -37,7 +38,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchPath extends Bson { /** * Returns a {@link SearchPath} for the given {@code path}. diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchScore.java b/driver-core/src/main/com/mongodb/client/model/search/SearchScore.java index 7c241e8ec06..825264cf7f5 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchScore.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchScore.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Projections; import org.bson.BsonDocument; @@ -34,7 +35,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchScore extends Bson { /** * Returns a {@link SearchScore} that instructs to multiply the score by the specified {@code value}. diff --git a/driver-core/src/main/com/mongodb/client/model/search/SearchScoreExpression.java b/driver-core/src/main/com/mongodb/client/model/search/SearchScoreExpression.java index 442b361d813..268786c3344 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/SearchScoreExpression.java +++ b/driver-core/src/main/com/mongodb/client/model/search/SearchScoreExpression.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import org.bson.BsonDocument; import org.bson.BsonDouble; @@ -36,7 +37,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface SearchScoreExpression extends Bson { /** * Returns a {@link SearchScoreExpression} that evaluates into the relevance score of a document. diff --git a/driver-core/src/main/com/mongodb/client/model/search/ShouldCompoundSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/ShouldCompoundSearchOperator.java index 388a08bcb03..a6bda94e206 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/ShouldCompoundSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/ShouldCompoundSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -27,7 +28,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface ShouldCompoundSearchOperator extends CompoundSearchOperator { @Override ShouldCompoundSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/StringSearchFacet.java b/driver-core/src/main/com/mongodb/client/model/search/StringSearchFacet.java index 523d20bfe98..209eaf9ff47 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/StringSearchFacet.java +++ b/driver-core/src/main/com/mongodb/client/model/search/StringSearchFacet.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,7 +24,7 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface StringSearchFacet extends SearchFacet { /** * Creates a new {@link StringSearchFacet} that explicitly limits the number of facet categories. diff --git a/driver-core/src/main/com/mongodb/client/model/search/TextSearchOperator.java b/driver-core/src/main/com/mongodb/client/model/search/TextSearchOperator.java index 71d1206d2d7..241639f3a47 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/TextSearchOperator.java +++ b/driver-core/src/main/com/mongodb/client/model/search/TextSearchOperator.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -24,7 +25,7 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface TextSearchOperator extends SearchOperator { @Override TextSearchOperator score(SearchScore modifier); diff --git a/driver-core/src/main/com/mongodb/client/model/search/TotalSearchCount.java b/driver-core/src/main/com/mongodb/client/model/search/TotalSearchCount.java index 5df56e6bbbd..2bcbde468f3 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/TotalSearchCount.java +++ b/driver-core/src/main/com/mongodb/client/model/search/TotalSearchCount.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER}) +@Beta({Reason.CLIENT, Reason.SERVER}) public interface TotalSearchCount extends SearchCount { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/ValueBoostSearchScore.java b/driver-core/src/main/com/mongodb/client/model/search/ValueBoostSearchScore.java index 5b180b7c14f..d760bd60d52 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/ValueBoostSearchScore.java +++ b/driver-core/src/main/com/mongodb/client/model/search/ValueBoostSearchScore.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface ValueBoostSearchScore extends SearchScore { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/VectorSearchOptions.java b/driver-core/src/main/com/mongodb/client/model/search/VectorSearchOptions.java index e512ab0a31c..df3607d039b 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/VectorSearchOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/search/VectorSearchOptions.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; import com.mongodb.client.model.Aggregates; import com.mongodb.client.model.Filters; @@ -30,7 +31,7 @@ * @since 4.11 */ @Sealed -@Beta(Beta.Reason.SERVER) +@Beta(Reason.SERVER) public interface VectorSearchOptions extends Bson { /** * Creates a new {@link VectorSearchOptions} with the filter specified. diff --git a/driver-core/src/main/com/mongodb/client/model/search/WildcardSearchPath.java b/driver-core/src/main/com/mongodb/client/model/search/WildcardSearchPath.java index 9fb66644fbd..2fceaaaad7a 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/WildcardSearchPath.java +++ b/driver-core/src/main/com/mongodb/client/model/search/WildcardSearchPath.java @@ -16,6 +16,7 @@ package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.Sealed; /** @@ -23,6 +24,6 @@ * @since 4.7 */ @Sealed -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) public interface WildcardSearchPath extends SearchPath { } diff --git a/driver-core/src/main/com/mongodb/client/model/search/package-info.java b/driver-core/src/main/com/mongodb/client/model/search/package-info.java index d17cba4139e..c3664cb5560 100644 --- a/driver-core/src/main/com/mongodb/client/model/search/package-info.java +++ b/driver-core/src/main/com/mongodb/client/model/search/package-info.java @@ -31,8 +31,9 @@ * @since 4.7 */ @NonNullApi -@Beta(Beta.Reason.CLIENT) +@Beta(Reason.CLIENT) package com.mongodb.client.model.search; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.NonNullApi; diff --git a/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java b/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java index aef24b54765..509e467273b 100644 --- a/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/vault/EncryptOptions.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.vault; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.BsonBinary; @@ -181,7 +182,7 @@ public String getQueryType() { * @mongodb.server.release 6.2 * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public EncryptOptions rangeOptions(@Nullable final RangeOptions rangeOptions) { this.rangeOptions = rangeOptions; return this; @@ -195,7 +196,7 @@ public EncryptOptions rangeOptions(@Nullable final RangeOptions rangeOptions) { * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption */ @Nullable - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public RangeOptions getRangeOptions() { return rangeOptions; } diff --git a/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java b/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java index b763b0bf112..42a6618bcdb 100644 --- a/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java +++ b/driver-core/src/main/com/mongodb/client/model/vault/RangeOptions.java @@ -17,6 +17,7 @@ package com.mongodb.client.model.vault; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -33,7 +34,7 @@ * @mongodb.server.release 6.2 * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption */ -@Beta(Beta.Reason.SERVER) +@Beta(Reason.SERVER) public class RangeOptions { private BsonValue min; diff --git a/driver-core/src/main/com/mongodb/connection/ServerDescription.java b/driver-core/src/main/com/mongodb/connection/ServerDescription.java index 87ca6775e05..4d8f3d19ce3 100644 --- a/driver-core/src/main/com/mongodb/connection/ServerDescription.java +++ b/driver-core/src/main/com/mongodb/connection/ServerDescription.java @@ -18,8 +18,10 @@ import com.mongodb.ServerAddress; import com.mongodb.TagSet; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; +import com.mongodb.annotations.Reason; import com.mongodb.internal.connection.DecimalFormatHelper; import com.mongodb.internal.connection.Time; import com.mongodb.lang.Nullable; @@ -354,6 +356,7 @@ public Builder roundTripTime(final long roundTripTime, final TimeUnit timeUnit) * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public Builder minRoundTripTime(final long minRoundTripTime, final TimeUnit timeUnit) { this.minRoundTripTimeNanos = timeUnit.toNanos(minRoundTripTime); return this; @@ -880,6 +883,7 @@ public long getRoundTripTimeNanos() { * @return the recent min time taken to request the information, in nano seconds * @since CSOT */ + @Alpha(Reason.CLIENT) public long getMinRoundTripTimeNanos() { return minRoundTripTimeNanos; } diff --git a/driver-core/src/main/com/mongodb/internal/client/model/FindOptions.java b/driver-core/src/main/com/mongodb/internal/client/model/FindOptions.java index 47ab7b08688..3dea185a2a8 100644 --- a/driver-core/src/main/com/mongodb/internal/client/model/FindOptions.java +++ b/driver-core/src/main/com/mongodb/internal/client/model/FindOptions.java @@ -17,6 +17,8 @@ package com.mongodb.internal.client.model; import com.mongodb.CursorType; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -251,6 +253,7 @@ public FindOptions batchSize(final int batchSize) { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public FindOptions timeoutMode(final TimeoutMode timeoutMode) { this.timeoutMode = timeoutMode; return this; @@ -260,6 +263,7 @@ public FindOptions timeoutMode(final TimeoutMode timeoutMode) { * @see #timeoutMode(TimeoutMode) * @return timeout mode */ + @Alpha(Reason.CLIENT) @Nullable public TimeoutMode getTimeoutMode() { return timeoutMode; diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/AggregateFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/AggregateFlow.kt index 6289e26a164..eade434d75e 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/AggregateFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/AggregateFlow.kt @@ -16,6 +16,8 @@ package com.mongodb.kotlin.client.coroutine import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation import com.mongodb.reactivestreams.client.AggregatePublisher @@ -56,6 +58,7 @@ public class AggregateFlow(private val wrapped: AggregatePublisher) * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): AggregateFlow = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/DistinctFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/DistinctFlow.kt index e97f166bc7a..10b0764874b 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/DistinctFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/DistinctFlow.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client.coroutine +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation import com.mongodb.reactivestreams.client.DistinctPublisher @@ -52,6 +54,7 @@ public class DistinctFlow(private val wrapped: DistinctPublisher) : * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): DistinctFlow = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/FindFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/FindFlow.kt index 888569bbb5d..e6bc57bbaf7 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/FindFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/FindFlow.kt @@ -17,6 +17,8 @@ package com.mongodb.kotlin.client.coroutine import com.mongodb.CursorType import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation import com.mongodb.reactivestreams.client.FindPublisher @@ -61,6 +63,7 @@ public class FindFlow(private val wrapped: FindPublisher) : Flow * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): FindFlow = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListCollectionsFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListCollectionsFlow.kt index 650c298e8f1..9dffad9a67a 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListCollectionsFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListCollectionsFlow.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client.coroutine +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.reactivestreams.client.ListCollectionsPublisher import java.util.concurrent.TimeUnit @@ -52,6 +54,7 @@ public class ListCollectionsFlow(private val wrapped: ListCollectionsPu * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListCollectionsFlow = apply { wrapped.timeoutMode(timeoutMode) } diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListDatabasesFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListDatabasesFlow.kt index a9d1fd87a67..7e4ec4b8cac 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListDatabasesFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListDatabasesFlow.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client.coroutine +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.reactivestreams.client.ListDatabasesPublisher import java.util.concurrent.TimeUnit @@ -51,6 +53,7 @@ public class ListDatabasesFlow(private val wrapped: ListDatabasesPublis * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListDatabasesFlow = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListIndexesFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListIndexesFlow.kt index 6ac8678ecbf..4741e48b755 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListIndexesFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListIndexesFlow.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client.coroutine +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.reactivestreams.client.ListIndexesPublisher import java.util.concurrent.TimeUnit @@ -50,6 +52,7 @@ public class ListIndexesFlow(private val wrapped: ListIndexesPublisher< * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListIndexesFlow = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListSearchIndexesFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListSearchIndexesFlow.kt index a6d81e53742..13df86bf05d 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListSearchIndexesFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/ListSearchIndexesFlow.kt @@ -16,6 +16,8 @@ package com.mongodb.kotlin.client.coroutine import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation import com.mongodb.reactivestreams.client.ListSearchIndexesPublisher @@ -56,6 +58,7 @@ public class ListSearchIndexesFlow(private val wrapped: ListSearchIndex * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListSearchIndexesFlow = apply { wrapped.timeoutMode(timeoutMode) } diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MapReduceFlow.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MapReduceFlow.kt index e78b1f1e414..b3e359cdbd2 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MapReduceFlow.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MapReduceFlow.kt @@ -17,6 +17,8 @@ package com.mongodb.kotlin.client.coroutine +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation import com.mongodb.client.model.MapReduceAction @@ -58,6 +60,7 @@ public class MapReduceFlow(private val wrapped: MapReducePublisher) * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): MapReduceFlow = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt index 78cd37e24ef..271edcfbdc7 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCluster.kt @@ -20,6 +20,7 @@ import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.reactivestreams.client.MongoCluster as JMongoCluster import java.util.concurrent.TimeUnit import kotlinx.coroutines.flow.Flow @@ -74,7 +75,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * * @return the optional timeout duration */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -131,7 +132,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * @see [MongoDatabase.timeout] * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCluster = MongoCluster(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt index eaa6c695903..548da796976 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoCollection.kt @@ -20,6 +20,7 @@ import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.bulk.BulkWriteResult import com.mongodb.client.model.BulkWriteOptions import com.mongodb.client.model.CountOptions @@ -107,7 +108,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @return the optional timeout duration * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -184,7 +185,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @see [MongoCollection.timeout] * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCollection = MongoCollection(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt index b724d1fb960..23f2825c87b 100644 --- a/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt +++ b/driver-kotlin-coroutine/src/main/kotlin/com/mongodb/kotlin/client/coroutine/MongoDatabase.kt @@ -19,6 +19,7 @@ import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.model.CreateCollectionOptions import com.mongodb.client.model.CreateViewOptions import com.mongodb.reactivestreams.client.MongoDatabase as JMongoDatabase @@ -75,7 +76,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @return the optional timeout duration * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -132,7 +133,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @see [MongoDatabase.timeout] * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoDatabase = MongoDatabase(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/AggregateIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/AggregateIterable.kt index efa618c5de4..564331f566d 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/AggregateIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/AggregateIterable.kt @@ -16,6 +16,8 @@ package com.mongodb.kotlin.client import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.AggregateIterable as JAggregateIterable import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation @@ -52,6 +54,7 @@ public class AggregateIterable(private val wrapped: JAggregateIterable< * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): AggregateIterable { wrapped.timeoutMode(timeoutMode) return this diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/DistinctIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/DistinctIterable.kt index cfc23189ef3..6aba93a5d87 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/DistinctIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/DistinctIterable.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.DistinctIterable as JDistinctIterable import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation @@ -49,6 +51,7 @@ public class DistinctIterable(private val wrapped: JDistinctIterable = apply { wrapped.timeoutMode(timeoutMode) } /** diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/FindIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/FindIterable.kt index 0ad2453a4d4..d6774e861d1 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/FindIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/FindIterable.kt @@ -17,6 +17,8 @@ package com.mongodb.kotlin.client import com.mongodb.CursorType import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.FindIterable as JFindIterable import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation @@ -53,6 +55,7 @@ public class FindIterable(private val wrapped: JFindIterable) : Mong * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): FindIterable { wrapped.timeoutMode(timeoutMode) return this diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListCollectionsIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListCollectionsIterable.kt index 01b796c3781..552c977a721 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListCollectionsIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListCollectionsIterable.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.ListCollectionsIterable as JListCollectionsIterable import com.mongodb.client.cursor.TimeoutMode import java.util.concurrent.TimeUnit @@ -45,6 +47,7 @@ public class ListCollectionsIterable(private val wrapped: JListCollecti * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListCollectionsIterable { wrapped.timeoutMode(timeoutMode) return this diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListDatabasesIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListDatabasesIterable.kt index 8777ab1ce41..03e3c58be25 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListDatabasesIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListDatabasesIterable.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.ListDatabasesIterable as JListDatabasesIterable import com.mongodb.client.cursor.TimeoutMode import java.util.concurrent.TimeUnit @@ -45,6 +47,7 @@ public class ListDatabasesIterable(private val wrapped: JListDatabasesI * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListDatabasesIterable { wrapped.timeoutMode(timeoutMode) return this diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListIndexesIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListIndexesIterable.kt index 896ebd158d9..659d438588b 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListIndexesIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListIndexesIterable.kt @@ -15,6 +15,8 @@ */ package com.mongodb.kotlin.client +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.ListIndexesIterable as JListIndexesIterable import com.mongodb.client.cursor.TimeoutMode import java.util.concurrent.TimeUnit @@ -43,6 +45,7 @@ public class ListIndexesIterable(private val wrapped: JListIndexesItera * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListIndexesIterable { wrapped.timeoutMode(timeoutMode) return this diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListSearchIndexesIterable.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListSearchIndexesIterable.kt index 4f864548b8e..2272ec2bccf 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListSearchIndexesIterable.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/ListSearchIndexesIterable.kt @@ -16,6 +16,8 @@ package com.mongodb.kotlin.client import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.ListSearchIndexesIterable as JListSearchIndexesIterable import com.mongodb.client.cursor.TimeoutMode import com.mongodb.client.model.Collation @@ -47,6 +49,7 @@ public class ListSearchIndexesIterable(private val wrapped: JListSearch * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) public fun timeoutMode(timeoutMode: TimeoutMode): ListSearchIndexesIterable { wrapped.timeoutMode(timeoutMode) return this diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt index 55a341ede31..6b001d55cb9 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCluster.kt @@ -20,6 +20,7 @@ import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.MongoCluster as JMongoCluster import java.util.concurrent.TimeUnit import org.bson.Document @@ -71,7 +72,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * * @return the optional timeout duration */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -128,7 +129,7 @@ public open class MongoCluster protected constructor(private val wrapped: JMongo * @see [MongoDatabase.timeout] * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCluster = MongoCluster(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt index 89a44abec5d..5065ccb5c3c 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoCollection.kt @@ -20,6 +20,7 @@ import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.bulk.BulkWriteResult import com.mongodb.client.MongoCollection as JMongoCollection import com.mongodb.client.model.BulkWriteOptions @@ -104,7 +105,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @return the optional timeout duration * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -181,7 +182,7 @@ public class MongoCollection(private val wrapped: JMongoCollection) * @see [MongoCollection.timeout] * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoCollection = MongoCollection(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt index fd3237e1548..6d8d81e13c3 100644 --- a/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt +++ b/driver-kotlin-sync/src/main/kotlin/com/mongodb/kotlin/client/MongoDatabase.kt @@ -19,6 +19,7 @@ import com.mongodb.ReadConcern import com.mongodb.ReadPreference import com.mongodb.WriteConcern import com.mongodb.annotations.Alpha +import com.mongodb.annotations.Reason import com.mongodb.client.MongoDatabase as JMongoDatabase import com.mongodb.client.model.CreateCollectionOptions import com.mongodb.client.model.CreateViewOptions @@ -73,7 +74,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @return the optional timeout duration * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun timeout(timeUnit: TimeUnit = TimeUnit.MILLISECONDS): Long? = wrapped.getTimeout(timeUnit) /** @@ -130,7 +131,7 @@ public class MongoDatabase(private val wrapped: JMongoDatabase) { * @see [MongoDatabase.timeout] * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public fun withTimeout(timeout: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS): MongoDatabase = MongoDatabase(wrapped.withTimeout(timeout, timeUnit)) diff --git a/driver-legacy/src/main/com/mongodb/MongoClientOptions.java b/driver-legacy/src/main/com/mongodb/MongoClientOptions.java index 8bfe5ae6268..e8d0f44392d 100644 --- a/driver-legacy/src/main/com/mongodb/MongoClientOptions.java +++ b/driver-legacy/src/main/com/mongodb/MongoClientOptions.java @@ -19,6 +19,7 @@ import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; import com.mongodb.annotations.NotThreadSafe; +import com.mongodb.annotations.Reason; import com.mongodb.connection.ClusterConnectionMode; import com.mongodb.connection.ConnectionPoolSettings; import com.mongodb.event.ClusterListener; @@ -580,7 +581,7 @@ public ServerApi getServerApi() { * @return the timeout in milliseconds * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable public Long getTimeout() { return wrapped.getTimeout(MILLISECONDS); @@ -1379,7 +1380,7 @@ public Builder srvServiceName(final String srvServiceName) { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) public Builder timeout(final long timeoutMS) { wrapped.timeout(timeoutMS, MILLISECONDS); return this; diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/AggregatePublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/AggregatePublisher.java index 16c3d31c150..f2c474339aa 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/AggregatePublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/AggregatePublisher.java @@ -18,6 +18,8 @@ import com.mongodb.ExplainVerbosity; import com.mongodb.MongoClientSettings; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -206,6 +208,7 @@ public interface AggregatePublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) AggregatePublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/DistinctPublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/DistinctPublisher.java index f59eb0dfa38..a1d539a3fea 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/DistinctPublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/DistinctPublisher.java @@ -17,6 +17,8 @@ package com.mongodb.reactivestreams.client; import com.mongodb.MongoClientSettings; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -121,6 +123,7 @@ public interface DistinctPublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) DistinctPublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java index d37a77833e6..d940400f1cd 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCluster.java @@ -23,6 +23,7 @@ import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.Document; import org.bson.codecs.configuration.CodecRegistry; @@ -106,7 +107,7 @@ public interface MongoCluster { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -167,7 +168,7 @@ public interface MongoCluster { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) MongoCluster withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java index b6d629cb589..e27b7a26377 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoCollection.java @@ -21,6 +21,7 @@ import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.ThreadSafe; import com.mongodb.bulk.BulkWriteResult; import com.mongodb.client.model.BulkWriteOptions; @@ -137,7 +138,7 @@ public interface MongoCollection { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -204,7 +205,7 @@ public interface MongoCollection { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) MongoCollection withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java index 912694a1e93..b9c1ac8cfc1 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoDatabase.java @@ -20,6 +20,7 @@ import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.model.CreateCollectionOptions; import com.mongodb.client.model.CreateViewOptions; @@ -104,7 +105,7 @@ public interface MongoDatabase { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -162,7 +163,7 @@ public interface MongoDatabase { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) MongoDatabase withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java index 9ed2c0587cb..78a3f5357fc 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/gridfs/GridFSBucket.java @@ -20,6 +20,7 @@ import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.gridfs.model.GridFSDownloadOptions; import com.mongodb.client.gridfs.model.GridFSUploadOptions; @@ -105,7 +106,7 @@ public interface GridFSBucket { * @return the timeout in the given time unit * @since 4.x */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -157,7 +158,7 @@ public interface GridFSBucket { * @since 4.x * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) GridFSBucket withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java index a4a4d17b1ca..6d5aca27457 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/crypt/Crypt.java @@ -20,6 +20,7 @@ import com.mongodb.MongoException; import com.mongodb.MongoInternalException; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.model.vault.DataKeyOptions; import com.mongodb.client.model.vault.EncryptOptions; import com.mongodb.client.model.vault.RewrapManyDataKeyOptions; @@ -190,7 +191,7 @@ public Mono encryptExplicitly(final BsonValue value, final EncryptOp * @since 4.9 * @mongodb.server.release 6.2 */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) public Mono encryptExpression(final BsonDocument expression, final EncryptOptions options, @Nullable final Timeout operationTimeout) { return executeStateMachine(() -> mongoCrypt.createEncryptExpressionContext(new BsonDocument("v", expression), asMongoExplicitEncryptOptions(options)), operationTimeout diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java index 06d5f713019..37d0236293b 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/vault/ClientEncryption.java @@ -19,6 +19,7 @@ import com.mongodb.AutoEncryptionSettings; import com.mongodb.MongoUpdatedEncryptedFieldsException; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.model.CreateCollectionOptions; import com.mongodb.client.model.CreateEncryptedCollectionParams; import com.mongodb.client.model.vault.DataKeyOptions; @@ -108,7 +109,7 @@ public interface ClientEncryption extends Closeable { * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption * @mongodb.driver.manual reference/operator/aggregation/match/ $match */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) Publisher encryptExpression(Bson expression, EncryptOptions options); /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/AggregateObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/AggregateObservable.scala index 56f55bb25ed..91af2f183ad 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/AggregateObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/AggregateObservable.scala @@ -17,6 +17,7 @@ package org.mongodb.scala import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.{ Alpha, Reason } import java.util.concurrent.TimeUnit import com.mongodb.reactivestreams.client.AggregatePublisher @@ -226,6 +227,7 @@ case class AggregateObservable[TResult](private val wrapped: AggregatePublisher[ * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): AggregateObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/DistinctObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/DistinctObservable.scala index 749f335e4da..1376a7d265e 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/DistinctObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/DistinctObservable.scala @@ -16,6 +16,8 @@ package org.mongodb.scala +import com.mongodb.annotations.{ Alpha, Reason } + import java.util.concurrent.TimeUnit import com.mongodb.reactivestreams.client.DistinctPublisher import org.mongodb.scala.bson.BsonValue @@ -131,6 +133,7 @@ case class DistinctObservable[TResult](private val wrapped: DistinctPublisher[TR * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): DistinctObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/FindObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/FindObservable.scala index d4108e2b751..65409063c03 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/FindObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/FindObservable.scala @@ -16,6 +16,7 @@ package org.mongodb.scala +import com.mongodb.annotations.{ Alpha, Reason } import com.mongodb.reactivestreams.client.FindPublisher import com.mongodb.{ CursorType, ExplainVerbosity } import org.mongodb.scala.bson.BsonValue @@ -360,6 +361,7 @@ case class FindObservable[TResult](private val wrapped: FindPublisher[TResult]) * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): FindObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/ListCollectionsObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/ListCollectionsObservable.scala index 758fef63ff1..f1d7b3d47b0 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/ListCollectionsObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/ListCollectionsObservable.scala @@ -16,6 +16,8 @@ package org.mongodb.scala +import com.mongodb.annotations.{ Alpha, Reason } + import java.util.concurrent.TimeUnit import com.mongodb.reactivestreams.client.ListCollectionsPublisher import org.mongodb.scala.bson.BsonValue @@ -116,6 +118,7 @@ case class ListCollectionsObservable[TResult](wrapped: ListCollectionsPublisher[ * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): ListCollectionsObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/ListDatabasesObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/ListDatabasesObservable.scala index 01f0373787c..d9884f3044f 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/ListDatabasesObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/ListDatabasesObservable.scala @@ -16,6 +16,8 @@ package org.mongodb.scala +import com.mongodb.annotations.{ Alpha, Reason } + import java.util.concurrent.TimeUnit import com.mongodb.reactivestreams.client.ListDatabasesPublisher import org.mongodb.scala.bson.BsonValue @@ -145,6 +147,7 @@ case class ListDatabasesObservable[TResult](wrapped: ListDatabasesPublisher[TRes * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): ListDatabasesObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/ListIndexesObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/ListIndexesObservable.scala index 603d6661be0..24ceb63d6d2 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/ListIndexesObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/ListIndexesObservable.scala @@ -16,6 +16,8 @@ package org.mongodb.scala +import com.mongodb.annotations.{ Alpha, Reason } + import java.util.concurrent.TimeUnit import com.mongodb.reactivestreams.client.ListIndexesPublisher import org.mongodb.scala.bson.BsonValue @@ -103,6 +105,7 @@ case class ListIndexesObservable[TResult](wrapped: ListIndexesPublisher[TResult] * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): ListIndexesObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/ListSearchIndexesObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/ListSearchIndexesObservable.scala index add16daaa69..85a4269785a 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/ListSearchIndexesObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/ListSearchIndexesObservable.scala @@ -17,6 +17,7 @@ package org.mongodb.scala import com.mongodb.ExplainVerbosity +import com.mongodb.annotations.{ Alpha, Reason } import com.mongodb.reactivestreams.client.ListSearchIndexesPublisher import org.mongodb.scala.bson.BsonValue import org.mongodb.scala.bson.DefaultHelper.DefaultsTo @@ -150,6 +151,7 @@ case class ListSearchIndexesObservable[TResult](wrapped: ListSearchIndexesPublis * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): ListSearchIndexesObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MapReduceObservable.scala b/driver-scala/src/main/scala/org/mongodb/scala/MapReduceObservable.scala index f73d48aa042..9d1b43fe7ae 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MapReduceObservable.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MapReduceObservable.scala @@ -16,8 +16,9 @@ package org.mongodb.scala -import java.util.concurrent.TimeUnit +import com.mongodb.annotations.{ Alpha, Reason } +import java.util.concurrent.TimeUnit import com.mongodb.client.model.MapReduceAction import com.mongodb.reactivestreams.client.MapReducePublisher import org.mongodb.scala.bson.conversions.Bson @@ -242,6 +243,7 @@ case class MapReduceObservable[TResult](wrapped: MapReducePublisher[TResult]) ex * @return this * @since CSOT */ + @Alpha(Array(Reason.CLIENT)) def timeoutMode(timeoutMode: TimeoutMode): MapReduceObservable[TResult] = { wrapped.timeoutMode(timeoutMode) this diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala b/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala index 8144eeeedb5..44fe5ca2d58 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MongoCluster.scala @@ -16,7 +16,7 @@ package org.mongodb.scala -import com.mongodb.annotations.Alpha +import com.mongodb.annotations.{ Alpha, Reason } import com.mongodb.{ ReadConcern, ReadPreference, WriteConcern } import com.mongodb.reactivestreams.client.{ MongoCluster => JMongoCluster } import org.bson.codecs.configuration.CodecRegistry @@ -100,7 +100,7 @@ class MongoCluster(private val wrapped: JMongoCluster) { * * @return the optional timeout duration */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -158,7 +158,7 @@ class MongoCluster(private val wrapped: JMongoCluster) { * @return a new MongoCluster instance with the set time limit for operations * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) def withTimeout(timeout: Duration): MongoCluster = MongoCluster(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala b/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala index aaba1229fd9..1421dc8086c 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MongoCollection.scala @@ -16,7 +16,7 @@ package org.mongodb.scala -import com.mongodb.annotations.Alpha +import com.mongodb.annotations.{ Alpha, Reason } import com.mongodb.client.model.DropCollectionOptions import java.util @@ -104,7 +104,7 @@ case class MongoCollection[TResult](private val wrapped: JMongoCollection[TResul * @return the optional timeout duration * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -171,7 +171,7 @@ case class MongoCollection[TResult](private val wrapped: JMongoCollection[TResul * @return a new MongoCollection instance with the set time limit for operations * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) def withTimeout(timeout: Duration): MongoCollection[TResult] = MongoCollection(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala b/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala index 5e273350755..2c13ef2df7c 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/MongoDatabase.scala @@ -16,7 +16,7 @@ package org.mongodb.scala -import com.mongodb.annotations.Alpha +import com.mongodb.annotations.{ Alpha, Reason } import com.mongodb.client.model.{ CreateCollectionOptions, CreateViewOptions } import com.mongodb.reactivestreams.client.{ MongoDatabase => JMongoDatabase } import org.bson.codecs.configuration.CodecRegistry @@ -90,7 +90,7 @@ case class MongoDatabase(private[scala] val wrapped: JMongoDatabase) { * @return the optional timeout duration * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -148,7 +148,7 @@ case class MongoDatabase(private[scala] val wrapped: JMongoDatabase) { * @return a new MongoDatabase instance with the set time limit for operations * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) def withTimeout(timeout: Duration): MongoDatabase = MongoDatabase(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala b/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala index 24cff391f4d..0c893e35dc8 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/gridfs/GridFSBucket.scala @@ -16,7 +16,7 @@ package org.mongodb.scala.gridfs -import com.mongodb.annotations.Alpha +import com.mongodb.annotations.{ Alpha, Reason } import java.nio.ByteBuffer import com.mongodb.reactivestreams.client.gridfs.{ GridFSBucket => JGridFSBucket, GridFSBuckets } import org.mongodb.scala.bson.conversions.Bson @@ -123,7 +123,7 @@ case class GridFSBucket(private val wrapped: JGridFSBucket) { * @return the optional timeout duration * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) lazy val timeout: Option[Duration] = Option.apply(wrapped.getTimeout(MILLISECONDS)).map(t => Duration(t, MILLISECONDS)) @@ -170,9 +170,9 @@ case class GridFSBucket(private val wrapped: JGridFSBucket) { * * @param timeout the timeout, which must be greater than or equal to 0 * @return a new GridFSBucket instance with the set time limit for operations - * @since 4.x + * @since CSOT */ - @Alpha(Array(Alpha.Reason.CLIENT)) + @Alpha(Array(Reason.CLIENT)) def withTimeout(timeout: Duration): GridFSBucket = GridFSBucket(wrapped.withTimeout(timeout.toMillis, MILLISECONDS)) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/Aggregates.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/Aggregates.scala index fc3196f76f6..0fff8c4c8ba 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/Aggregates.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/Aggregates.scala @@ -16,7 +16,7 @@ package org.mongodb.scala.model -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.fill.FillOutputField import com.mongodb.client.model.search.FieldSearchPath @@ -737,7 +737,7 @@ object Aggregates { * @note Requires MongoDB 6.0.10 or greater * @since 4.11 */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) def vectorSearch( path: FieldSearchPath, queryVector: Iterable[java.lang.Double], @@ -763,7 +763,7 @@ object Aggregates { * @note Requires MongoDB 6.0.10 or greater * @since 4.11 */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) def vectorSearch( path: FieldSearchPath, queryVector: Iterable[java.lang.Double], diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/Windows.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/Windows.scala index 4688fa818c6..5ccbd299edf 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/Windows.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/Windows.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.{ MongoTimeUnit => JMongoTimeUnit, Windows => JWindows } import org.bson.types.Decimal128 import org.mongodb.scala.bson.conversions.Bson @@ -56,7 +56,7 @@ import org.mongodb.scala.bson.conversions.Bson * @since 4.3 * @note Requires MongoDB 5.0 or greater. */ -@Beta(Array(Beta.Reason.SERVER)) +@Beta(Array(Reason.SERVER)) object Windows { /** @@ -248,7 +248,7 @@ object Windows { * @since 4.3 * @note Requires MongoDB 5.0 or greater. */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) object Bound { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/package.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/package.scala index a8dc63a2b29..111af0e6568 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/package.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/package.scala @@ -16,7 +16,7 @@ package org.mongodb.scala -import com.mongodb.annotations.{ Beta, Sealed } +import com.mongodb.annotations.{ Beta, Reason, Sealed } import scala.collection.JavaConverters._ import com.mongodb.client.model.{ GeoNearOptions, MongoTimeUnit => JMongoTimeUnit, WindowOutputField } @@ -173,7 +173,7 @@ package object model { * * @since 4.9 */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) type CreateEncryptedCollectionParams = com.mongodb.client.model.CreateEncryptedCollectionParams /** @@ -181,7 +181,7 @@ package object model { * * @since 4.9 */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) object CreateEncryptedCollectionParams { def apply(kmsProvider: String) = new com.mongodb.client.model.CreateEncryptedCollectionParams(kmsProvider) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/FuzzySearchOptions.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/FuzzySearchOptions.scala index afeb5d195d8..d106d6bbd9d 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/FuzzySearchOptions.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/FuzzySearchOptions.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ FuzzySearchOptions => JFuzzySearchOptions } /** @@ -25,7 +25,7 @@ import com.mongodb.client.model.search.{ FuzzySearchOptions => JFuzzySearchOptio * @see [[https://www.mongodb.com/docs/atlas/atlas-search/text/ text operator]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object FuzzySearchOptions { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCollector.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCollector.scala index d4fe9ccdffc..a651e502b10 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCollector.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCollector.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchCollector => JSearchCollector } import org.mongodb.scala.bson.conversions.Bson import org.mongodb.scala.model.Projections @@ -30,7 +30,7 @@ import scala.collection.JavaConverters._ * @see [[https://www.mongodb.com/docs/atlas/atlas-search/operators-and-collectors/#collectors Search collectors]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchCollector { /** @@ -42,7 +42,7 @@ object SearchCollector { * @return The requested `SearchCollector`. * @see [[https://www.mongodb.com/docs/atlas/atlas-search/facet/ facet collector]] */ - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) def facet(operator: SearchOperator, facets: Iterable[_ <: SearchFacet]): FacetSearchCollector = JSearchCollector.facet(operator, facets.asJava) diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCount.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCount.scala index 0df9a08ac51..ecba0ecce0d 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCount.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchCount.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchCount => JSearchCount } import org.mongodb.scala.bson.conversions.Bson import org.mongodb.scala.model.Projections @@ -28,7 +28,7 @@ import org.mongodb.scala.model.Projections * @see [[https://www.mongodb.com/docs/atlas/atlas-search/counting/ Counting]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) +@Beta(Array(Reason.CLIENT, Reason.SERVER)) object SearchCount { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchFacet.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchFacet.scala index 4482c8bc678..3bc27520ea3 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchFacet.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchFacet.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchFacet => JSearchFacet } import org.mongodb.scala.bson.conversions.Bson @@ -28,7 +28,7 @@ import collection.JavaConverters._ * @see [[https://www.mongodb.com/docs/atlas/atlas-search/facet/#facet-definition Facet definition]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) +@Beta(Array(Reason.CLIENT, Reason.SERVER)) object SearchFacet { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchHighlight.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchHighlight.scala index a46903a3147..7ac1deebac1 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchHighlight.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchHighlight.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchHighlight => JSearchHighlight } import org.mongodb.scala.bson.conversions.Bson import org.mongodb.scala.model.Projections @@ -30,7 +30,7 @@ import collection.JavaConverters._ * @see [[https://www.mongodb.com/docs/atlas/atlas-search/highlighting/ Highlighting]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchHighlight { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOperator.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOperator.scala index a1dc4caebff..90f27092ebc 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOperator.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOperator.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchOperator => JSearchOperator } import org.mongodb.scala.bson.conversions.Bson import org.mongodb.scala.model.geojson.Point @@ -29,7 +29,7 @@ import collection.JavaConverters._ * @see [[https://www.mongodb.com/docs/atlas/atlas-search/operators-and-collectors/#operators Search operators]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchOperator { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOptions.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOptions.scala index 56069e8624d..5eb61591043 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOptions.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchOptions.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchOptions => JSearchOptions } /** @@ -24,7 +24,7 @@ import com.mongodb.client.model.search.{ SearchOptions => JSearchOptions } * @see [[https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/#-search \$search syntax]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchOptions { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchPath.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchPath.scala index cfe85faa6f7..74999deef35 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchPath.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchPath.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchPath => JSearchPath } /** @@ -27,7 +27,7 @@ import com.mongodb.client.model.search.{ SearchPath => JSearchPath } * @see [[https://www.mongodb.com/docs/atlas/atlas-search/path-construction/ Path]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchPath { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScore.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScore.scala index b43598220e3..35005c05970 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScore.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScore.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchScore => JSearchScore } import org.mongodb.scala.bson.conversions.Bson import org.mongodb.scala.model.Projections @@ -28,7 +28,7 @@ import org.mongodb.scala.model.Projections * @see [[https://www.mongodb.com/docs/atlas/atlas-search/scoring/ Scoring]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchScore { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScoreExpression.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScoreExpression.scala index 22657bc874e..244c07e5847 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScoreExpression.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/SearchScoreExpression.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ SearchScoreExpression => JSearchScoreExpression } import org.mongodb.scala.bson.conversions.Bson @@ -26,7 +26,7 @@ import collection.JavaConverters._ * @see [[https://www.mongodb.com/docs/atlas/atlas-search/scoring/#expressions Expressions for the function score modifier]] * @since 4.7 */ -@Beta(Array(Beta.Reason.CLIENT)) +@Beta(Array(Reason.CLIENT)) object SearchScoreExpression { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/VectorSearchOptions.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/VectorSearchOptions.scala index e355a5558cc..ab25650ca7a 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/VectorSearchOptions.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/VectorSearchOptions.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model.search -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.search.{ VectorSearchOptions => JVectorSearchOptions } /** @@ -25,7 +25,7 @@ import com.mongodb.client.model.search.{ VectorSearchOptions => JVectorSearchOpt * @note Requires MongoDB 6.0.10 or greater * @since 4.11 */ -@Beta(Array(Beta.Reason.SERVER)) +@Beta(Array(Reason.SERVER)) object VectorSearchOptions { /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/search/package.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/search/package.scala index e3f3fb5e308..fb9e393dd1b 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/search/package.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/search/package.scala @@ -15,7 +15,7 @@ */ package org.mongodb.scala.model -import com.mongodb.annotations.{ Beta, Sealed } +import com.mongodb.annotations.{ Beta, Reason, Sealed } /** * Query building API for MongoDB Atlas full-text search. @@ -40,7 +40,7 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/operators-and-collectors/#operators Search operators]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchOperator = com.mongodb.client.model.search.SearchOperator /** @@ -50,14 +50,14 @@ package object search { * @see `SearchOperator.compound()` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type CompoundSearchOperatorBase = com.mongodb.client.model.search.CompoundSearchOperatorBase /** * @see `SearchOperator.compound()` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type CompoundSearchOperator = com.mongodb.client.model.search.CompoundSearchOperator /** @@ -68,7 +68,7 @@ package object search { * @see `CompoundSearchOperatorBase.must(Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type MustCompoundSearchOperator = com.mongodb.client.model.search.MustCompoundSearchOperator /** @@ -79,7 +79,7 @@ package object search { * @see `CompoundSearchOperatorBase.mustNot(Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type MustNotCompoundSearchOperator = com.mongodb.client.model.search.MustNotCompoundSearchOperator /** @@ -90,7 +90,7 @@ package object search { * @see `CompoundSearchOperatorBase.should(Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type ShouldCompoundSearchOperator = com.mongodb.client.model.search.ShouldCompoundSearchOperator /** @@ -101,14 +101,14 @@ package object search { * @see `CompoundSearchOperatorBase.filter(Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type FilterCompoundSearchOperator = com.mongodb.client.model.search.FilterCompoundSearchOperator /** * @see `SearchOperator.exists(FieldSearchPath)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type ExistsSearchOperator = com.mongodb.client.model.search.ExistsSearchOperator /** @@ -116,7 +116,7 @@ package object search { * @see `SearchOperator.text(Iterable, Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type TextSearchOperator = com.mongodb.client.model.search.TextSearchOperator /** @@ -124,7 +124,7 @@ package object search { * @see `SearchOperator.autocomplete(Iterable, FieldSearchPath)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type AutocompleteSearchOperator = com.mongodb.client.model.search.AutocompleteSearchOperator /** @@ -134,7 +134,7 @@ package object search { * @see `SearchOperator.numberRange` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type NumberRangeSearchOperatorBase = com.mongodb.client.model.search.NumberRangeSearchOperatorBase /** @@ -144,42 +144,42 @@ package object search { * @see `SearchOperator.dateRange` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type DateRangeSearchOperatorBase = com.mongodb.client.model.search.DateRangeSearchOperatorBase /** * @see `SearchOperator.numberRange` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type NumberRangeSearchOperator = com.mongodb.client.model.search.NumberRangeSearchOperator /** * @see `SearchOperator.dateRange` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type DateRangeSearchOperator = com.mongodb.client.model.search.DateRangeSearchOperator /** * @see `SearchOperator.near` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type NumberNearSearchOperator = com.mongodb.client.model.search.NumberNearSearchOperator /** * @see `SearchOperator.near` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type DateNearSearchOperator = com.mongodb.client.model.search.DateNearSearchOperator /** * @see `SearchOperator.near` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type GeoNearSearchOperator = com.mongodb.client.model.search.GeoNearSearchOperator /** @@ -189,7 +189,7 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/text/ text operator]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type FuzzySearchOptions = com.mongodb.client.model.search.FuzzySearchOptions /** @@ -200,14 +200,14 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/operators-and-collectors/#collectors Search collectors]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchCollector = com.mongodb.client.model.search.SearchCollector /** * @see `SearchCollector.facet(SearchOperator, Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type FacetSearchCollector = com.mongodb.client.model.search.FacetSearchCollector /** @@ -216,7 +216,7 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/#-search \$search syntax]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchOptions = com.mongodb.client.model.search.SearchOptions /** @@ -227,7 +227,7 @@ package object search { * @since 4.11 */ @Sealed - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) type VectorSearchOptions = com.mongodb.client.model.search.VectorSearchOptions /** @@ -238,7 +238,7 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/highlighting/ Highlighting]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchHighlight = com.mongodb.client.model.search.SearchHighlight /** @@ -250,21 +250,21 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/counting/ Counting]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type SearchCount = com.mongodb.client.model.search.SearchCount /** * @see `SearchCount.total()` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type TotalSearchCount = com.mongodb.client.model.search.TotalSearchCount /** * @see `SearchCount.lowerBound()` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type LowerBoundSearchCount = com.mongodb.client.model.search.LowerBoundSearchCount /** @@ -273,28 +273,28 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/facet/#facet-definition Facet definition]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type SearchFacet = com.mongodb.client.model.search.SearchFacet /** * @see `SearchFacet.stringFacet(String, FieldSearchPath)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type StringSearchFacet = com.mongodb.client.model.search.StringSearchFacet /** * @see `SearchFacet.numberFacet(String, FieldSearchPath, Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type NumberSearchFacet = com.mongodb.client.model.search.NumberSearchFacet /** * @see `SearchFacet.dateFacet(String, FieldSearchPath, Iterable)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT, Beta.Reason.SERVER)) + @Beta(Array(Reason.CLIENT, Reason.SERVER)) type DateSearchFacet = com.mongodb.client.model.search.DateSearchFacet /** @@ -306,21 +306,21 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/path-construction/ Path]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchPath = com.mongodb.client.model.search.SearchPath /** * @see `SearchPath.fieldPath(String)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type FieldSearchPath = com.mongodb.client.model.search.FieldSearchPath /** * @see `SearchPath.wildcardPath(String)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type WildcardSearchPath = com.mongodb.client.model.search.WildcardSearchPath /** @@ -331,35 +331,35 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/scoring/ Scoring]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchScore = com.mongodb.client.model.search.SearchScore /** * @see `SearchScore.boost(float)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type ValueBoostSearchScore = com.mongodb.client.model.search.ValueBoostSearchScore /** * @see `SearchScore.boost(FieldSearchPath)` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type PathBoostSearchScore = com.mongodb.client.model.search.PathBoostSearchScore /** * @see `SearchScore.constant` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type ConstantSearchScore = com.mongodb.client.model.search.ConstantSearchScore /** * @see `SearchScore.function` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type FunctionSearchScore = com.mongodb.client.model.search.FunctionSearchScore /** @@ -367,62 +367,62 @@ package object search { * @see [[https://www.mongodb.com/docs/atlas/atlas-search/scoring/#expressions Expressions for the function score modifier]] */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type SearchScoreExpression = com.mongodb.client.model.search.SearchScoreExpression /** * @see `SearchScoreExpression.relevanceExpression` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type RelevanceSearchScoreExpression = com.mongodb.client.model.search.RelevanceSearchScoreExpression /** * @see `SearchScoreExpression.pathExpression` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type PathSearchScoreExpression = com.mongodb.client.model.search.PathSearchScoreExpression /** * @see `SearchScoreExpression.constantExpression` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type ConstantSearchScoreExpression = com.mongodb.client.model.search.ConstantSearchScoreExpression /** * @see `SearchScoreExpression.gaussExpression` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type GaussSearchScoreExpression = com.mongodb.client.model.search.GaussSearchScoreExpression /** * @see `SearchScoreExpression.log` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type LogSearchScoreExpression = com.mongodb.client.model.search.LogSearchScoreExpression /** * @see `SearchScoreExpression.log1p` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type Log1pSearchScoreExpression = com.mongodb.client.model.search.Log1pSearchScoreExpression /** * @see `SearchScoreExpression.addExpression` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type AddSearchScoreExpression = com.mongodb.client.model.search.AddSearchScoreExpression /** * @see `SearchScoreExpression.multiplyExpression` */ @Sealed - @Beta(Array(Beta.Reason.CLIENT)) + @Beta(Array(Reason.CLIENT)) type MultiplySearchScoreExpression = com.mongodb.client.model.search.MultiplySearchScoreExpression } diff --git a/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala b/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala index bf1f7b1ae5b..f57ddce32c6 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/model/vault/package.scala @@ -16,7 +16,7 @@ package org.mongodb.scala.model -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.vault.{ DataKeyOptions => JDataKeyOptions } import com.mongodb.client.model.vault.{ EncryptOptions => JEncryptOptions } import com.mongodb.client.model.vault.{ RangeOptions => JRangeOptions } @@ -60,7 +60,7 @@ package object vault { * * @since 4.9 */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) type RangeOptions = JRangeOptions object RangeOptions { diff --git a/driver-scala/src/main/scala/org/mongodb/scala/package.scala b/driver-scala/src/main/scala/org/mongodb/scala/package.scala index 1a6a24cc229..f79af251238 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/package.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/package.scala @@ -16,7 +16,7 @@ package org.mongodb -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import org.bson.BsonDocumentReader import org.bson.codecs.{ DecoderContext, DocumentCodec } import org.mongodb.scala.bson.BsonDocument @@ -395,7 +395,7 @@ package object scala extends ClientSessionImplicits with ObservableImplicits wit * * @since 4.9 */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) type MongoUpdatedEncryptedFieldsException = com.mongodb.MongoUpdatedEncryptedFieldsException /** diff --git a/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala b/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala index b4c9de4d440..3d375b56e21 100644 --- a/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala +++ b/driver-scala/src/main/scala/org/mongodb/scala/vault/ClientEncryption.scala @@ -16,7 +16,7 @@ package org.mongodb.scala.vault -import com.mongodb.annotations.Beta +import com.mongodb.annotations.{ Beta, Reason } import com.mongodb.client.model.{ CreateCollectionOptions, CreateEncryptedCollectionParams } import java.io.Closeable @@ -91,7 +91,7 @@ case class ClientEncryption(private val wrapped: JClientEncryption) extends Clos * @return a Publisher containing the queryable encrypted range expression * @since 4.9 */ - @Beta(Array(Beta.Reason.SERVER)) def encryptExpression( + @Beta(Array(Reason.SERVER)) def encryptExpression( expression: Document, options: EncryptOptions ): SingleObservable[Document] = @@ -126,7 +126,7 @@ case class ClientEncryption(private val wrapped: JClientEncryption) extends Clos * @note Requires MongoDB 7.0 or greater. * @see [[https://www.mongodb.com/docs/manual/reference/command/create/ Create Command]] */ - @Beta(Array(Beta.Reason.SERVER)) + @Beta(Array(Reason.SERVER)) def createEncryptedCollection( database: MongoDatabase, collectionName: String, diff --git a/driver-sync/src/main/com/mongodb/client/MongoCluster.java b/driver-sync/src/main/com/mongodb/client/MongoCluster.java index 9608af248ff..ccc4760891f 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoCluster.java +++ b/driver-sync/src/main/com/mongodb/client/MongoCluster.java @@ -23,6 +23,7 @@ import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Immutable; +import com.mongodb.annotations.Reason; import com.mongodb.lang.Nullable; import org.bson.Document; import org.bson.codecs.configuration.CodecRegistry; @@ -105,7 +106,7 @@ public interface MongoCluster { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -166,7 +167,7 @@ public interface MongoCluster { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) MongoCluster withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/MongoCollection.java b/driver-sync/src/main/com/mongodb/client/MongoCollection.java index bd4911eb3be..976eb349060 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoCollection.java +++ b/driver-sync/src/main/com/mongodb/client/MongoCollection.java @@ -21,6 +21,7 @@ import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.ThreadSafe; import com.mongodb.bulk.BulkWriteResult; import com.mongodb.client.model.BulkWriteOptions; @@ -141,7 +142,7 @@ public interface MongoCollection { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -209,7 +210,7 @@ public interface MongoCollection { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) MongoCollection withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/MongoDatabase.java b/driver-sync/src/main/com/mongodb/client/MongoDatabase.java index 643afc18301..83007acfc37 100644 --- a/driver-sync/src/main/com/mongodb/client/MongoDatabase.java +++ b/driver-sync/src/main/com/mongodb/client/MongoDatabase.java @@ -20,6 +20,7 @@ import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.model.CreateCollectionOptions; import com.mongodb.client.model.CreateViewOptions; @@ -106,7 +107,7 @@ public interface MongoDatabase { * @return the timeout in the given time unit * @since CSOT */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -165,7 +166,7 @@ public interface MongoDatabase { * @since CSOT * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) MongoDatabase withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java b/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java index 8d875670b40..5335ed4ce91 100644 --- a/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java +++ b/driver-sync/src/main/com/mongodb/client/gridfs/GridFSBucket.java @@ -20,6 +20,7 @@ import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.annotations.ThreadSafe; import com.mongodb.client.ClientSession; import com.mongodb.client.MongoDatabase; @@ -107,7 +108,7 @@ public interface GridFSBucket { * @return the timeout in the given time unit * @since 4.x */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) @Nullable Long getTimeout(TimeUnit timeUnit); @@ -160,7 +161,7 @@ public interface GridFSBucket { * @since 4.x * @see #getTimeout */ - @Alpha(Alpha.Reason.CLIENT) + @Alpha(Reason.CLIENT) GridFSBucket withTimeout(long timeout, TimeUnit timeUnit); /** diff --git a/driver-sync/src/main/com/mongodb/client/internal/Crypt.java b/driver-sync/src/main/com/mongodb/client/internal/Crypt.java index 1d31bcf80ba..53a65ceaa02 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/Crypt.java +++ b/driver-sync/src/main/com/mongodb/client/internal/Crypt.java @@ -20,6 +20,7 @@ import com.mongodb.MongoException; import com.mongodb.MongoInternalException; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.MongoClient; import com.mongodb.client.model.vault.DataKeyOptions; import com.mongodb.client.model.vault.EncryptOptions; @@ -211,7 +212,7 @@ BsonBinary encryptExplicitly(final BsonValue value, final EncryptOptions options * @param options the options * @return the encrypted expression */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) BsonDocument encryptExpression(final BsonDocument expression, final EncryptOptions options, @Nullable final Timeout timeoutOperation) { notNull("expression", expression); notNull("options", options); diff --git a/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java b/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java index 864fdf004dc..6d529741a24 100644 --- a/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java +++ b/driver-sync/src/main/com/mongodb/client/vault/ClientEncryption.java @@ -19,6 +19,7 @@ import com.mongodb.AutoEncryptionSettings; import com.mongodb.MongoUpdatedEncryptedFieldsException; import com.mongodb.annotations.Beta; +import com.mongodb.annotations.Reason; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.CreateCollectionOptions; @@ -108,7 +109,7 @@ public interface ClientEncryption extends Closeable { * @mongodb.driver.manual /core/queryable-encryption/ queryable encryption * @mongodb.driver.manual reference/operator/aggregation/match/ $match */ - @Beta(Beta.Reason.SERVER) + @Beta(Reason.SERVER) BsonDocument encryptExpression(Bson expression, EncryptOptions options); /** From 4c608e157f73a2c57ac6301569b086fa6ea2c5a1 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Fri, 26 Apr 2024 14:00:26 -0700 Subject: [PATCH 10/13] Correct Javadoc. JAVA-5402 --- driver-core/src/main/com/mongodb/annotations/Alpha.java | 9 ++++----- driver-core/src/main/com/mongodb/annotations/Reason.java | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/driver-core/src/main/com/mongodb/annotations/Alpha.java b/driver-core/src/main/com/mongodb/annotations/Alpha.java index 3543ff69711..3698c7ac860 100644 --- a/driver-core/src/main/com/mongodb/annotations/Alpha.java +++ b/driver-core/src/main/com/mongodb/annotations/Alpha.java @@ -24,11 +24,10 @@ import java.lang.annotation.Target; /** - * Signifies that a public API (public class, method or field) is in the early stages - * of development, subject to incompatible changes, or even removal, in a future release - * and may lack some intended features. An API bearing this annotation may contain known - * issues affecting functionality, performance, and stability. It is also exempt from any - * compatibility guarantees made by its containing library. + * Signifies that a public API element is in the early stages of development, subject to + * incompatible changes, or even removal, in a future release and may lack some intended features. + * An API bearing this annotation may contain known issues affecting functionality, performance, + * and stability. It is also exempt from any compatibility guarantees made by its containing library. * *

    It is inadvisable for applications to use Alpha APIs in production environments or * for libraries (which get included on users' CLASSPATHs, outside the library developers' diff --git a/driver-core/src/main/com/mongodb/annotations/Reason.java b/driver-core/src/main/com/mongodb/annotations/Reason.java index 3fb2b6f06c1..dec445abf42 100644 --- a/driver-core/src/main/com/mongodb/annotations/Reason.java +++ b/driver-core/src/main/com/mongodb/annotations/Reason.java @@ -17,7 +17,7 @@ package com.mongodb.annotations; /** - * Enumerates the reasons an API element which might be marked with annotations like {@link Alpha} or {@link Beta}. + * Enumerates the reasons an API element might be marked with annotations like {@link Alpha} or {@link Beta}. */ public enum Reason { /** From df5bdcf7c83837e711b7fd595b212fedd15101be Mon Sep 17 00:00:00 2001 From: Viacheslav Babanin Date: Wed, 1 May 2024 14:55:55 -0700 Subject: [PATCH 11/13] Update driver-core/src/main/com/mongodb/ConnectionString.java Co-authored-by: Valentin Kovalenko --- driver-core/src/main/com/mongodb/ConnectionString.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/driver-core/src/main/com/mongodb/ConnectionString.java b/driver-core/src/main/com/mongodb/ConnectionString.java index 598925dcdb6..9a7b3f0fba5 100644 --- a/driver-core/src/main/com/mongodb/ConnectionString.java +++ b/driver-core/src/main/com/mongodb/ConnectionString.java @@ -139,7 +139,7 @@ *

  • {@code sslInvalidHostNameAllowed=true|false}: Whether to allow invalid host names for TLS connections.
  • *
  • {@code tlsAllowInvalidHostnames=true|false}: Whether to allow invalid host names for TLS connections. Supersedes the * sslInvalidHostNameAllowed option
  • - *
  • {@code timeoutMS=ms}: Time limit for the full execution of an operation. Note: This parameter is part of an Alpha API and may be + *
  • {@code timeoutMS=ms}: Time limit for the full execution of an operation. Note: This parameter is part of an {@linkplain Alpha Alpha API} and may be * subject to changes or even removal in future releases.
  • *
  • {@code connectTimeoutMS=ms}: How long a connection can take to be opened before timing out.
  • *
  • {@code socketTimeoutMS=ms}: How long a receive on a socket can take before timing out. From 473123c1bd075c7075e153ceccc40237a4c67810 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Wed, 1 May 2024 15:09:25 -0700 Subject: [PATCH 12/13] - Correct README. - Mark timeoutMode with Alpha annotation JAVA-5402 --- README.md | 12 ++++++------ .../src/main/com/mongodb/annotations/Reason.java | 1 + .../reactivestreams/client/FindPublisher.java | 3 +++ .../client/ListCollectionsPublisher.java | 3 +++ .../client/ListDatabasesPublisher.java | 3 +++ .../reactivestreams/client/ListIndexesPublisher.java | 3 +++ .../client/ListSearchIndexesPublisher.java | 3 +++ .../reactivestreams/client/MapReducePublisher.java | 3 +++ .../main/com/mongodb/client/AggregateIterable.java | 3 +++ .../main/com/mongodb/client/DistinctIterable.java | 3 +++ .../src/main/com/mongodb/client/FindIterable.java | 3 +++ .../com/mongodb/client/ListCollectionsIterable.java | 3 +++ .../com/mongodb/client/ListDatabasesIterable.java | 3 +++ .../main/com/mongodb/client/ListIndexesIterable.java | 3 +++ .../mongodb/client/ListSearchIndexesIterable.java | 3 +++ .../main/com/mongodb/client/MapReduceIterable.java | 3 +++ 16 files changed, 49 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0bb3408e7a9..fc054a66619 100644 --- a/README.md +++ b/README.md @@ -54,13 +54,13 @@ with prior patch releases of the same minor release branch. #### @Alpha -APIs marked with the `@Alpha` annotation at the class, method or field level are in the early stages of development, -subject to incompatible changes, or even removal, in a future release and may lack some intended features. These APIs -may be unstable, have potential performance implications as development progresses, and are exempt from any compatibility -guarantees made by its containing library. +APIs marked with the `@Alpha` annotation at a public API element are in the early stages of development, subject to +incompatible changes, or even removal, in a future release and may lack some intended features. An APIs bearing `@Alpha` +annotation may contain known issues affecting functionality, performance, and stability. They are also exempt from any +compatibility guarantees made by its containing library. -It is inadvisable for applications to use Alpha APIs in production environments or for libraries -(which get included on users' CLASSPATHs, outside the library developers' control) to depend on these APIs. Alpha APIs +It is inadvisable for applications to use Alpha APIs in production environments or for libraries +(which get included on users' CLASSPATHs, outside the library developers' control) to depend on these APIs. Alpha APIs are intended for experimental purposes only. #### @Beta diff --git a/driver-core/src/main/com/mongodb/annotations/Reason.java b/driver-core/src/main/com/mongodb/annotations/Reason.java index dec445abf42..af72098a9de 100644 --- a/driver-core/src/main/com/mongodb/annotations/Reason.java +++ b/driver-core/src/main/com/mongodb/annotations/Reason.java @@ -19,6 +19,7 @@ /** * Enumerates the reasons an API element might be marked with annotations like {@link Alpha} or {@link Beta}. */ +@Beta(Reason.CLIENT) public enum Reason { /** * Indicates that the status of the driver API is the reason for the annotation. diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/FindPublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/FindPublisher.java index 84501d643e9..fd478ba78a7 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/FindPublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/FindPublisher.java @@ -18,6 +18,8 @@ import com.mongodb.CursorType; import com.mongodb.ExplainVerbosity; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.client.model.Projections; @@ -288,6 +290,7 @@ public interface FindPublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) FindPublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListCollectionsPublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListCollectionsPublisher.java index e114e714de2..0850ea2ccbc 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListCollectionsPublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListCollectionsPublisher.java @@ -16,6 +16,8 @@ package com.mongodb.reactivestreams.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -96,6 +98,7 @@ public interface ListCollectionsPublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListCollectionsPublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListDatabasesPublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListDatabasesPublisher.java index 5853f30d8ff..b51f27ecdb8 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListDatabasesPublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListDatabasesPublisher.java @@ -17,6 +17,8 @@ package com.mongodb.reactivestreams.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -119,6 +121,7 @@ public interface ListDatabasesPublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListDatabasesPublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListIndexesPublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListIndexesPublisher.java index e4ac214063f..bb10a96d073 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListIndexesPublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListIndexesPublisher.java @@ -16,6 +16,8 @@ package com.mongodb.reactivestreams.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -85,6 +87,7 @@ public interface ListIndexesPublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListIndexesPublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListSearchIndexesPublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListSearchIndexesPublisher.java index ad341e61954..eae3fc0842a 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListSearchIndexesPublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/ListSearchIndexesPublisher.java @@ -17,7 +17,9 @@ package com.mongodb.reactivestreams.client; import com.mongodb.ExplainVerbosity; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Evolving; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -110,6 +112,7 @@ public interface ListSearchIndexesPublisher extends Publisher * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListSearchIndexesPublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MapReducePublisher.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MapReducePublisher.java index 7f7033a723b..d3e4dfeca0c 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MapReducePublisher.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MapReducePublisher.java @@ -17,6 +17,8 @@ package com.mongodb.reactivestreams.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -200,6 +202,7 @@ public interface MapReducePublisher extends Publisher { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) MapReducePublisher timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-sync/src/main/com/mongodb/client/AggregateIterable.java b/driver-sync/src/main/com/mongodb/client/AggregateIterable.java index dda8f757119..8a70725dcd6 100644 --- a/driver-sync/src/main/com/mongodb/client/AggregateIterable.java +++ b/driver-sync/src/main/com/mongodb/client/AggregateIterable.java @@ -17,6 +17,8 @@ package com.mongodb.client; import com.mongodb.ExplainVerbosity; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -85,6 +87,7 @@ public interface AggregateIterable extends MongoIterable { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) AggregateIterable timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-sync/src/main/com/mongodb/client/DistinctIterable.java b/driver-sync/src/main/com/mongodb/client/DistinctIterable.java index ba1f3217890..f18c0313805 100644 --- a/driver-sync/src/main/com/mongodb/client/DistinctIterable.java +++ b/driver-sync/src/main/com/mongodb/client/DistinctIterable.java @@ -16,6 +16,8 @@ package com.mongodb.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -102,5 +104,6 @@ public interface DistinctIterable extends MongoIterable { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) DistinctIterable timeoutMode(TimeoutMode timeoutMode); } diff --git a/driver-sync/src/main/com/mongodb/client/FindIterable.java b/driver-sync/src/main/com/mongodb/client/FindIterable.java index b93ce1873ac..2352cfec7d8 100644 --- a/driver-sync/src/main/com/mongodb/client/FindIterable.java +++ b/driver-sync/src/main/com/mongodb/client/FindIterable.java @@ -18,6 +18,8 @@ import com.mongodb.CursorType; import com.mongodb.ExplainVerbosity; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.client.model.Projections; @@ -281,6 +283,7 @@ public interface FindIterable extends MongoIterable { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) FindIterable timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-sync/src/main/com/mongodb/client/ListCollectionsIterable.java b/driver-sync/src/main/com/mongodb/client/ListCollectionsIterable.java index 6e7b7284f83..8fdcec9d7bb 100644 --- a/driver-sync/src/main/com/mongodb/client/ListCollectionsIterable.java +++ b/driver-sync/src/main/com/mongodb/client/ListCollectionsIterable.java @@ -16,6 +16,8 @@ package com.mongodb.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -92,5 +94,6 @@ public interface ListCollectionsIterable extends MongoIterable * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListCollectionsIterable timeoutMode(TimeoutMode timeoutMode); } diff --git a/driver-sync/src/main/com/mongodb/client/ListDatabasesIterable.java b/driver-sync/src/main/com/mongodb/client/ListDatabasesIterable.java index 0bd4693279d..9fbfe73affd 100644 --- a/driver-sync/src/main/com/mongodb/client/ListDatabasesIterable.java +++ b/driver-sync/src/main/com/mongodb/client/ListDatabasesIterable.java @@ -16,6 +16,8 @@ package com.mongodb.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -114,5 +116,6 @@ public interface ListDatabasesIterable extends MongoIterable { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListDatabasesIterable timeoutMode(TimeoutMode timeoutMode); } diff --git a/driver-sync/src/main/com/mongodb/client/ListIndexesIterable.java b/driver-sync/src/main/com/mongodb/client/ListIndexesIterable.java index 34551441131..9769e40bd29 100644 --- a/driver-sync/src/main/com/mongodb/client/ListIndexesIterable.java +++ b/driver-sync/src/main/com/mongodb/client/ListIndexesIterable.java @@ -16,6 +16,8 @@ package com.mongodb.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.lang.Nullable; import org.bson.BsonValue; @@ -81,5 +83,6 @@ public interface ListIndexesIterable extends MongoIterable { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) ListIndexesIterable timeoutMode(TimeoutMode timeoutMode); } diff --git a/driver-sync/src/main/com/mongodb/client/ListSearchIndexesIterable.java b/driver-sync/src/main/com/mongodb/client/ListSearchIndexesIterable.java index 2aa82ea3fd6..2c5da3e2f5d 100644 --- a/driver-sync/src/main/com/mongodb/client/ListSearchIndexesIterable.java +++ b/driver-sync/src/main/com/mongodb/client/ListSearchIndexesIterable.java @@ -17,7 +17,9 @@ package com.mongodb.client; import com.mongodb.ExplainVerbosity; +import com.mongodb.annotations.Alpha; import com.mongodb.annotations.Evolving; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -110,6 +112,7 @@ public interface ListSearchIndexesIterable extends MongoIterable timeoutMode(TimeoutMode timeoutMode); /** diff --git a/driver-sync/src/main/com/mongodb/client/MapReduceIterable.java b/driver-sync/src/main/com/mongodb/client/MapReduceIterable.java index 0b28fde91ee..8b747a5d1a0 100644 --- a/driver-sync/src/main/com/mongodb/client/MapReduceIterable.java +++ b/driver-sync/src/main/com/mongodb/client/MapReduceIterable.java @@ -16,6 +16,8 @@ package com.mongodb.client; +import com.mongodb.annotations.Alpha; +import com.mongodb.annotations.Reason; import com.mongodb.client.cursor.TimeoutMode; import com.mongodb.client.model.Collation; import com.mongodb.lang.Nullable; @@ -192,5 +194,6 @@ public interface MapReduceIterable extends MongoIterable { * @return this * @since CSOT */ + @Alpha(Reason.CLIENT) MapReduceIterable timeoutMode(TimeoutMode timeoutMode); } From 1bbea618ff6fc3937f50a551f17c77ae03b6e6f6 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Thu, 2 May 2024 14:13:45 -0700 Subject: [PATCH 13/13] Update README. JAVA-5402 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fc054a66619..4111b648d38 100644 --- a/README.md +++ b/README.md @@ -54,10 +54,10 @@ with prior patch releases of the same minor release branch. #### @Alpha -APIs marked with the `@Alpha` annotation at a public API element are in the early stages of development, subject to -incompatible changes, or even removal, in a future release and may lack some intended features. An APIs bearing `@Alpha` -annotation may contain known issues affecting functionality, performance, and stability. They are also exempt from any -compatibility guarantees made by its containing library. +APIs marked with the `@Alpha` annotation are in the early stages of development, subject to incompatible changes, +or even removal, in a future release and may lack some intended features. An APIs bearing `@Alpha` annotation may +contain known issues affecting functionality, performance, and stability. They are also exempt from any compatibility +guarantees made by its containing library. It is inadvisable for applications to use Alpha APIs in production environments or for libraries (which get included on users' CLASSPATHs, outside the library developers' control) to depend on these APIs. Alpha APIs