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

driver-core/src/main/com/mongodb/client/model/search/DateRangeSearchOperatorBase.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.Instant;
2222

@@ -28,7 +28,7 @@
2828
* @see SearchOperator#dateRange(Iterable)
2929
* @since 4.7
3030
*/
31-
@Evolving
31+
@Sealed
3232
@Beta(Beta.Reason.CLIENT)
3333
public interface DateRangeSearchOperatorBase {
3434
/**

driver-core/src/main/com/mongodb/client/model/search/DateSearchFacet.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 SearchFacet#dateFacet(String, FieldSearchPath, Iterable)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER})
2727
public interface DateSearchFacet extends SearchFacet {
2828
/**

driver-core/src/main/com/mongodb/client/model/search/ExistsSearchOperator.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#exists(FieldSearchPath)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface ExistsSearchOperator extends SearchOperator {
2828
@Override

driver-core/src/main/com/mongodb/client/model/search/FacetSearchCollector.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 SearchCollector#facet(SearchOperator, Iterable)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta({Beta.Reason.CLIENT, Beta.Reason.SERVER})
2727
public interface FacetSearchCollector extends SearchCollector {
2828
}

driver-core/src/main/com/mongodb/client/model/search/FieldSearchPath.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
import org.bson.conversions.Bson;
2121

2222
import static com.mongodb.internal.client.model.Util.SEARCH_PATH_VALUE_KEY;
@@ -25,7 +25,7 @@
2525
* @see SearchPath#fieldPath(String)
2626
* @since 4.7
2727
*/
28-
@Evolving
28+
@Sealed
2929
@Beta(Beta.Reason.CLIENT)
3030
public interface FieldSearchPath extends SearchPath {
3131
/**

driver-core/src/main/com/mongodb/client/model/search/FilterCompoundSearchOperator.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 representation of a {@link CompoundSearchOperator} that allows changing
@@ -26,7 +26,7 @@
2626
* @see CompoundSearchOperatorBase#filter(Iterable)
2727
* @since 4.7
2828
*/
29-
@Evolving
29+
@Sealed
3030
@Beta(Beta.Reason.CLIENT)
3131
public interface FilterCompoundSearchOperator extends CompoundSearchOperator {
3232
@Override

driver-core/src/main/com/mongodb/client/model/search/FunctionSearchScore.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#function(SearchScoreExpression)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface FunctionSearchScore extends SearchScore {
2828
}

driver-core/src/main/com/mongodb/client/model/search/FuzzySearchOptions.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
import org.bson.conversions.Bson;
2121

2222
/**
@@ -26,7 +26,7 @@
2626
* @mongodb.atlas.manual atlas-search/text/ text operator
2727
* @since 4.7
2828
*/
29-
@Evolving
29+
@Sealed
3030
@Beta(Beta.Reason.CLIENT)
3131
public interface FuzzySearchOptions extends Bson {
3232
/**

driver-core/src/main/com/mongodb/client/model/search/GaussSearchScoreExpression.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#gaussExpression(double, PathSearchScoreExpression, double)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface GaussSearchScoreExpression extends SearchScoreExpression {
2828
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
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
import com.mongodb.client.model.geojson.Point;
2121

2222
/**
2323
* @see SearchOperator#near(Point, Number, FieldSearchPath, FieldSearchPath...)
2424
* @see SearchOperator#near(Point, Number, Iterable)
2525
* @since 4.7
2626
*/
27-
@Evolving
27+
@Sealed
2828
@Beta(Beta.Reason.CLIENT)
2929
public interface GeoNearSearchOperator extends SearchOperator {
3030
@Override

driver-core/src/main/com/mongodb/client/model/search/Log1pSearchScoreExpression.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#log1pExpression(SearchScoreExpression)
2323
* @since 4.7
2424
*/
25-
@Evolving
25+
@Sealed
2626
@Beta(Beta.Reason.CLIENT)
2727
public interface Log1pSearchScoreExpression extends SearchScoreExpression {
2828
}

0 commit comments

Comments
 (0)