Skip to content

Commit 0f68e1e

Browse files
authored
Replace @Evolving with @Sealed where appropriate (#1141)
JAVA-5020
1 parent ce6c119 commit 0f68e1e

Some content is hidden

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

49 files changed

+180
-140
lines changed

driver-core/src/main/com/mongodb/annotations/Evolving.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
package com.mongodb.annotations;
2020

21+
import com.mongodb.connection.StreamFactoryFactory;
22+
import org.bson.conversions.Bson;
23+
2124
import java.lang.annotation.Documented;
2225
import java.lang.annotation.ElementType;
2326
import java.lang.annotation.Retention;
@@ -30,6 +33,41 @@
3033
* of doing extra work during upgrades.
3134
* Using such program elements is no different from using ordinary unannotated program elements.
3235
* Note that the presence of this annotation implies nothing about the quality or performance of the API in question.
36+
* <p>
37+
* Unless we currently want to allow users to extend/implement API program elements, we must annotate them with
38+
* {@code @}{@link Sealed} rather than {@code @}{@link Evolving}. Replacing {@code @}{@link Sealed} with {@code @}{@link Evolving}
39+
* is a backward-compatible change, while the opposite is not.</p>
40+
*
41+
* <table>
42+
* <caption>Reasons we may allow users to extend/implement an API program element</caption>
43+
* <tr>
44+
* <th>Reason</th>
45+
* <th>Example</th>
46+
* <th>Applicability of {@code @}{@link Evolving}</th>
47+
* </tr>
48+
* <tr>
49+
* <td>Doing so allows/simplifies integrating user code with the API.</td>
50+
* <td>{@link Bson}</td>
51+
* <td>Not applicable.</td>
52+
* </tr>
53+
* <tr>
54+
* <td>Doing so allows customizing API behavior.</td>
55+
* <td>{@link StreamFactoryFactory}</td>
56+
* <td>Not applicable.</td>
57+
* </tr>
58+
* <tr>
59+
* <td>Doing so facilitates writing application unit tests by creating a fake implementation.</td>
60+
* <td>{@code com.mongodb.client.MongoClient}</td>
61+
* <td>Applicable.</td>
62+
* </tr>
63+
* <tr>
64+
* <td>The program element was introduced before {@code @}{@link Evolving}.</td>
65+
* <td>{@code com.mongodb.client.MongoClient}</td>
66+
* <td>Applicable.</td>
67+
* </tr>
68+
* </table>
69+
*
70+
* @see Sealed
3371
*/
3472
@Retention(RetentionPolicy.CLASS)
3573
@Target(ElementType.TYPE)

driver-core/src/main/com/mongodb/annotations/Sealed.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626

2727
/**
2828
* Signifies that the annotated class or interface should be treated as sealed:
29-
* it must not be extended or implemented.
29+
* it must not be extended or implemented by consumers of the library.
3030
*
3131
* <p>Using such classes and interfaces is no different from using ordinary
3232
* unannotated classes and interfaces.
3333
*
3434
* <p>This annotation does not imply that the API is experimental or
3535
* {@link Beta}, or that the quality or performance of the API is inferior.
36+
*
37+
* @see Evolving
3638
*/
3739
@Retention(RetentionPolicy.CLASS)
3840
@Target(ElementType.TYPE)

driver-core/src/main/com/mongodb/client/model/search/AddSearchScoreExpression.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* @see SearchScoreExpression#addExpression(Iterable)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface AddSearchScoreExpression extends SearchScoreExpression {
2828
}

driver-core/src/main/com/mongodb/client/model/search/AutocompleteSearchOperator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* @see SearchOperator#autocomplete(FieldSearchPath, String, String...)
2323
* @see SearchOperator#autocomplete(FieldSearchPath, Iterable)
2424
* @since 4.7
2525
*/
26-
@Evolving
26+
@Sealed
2727
@Beta(Beta.Reason.CLIENT)
2828
public interface AutocompleteSearchOperator extends SearchOperator {
2929
@Override

driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* @see SearchOperator#compound()
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface CompoundSearchOperator extends CompoundSearchOperatorBase, SearchOperator {
2828
@Override

driver-core/src/main/com/mongodb/client/model/search/CompoundSearchOperatorBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* A base for a {@link CompoundSearchOperator} which allows creating instances of this operator.
@@ -25,7 +25,7 @@
2525
* @see SearchOperator#compound()
2626
* @since 4.7
2727
*/
28-
@Evolving
28+
@Sealed
2929
@Beta(Beta.Reason.CLIENT)
3030
public interface CompoundSearchOperatorBase {
3131
/**

driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* @see SearchScore#constant(float)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface ConstantSearchScore extends SearchScore {
2828
}

driver-core/src/main/com/mongodb/client/model/search/ConstantSearchScoreExpression.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* @see SearchScoreExpression#constantExpression(float)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface ConstantSearchScoreExpression extends SearchScoreExpression {
2828
}

driver-core/src/main/com/mongodb/client/model/search/DateNearSearchOperator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
import java.time.Duration;
2222
import java.time.Instant;
@@ -26,7 +26,7 @@
2626
* @see SearchOperator#near(Instant, Duration, Iterable)
2727
* @since 4.7
2828
*/
29-
@Evolving
29+
@Sealed
3030
@Beta(Beta.Reason.CLIENT)
3131
public interface DateNearSearchOperator extends SearchOperator {
3232
@Override

driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
package com.mongodb.client.model.search;
1717

1818
import com.mongodb.annotations.Beta;
19-
import com.mongodb.annotations.Evolving;
19+
import com.mongodb.annotations.Sealed;
2020

2121
/**
2222
* @see SearchOperator#dateRange(FieldSearchPath, FieldSearchPath...)
2323
* @see SearchOperator#dateRange(Iterable)
2424
* @since 4.7
2525
*/
26-
@Evolving
26+
@Sealed
2727
@Beta(Beta.Reason.CLIENT)
2828
public interface DateRangeSearchOperator extends DateRangeSearchOperatorBase, SearchOperator {
2929
@Override

0 commit comments

Comments
 (0)