Skip to content

Commit 8e332b6

Browse files
authored
Added missed API visibility annotations for public APIs and enable the check at the build time (opensearch-project#12872)
* Added missed API visibility annotations for public APIs and enable the check at the build time Signed-off-by: Andriy Redko <andriy.redko@aiven.io> * Address code review comments Signed-off-by: Andriy Redko <andriy.redko@aiven.io> --------- Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
1 parent ac0bb83 commit 8e332b6

Some content is hidden

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

61 files changed

+203
-57
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
106106
### Dependencies
107107

108108
### Changed
109+
- [BWC and API enforcement] Enforcing the presence of API annotations at build time ([#12872](https://github.com/opensearch-project/OpenSearch/pull/12872))
109110

110111
### Deprecated
111112

server/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ tasks.withType(JavaCompile).configureEach {
141141

142142
compileJava {
143143
options.compilerArgs += ['-processor', ['org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor',
144-
'org.opensearch.common.annotation.processor.ApiAnnotationProcessor'].join(','), '-AcontinueOnFailingChecks']
144+
'org.opensearch.common.annotation.processor.ApiAnnotationProcessor'].join(',')]
145145
}
146146

147147
tasks.named("internalClusterTest").configure {

server/src/main/java/org/opensearch/action/ActionModule.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@
294294
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
295295
import org.opensearch.cluster.node.DiscoveryNodes;
296296
import org.opensearch.common.NamedRegistry;
297+
import org.opensearch.common.annotation.PublicApi;
297298
import org.opensearch.common.inject.AbstractModule;
298299
import org.opensearch.common.inject.TypeLiteral;
299300
import org.opensearch.common.inject.multibindings.MapBinder;
@@ -1052,8 +1053,9 @@ public RestController getRestController() {
10521053
* <p>
10531054
* This class is modeled after {@link NamedRegistry} but provides both register and unregister capabilities.
10541055
*
1055-
* @opensearch.internal
1056+
* @opensearch.api
10561057
*/
1058+
@PublicApi(since = "2.7.0")
10571059
public static class DynamicActionRegistry {
10581060
// This is the unmodifiable actions map created during node bootstrap, which
10591061
// will continue to link ActionType and TransportAction pairs from core and plugin

server/src/main/java/org/opensearch/action/ActionRequest.java

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
package org.opensearch.action;
3434

35+
import org.opensearch.common.annotation.PublicApi;
3536
import org.opensearch.core.common.io.stream.StreamInput;
3637
import org.opensearch.core.common.io.stream.StreamOutput;
3738
import org.opensearch.transport.TransportRequest;
@@ -43,6 +44,7 @@
4344
*
4445
* @opensearch.api
4546
*/
47+
@PublicApi(since = "1.0.0")
4648
public abstract class ActionRequest extends TransportRequest {
4749

4850
public ActionRequest() {

server/src/main/java/org/opensearch/action/ActionType.java

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
package org.opensearch.action;
3434

35+
import org.opensearch.common.annotation.PublicApi;
3536
import org.opensearch.common.settings.Settings;
3637
import org.opensearch.core.action.ActionResponse;
3738
import org.opensearch.core.common.io.stream.StreamInput;
@@ -43,6 +44,7 @@
4344
*
4445
* @opensearch.api
4546
*/
47+
@PublicApi(since = "1.0.0")
4648
public class ActionType<Response extends ActionResponse> {
4749

4850
private final String name;

server/src/main/java/org/opensearch/action/support/TransportAction.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.logging.log4j.Logger;
3737
import org.opensearch.action.ActionRequest;
3838
import org.opensearch.action.ActionRequestValidationException;
39+
import org.opensearch.common.annotation.PublicApi;
3940
import org.opensearch.common.lease.Releasable;
4041
import org.opensearch.common.lease.Releasables;
4142
import org.opensearch.common.util.concurrent.ThreadContext;
@@ -52,8 +53,9 @@
5253
/**
5354
* Base class for a transport action
5455
*
55-
* @opensearch.internal
56+
* @opensearch.api
5657
*/
58+
@PublicApi(since = "1.0.0")
5759
public abstract class TransportAction<Request extends ActionRequest, Response extends ActionResponse> {
5860

5961
public final String actionName;

server/src/main/java/org/opensearch/client/node/NodeClient.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.opensearch.client.Client;
4040
import org.opensearch.client.support.AbstractClient;
4141
import org.opensearch.cluster.node.DiscoveryNode;
42+
import org.opensearch.common.annotation.PublicApi;
4243
import org.opensearch.common.settings.Settings;
4344
import org.opensearch.core.action.ActionListener;
4445
import org.opensearch.core.action.ActionResponse;
@@ -53,8 +54,9 @@
5354
/**
5455
* Client that executes actions on the local node.
5556
*
56-
* @opensearch.internal
57+
* @opensearch.api
5758
*/
59+
@PublicApi(since = "1.0.0")
5860
public class NodeClient extends AbstractClient {
5961

6062
private DynamicActionRegistry actionRegistry;

server/src/main/java/org/opensearch/common/inject/Binder.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
3233
import org.opensearch.common.inject.binder.AnnotatedBindingBuilder;
3334
import org.opensearch.common.inject.binder.AnnotatedConstantBindingBuilder;
3435
import org.opensearch.common.inject.binder.LinkedBindingBuilder;
@@ -198,8 +199,9 @@
198199
* @author jessewilson@google.com (Jesse Wilson)
199200
* @author kevinb@google.com (Kevin Bourrillion)
200201
*
201-
* @opensearch.internal
202+
* @opensearch.api
202203
*/
204+
@PublicApi(since = "1.0.0")
203205
public interface Binder {
204206

205207
/**

server/src/main/java/org/opensearch/common/inject/Binding.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
3233
import org.opensearch.common.inject.spi.BindingScopingVisitor;
3334
import org.opensearch.common.inject.spi.BindingTargetVisitor;
3435
import org.opensearch.common.inject.spi.Element;
@@ -69,8 +70,9 @@
6970
* @author crazybob@google.com (Bob Lee)
7071
* @author jessewilson@google.com (Jesse Wilson)
7172
*
72-
* @opensearch.internal
73+
* @opensearch.api
7374
*/
75+
@PublicApi(since = "1.0.0")
7476
public interface Binding<T> extends Element {
7577

7678
/**

server/src/main/java/org/opensearch/common/inject/ConfigurationException.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
3233
import org.opensearch.common.inject.internal.Errors;
3334
import org.opensearch.common.inject.spi.Message;
3435

@@ -46,8 +47,9 @@
4647
* @author jessewilson@google.com (Jesse Wilson)
4748
* @since 2.0
4849
*
49-
* @opensearch.internal
50+
* @opensearch.api
5051
*/
52+
@PublicApi(since = "1.0.0")
5153
public final class ConfigurationException extends RuntimeException {
5254
private final Set<Message> messages;
5355
private Object partialValue = null;

server/src/main/java/org/opensearch/common/inject/Injector.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
import java.util.List;
3335

3436
/**
@@ -54,8 +56,9 @@
5456
* @author crazybob@google.com (Bob Lee)
5557
* @author jessewilson@google.com (Jesse Wilson)
5658
*
57-
* @opensearch.internal
59+
* @opensearch.api
5860
*/
61+
@PublicApi(since = "1.0.0")
5962
public interface Injector {
6063

6164
/**

server/src/main/java/org/opensearch/common/inject/Key.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
3233
import org.opensearch.common.inject.internal.Annotations;
3334
import org.opensearch.common.inject.internal.MoreTypes;
3435
import org.opensearch.common.inject.internal.ToStringBuilder;
@@ -59,8 +60,9 @@
5960
*
6061
* @author crazybob@google.com (Bob Lee)
6162
*
62-
* @opensearch.internal
63+
* @opensearch.api
6364
*/
65+
@PublicApi(since = "1.0.0")
6466
public class Key<T> {
6567

6668
private final AnnotationStrategy annotationStrategy;

server/src/main/java/org/opensearch/common/inject/MembersInjector.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
/**
3335
* Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
3436
* presence or absence of an injectable constructor.
@@ -38,8 +40,9 @@
3840
* @author jessewilson@google.com (Jesse Wilson)
3941
* @since 2.0
4042
*
41-
* @opensearch.internal
43+
* @opensearch.api
4244
*/
45+
@PublicApi(since = "1.0.0")
4346
public interface MembersInjector<T> {
4447

4548
/**

server/src/main/java/org/opensearch/common/inject/Module.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
/**
3335
* A module contributes configuration information, typically interface
3436
* bindings, which will be used to create an {@link Injector}. A Guice-based
@@ -43,8 +45,9 @@
4345
* Use scope and binding annotations on these methods to configure the
4446
* bindings.
4547
*
46-
* @opensearch.internal
48+
* @opensearch.api
4749
*/
50+
@PublicApi(since = "1.0.0")
4851
public interface Module {
4952

5053
/**

server/src/main/java/org/opensearch/common/inject/PrivateBinder.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
3233
import org.opensearch.common.inject.binder.AnnotatedElementBuilder;
3334

3435
/**
@@ -38,8 +39,9 @@
3839
* @author jessewilson@google.com (Jesse Wilson)
3940
* @since 2.0
4041
*
41-
* @opensearch.internal
42+
* @opensearch.api
4243
*/
44+
@PublicApi(since = "1.0.0")
4345
public interface PrivateBinder extends Binder {
4446

4547
/**

server/src/main/java/org/opensearch/common/inject/Provider.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
/**
3335
* An object capable of providing instances of type {@code T}. Providers are used in numerous ways
3436
* by Guice:
@@ -50,8 +52,9 @@
5052
* @param <T> the type of object this provides
5153
* @author crazybob@google.com (Bob Lee)
5254
*
53-
* @opensearch.internal
55+
* @opensearch.api
5456
*/
57+
@PublicApi(since = "1.0.0")
5558
public interface Provider<T> {
5659

5760
/**

server/src/main/java/org/opensearch/common/inject/Scope.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
/**
3335
* A scope is a level of visibility that instances provided by Guice may have.
3436
* By default, an instance created by the {@link Injector} has <i>no scope</i>,
@@ -42,8 +44,9 @@
4244
*
4345
* @author crazybob@google.com (Bob Lee)
4446
*
45-
* @opensearch.internal
47+
* @opensearch.api
4648
*/
49+
@PublicApi(since = "1.0.0")
4750
public interface Scope {
4851

4952
/**

server/src/main/java/org/opensearch/common/inject/Stage.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,16 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
/**
3335
* The stage we're running in.
3436
*
3537
* @author crazybob@google.com (Bob Lee)
3638
*
37-
* @opensearch.internal
39+
* @opensearch.api
3840
*/
41+
@PublicApi(since = "1.0.0")
3942
public enum Stage {
4043

4144
/**

server/src/main/java/org/opensearch/common/inject/TypeLiteral.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
package org.opensearch.common.inject;
3131

32+
import org.opensearch.common.annotation.PublicApi;
3233
import org.opensearch.common.inject.internal.MoreTypes;
3334
import org.opensearch.common.inject.util.Types;
3435

@@ -77,8 +78,9 @@
7778
* @author crazybob@google.com (Bob Lee)
7879
* @author jessewilson@google.com (Jesse Wilson)
7980
*
80-
* @opensearch.internal
81+
* @opensearch.api
8182
*/
83+
@PublicApi(since = "1.0.0")
8284
public class TypeLiteral<T> {
8385

8486
final Class<? super T> rawType;

server/src/main/java/org/opensearch/common/inject/binder/AnnotatedBindingBuilder.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,18 @@
2929

3030
package org.opensearch.common.inject.binder;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
import java.lang.annotation.Annotation;
3335

3436
/**
3537
* See the EDSL examples at {@link org.opensearch.common.inject.Binder}.
3638
*
3739
* @author crazybob@google.com (Bob Lee)
3840
*
39-
* @opensearch.internal
41+
* @opensearch.api
4042
*/
43+
@PublicApi(since = "1.0.0")
4144
public interface AnnotatedBindingBuilder<T> extends LinkedBindingBuilder<T> {
4245

4346
/**

server/src/main/java/org/opensearch/common/inject/binder/AnnotatedConstantBindingBuilder.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,18 @@
2929

3030
package org.opensearch.common.inject.binder;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
import java.lang.annotation.Annotation;
3335

3436
/**
3537
* See the EDSL examples at {@link org.opensearch.common.inject.Binder}.
3638
*
3739
* @author crazybob@google.com (Bob Lee)
3840
*
39-
* @opensearch.internal
41+
* @opensearch.api
4042
*/
43+
@PublicApi(since = "1.0.0")
4144
public interface AnnotatedConstantBindingBuilder {
4245

4346
/**

server/src/main/java/org/opensearch/common/inject/binder/AnnotatedElementBuilder.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
package org.opensearch.common.inject.binder;
3131

32+
import org.opensearch.common.annotation.PublicApi;
33+
3234
import java.lang.annotation.Annotation;
3335

3436
/**
@@ -37,8 +39,9 @@
3739
* @author jessewilson@google.com (Jesse Wilson)
3840
* @since 2.0
3941
*
40-
* @opensearch.internal
42+
* @opensearch.api
4143
*/
44+
@PublicApi(since = "1.0.0")
4245
public interface AnnotatedElementBuilder {
4346

4447
/**

0 commit comments

Comments
 (0)