From 80c3c992a66aa21ccf3e12e38000316e45f97e64 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Fri, 12 Apr 2019 17:37:13 -0700 Subject: [PATCH] core: Move io.grpc to grpc-api io.grpc has fewer dependencies than io.grpc.internal. Moving it to a separate artifact lets users use the API without bringing in the deps. If the library has an optional dependency on grpc, that can be quite convenient. We now version-pin both grpc-api and grpc-core, since both contain internal APIs. I had to change a few tests in grpc-api to avoid FakeClock. Moving FakeClock to grpc-api was difficult because it uses io.grpc.internal.TimeProvider, which can't be moved since it is a production class. Having grpc-api's tests depend on grpc-core's test classes would be weird and cause a circular dependincy. Having grpc-api's tests depend on grpc-core is likely possible, but weird and fairly unnecessary at this point. So instead I rewrote the tests to avoid FakeClock. Fixes #1447 --- BUILD.bazel | 4 +- all/build.gradle | 1 + alts/BUILD.bazel | 4 +- api/BUILD.bazel | 14 ++++ api/build.gradle | 32 +++++++++ .../jmh/java/io/grpc/AttributesBenchmark.java | 0 .../java/io/grpc/CallOptionsBenchmark.java | 0 .../grpc/DecompressorRegistryBenchmark.java | 0 .../src/jmh/java/io/grpc/StatusBenchmark.java | 0 .../src/main/java/io/grpc/Attributes.java | 0 .../src/main/java/io/grpc/BinaryLog.java | 0 .../main/java/io/grpc/BindableService.java | 0 .../main/java/io/grpc/CallCredentials.java | 0 .../main/java/io/grpc/CallCredentials2.java | 0 .../src/main/java/io/grpc/CallOptions.java | 0 .../src/main/java/io/grpc/Channel.java | 0 .../src/main/java/io/grpc/ChannelLogger.java | 0 .../src/main/java/io/grpc/ClientCall.java | 0 .../main/java/io/grpc/ClientInterceptor.java | 0 .../main/java/io/grpc/ClientInterceptors.java | 0 .../main/java/io/grpc/ClientStreamTracer.java | 0 .../src/main/java/io/grpc/Codec.java | 0 .../src/main/java/io/grpc/Compressor.java | 0 .../main/java/io/grpc/CompressorRegistry.java | 0 .../main/java/io/grpc/ConnectivityState.java | 0 .../java/io/grpc/ConnectivityStateInfo.java | 0 .../src/main/java/io/grpc/Contexts.java | 0 .../src/main/java/io/grpc/Decompressor.java | 0 .../java/io/grpc/DecompressorRegistry.java | 0 .../src/main/java/io/grpc/Drainable.java | 0 .../java/io/grpc/EquivalentAddressGroup.java | 0 .../main/java/io/grpc/ExperimentalApi.java | 0 .../io/grpc/ForwardingChannelBuilder.java | 0 .../java/io/grpc/ForwardingClientCall.java | 0 .../io/grpc/ForwardingClientCallListener.java | 0 .../java/io/grpc/ForwardingServerCall.java | 0 .../io/grpc/ForwardingServerCallListener.java | 0 {core => api}/src/main/java/io/grpc/Grpc.java | 0 .../main/java/io/grpc/HandlerRegistry.java | 0 .../grpc/HttpConnectProxiedSocketAddress.java | 0 .../src/main/java/io/grpc/Internal.java | 0 .../main/java/io/grpc/InternalChannelz.java | 0 .../io/grpc/InternalClientInterceptors.java | 0 .../io/grpc/InternalDecompressorRegistry.java | 0 .../java/io/grpc/InternalInstrumented.java | 0 .../java/io/grpc/InternalKnownTransport.java | 0 .../src/main/java/io/grpc/InternalLogId.java | 0 .../grpc/InternalManagedChannelProvider.java | 0 .../main/java/io/grpc/InternalMetadata.java | 0 .../io/grpc/InternalMethodDescriptor.java | 0 .../io/grpc/InternalNotifyOnServerBuild.java | 0 .../io/grpc/InternalServerInterceptors.java | 0 .../io/grpc/InternalServiceProviders.java | 0 .../src/main/java/io/grpc/InternalStatus.java | 0 .../main/java/io/grpc/InternalWithLogId.java | 0 .../src/main/java/io/grpc/KnownLength.java | 0 .../src/main/java/io/grpc/LoadBalancer.java | 0 .../java/io/grpc/LoadBalancerProvider.java | 0 .../java/io/grpc/LoadBalancerRegistry.java | 0 .../src/main/java/io/grpc/ManagedChannel.java | 0 .../java/io/grpc/ManagedChannelBuilder.java | 0 .../java/io/grpc/ManagedChannelProvider.java | 0 .../src/main/java/io/grpc/Metadata.java | 0 .../main/java/io/grpc/MethodDescriptor.java | 0 .../src/main/java/io/grpc/NameResolver.java | 0 .../java/io/grpc/NameResolverProvider.java | 0 .../io/grpc/PartialForwardingClientCall.java | 0 .../PartialForwardingClientCallListener.java | 0 .../io/grpc/PartialForwardingServerCall.java | 0 .../PartialForwardingServerCallListener.java | 0 .../io/grpc/PickFirstBalancerFactory.java | 0 .../java/io/grpc/ProxiedSocketAddress.java | 0 .../src/main/java/io/grpc/ProxyDetector.java | 0 .../src/main/java/io/grpc/SecurityLevel.java | 0 .../src/main/java/io/grpc/Server.java | 0 .../src/main/java/io/grpc/ServerBuilder.java | 0 .../src/main/java/io/grpc/ServerCall.java | 0 .../main/java/io/grpc/ServerCallHandler.java | 0 .../main/java/io/grpc/ServerInterceptor.java | 0 .../main/java/io/grpc/ServerInterceptors.java | 0 .../java/io/grpc/ServerMethodDefinition.java | 0 .../src/main/java/io/grpc/ServerProvider.java | 0 .../java/io/grpc/ServerServiceDefinition.java | 0 .../main/java/io/grpc/ServerStreamTracer.java | 0 .../java/io/grpc/ServerTransportFilter.java | 0 .../main/java/io/grpc/ServiceDescriptor.java | 0 .../main/java/io/grpc/ServiceProviders.java | 0 .../src/main/java/io/grpc/Status.java | 0 .../main/java/io/grpc/StatusException.java | 0 .../java/io/grpc/StatusRuntimeException.java | 0 .../src/main/java/io/grpc/StreamTracer.java | 0 .../java/io/grpc/SynchronizationContext.java | 0 .../src/main/java/io/grpc/package-info.java | 0 .../src/test/java/io/grpc/AttributesTest.java | 0 .../test/java/io/grpc/CallOptionsTest.java | 0 .../java/io/grpc/ClientInterceptorsTest.java | 0 .../io/grpc/ConnectivityStateInfoTest.java | 0 .../src/test/java/io/grpc/ContextsTest.java | 30 +++++++-- .../io/grpc/DecompressorRegistryTest.java | 0 .../io/grpc/ForwardingChannelBuilderTest.java | 0 .../ForwardingScheduledExecutorService.java | 54 +++++++++++++++ .../ForwardingServerCallListenerTest.java | 0 .../test/java/io/grpc/ForwardingTestUtil.java | 0 .../test/java/io/grpc/IntegerMarshaller.java | 0 .../java/io/grpc/InternalChannelzTest.java | 0 .../test/java/io/grpc/InternalLogIdTest.java | 0 .../io/grpc/LoadBalancerRegistryTest.java | 0 .../test/java/io/grpc/LoadBalancerTest.java | 0 .../io/grpc/ManagedChannelProviderTest.java | 0 .../src/test/java/io/grpc/MetadataTest.java | 0 .../java/io/grpc/MethodDescriptorTest.java | 0 .../io/grpc/NameResolverProviderTest.java | 0 .../io/grpc/PickFirstBalancerFactoryTest.java | 0 .../java/io/grpc/ReplacingClassLoader.java | 0 .../java/io/grpc/ServerInterceptorsTest.java | 0 .../io/grpc/ServerServiceDefinitionTest.java | 0 .../java/io/grpc/ServiceDescriptorTest.java | 0 .../java/io/grpc/ServiceProvidersTest.java | 0 .../ServiceProvidersTestAbstractProvider.java | 0 .../io/grpc/ServiceProvidersTestUtil.java | 0 .../java/io/grpc/StatusExceptionTest.java | 0 .../io/grpc/StatusRuntimeExceptionTest.java | 0 .../src/test/java/io/grpc/StatusTest.java | 0 .../test/java/io/grpc/StringMarshaller.java | 0 .../io/grpc/SynchronizationContextTest.java | 65 ++++++++++++------- ...iceProvidersTestAbstractProvider-empty.txt | 0 ...stractProvider-failAtAvailableProvider.txt | 0 ...estAbstractProvider-failAtInitProvider.txt | 0 ...bstractProvider-failAtPriorityProvider.txt | 0 ...sTestAbstractProvider-multipleProvider.txt | 0 ...stAbstractProvider-unavailableProvider.txt | 0 ...tAbstractProvider-unknownClassProvider.txt | 0 auth/BUILD.bazel | 2 +- auth/build.gradle | 2 +- build.gradle | 3 +- core/BUILD.bazel | 17 ++--- core/build.gradle | 18 +---- examples/BUILD.bazel | 8 +-- examples/example-alts/BUILD.bazel | 2 +- examples/example-gauth/BUILD.bazel | 10 +-- examples/example-tls/BUILD.bazel | 8 +-- grpclb/BUILD.bazel | 2 +- netty/BUILD.bazel | 2 +- okhttp/BUILD.bazel | 2 +- protobuf-lite/BUILD.bazel | 2 +- protobuf-lite/build.gradle | 3 +- protobuf-nano/BUILD.bazel | 2 +- protobuf-nano/build.gradle | 2 +- protobuf/BUILD.bazel | 2 +- protobuf/build.gradle | 2 +- services/BUILD.bazel | 6 +- services/build.gradle | 3 +- settings.gradle | 2 + stub/BUILD.bazel | 2 +- stub/build.gradle | 2 +- testing/BUILD.bazel | 4 +- xds/build.gradle | 3 +- 157 files changed, 220 insertions(+), 95 deletions(-) create mode 100644 api/BUILD.bazel create mode 100644 api/build.gradle rename {core => api}/src/jmh/java/io/grpc/AttributesBenchmark.java (100%) rename {core => api}/src/jmh/java/io/grpc/CallOptionsBenchmark.java (100%) rename {core => api}/src/jmh/java/io/grpc/DecompressorRegistryBenchmark.java (100%) rename {core => api}/src/jmh/java/io/grpc/StatusBenchmark.java (100%) rename {core => api}/src/main/java/io/grpc/Attributes.java (100%) rename {core => api}/src/main/java/io/grpc/BinaryLog.java (100%) rename {core => api}/src/main/java/io/grpc/BindableService.java (100%) rename {core => api}/src/main/java/io/grpc/CallCredentials.java (100%) rename {core => api}/src/main/java/io/grpc/CallCredentials2.java (100%) rename {core => api}/src/main/java/io/grpc/CallOptions.java (100%) rename {core => api}/src/main/java/io/grpc/Channel.java (100%) rename {core => api}/src/main/java/io/grpc/ChannelLogger.java (100%) rename {core => api}/src/main/java/io/grpc/ClientCall.java (100%) rename {core => api}/src/main/java/io/grpc/ClientInterceptor.java (100%) rename {core => api}/src/main/java/io/grpc/ClientInterceptors.java (100%) rename {core => api}/src/main/java/io/grpc/ClientStreamTracer.java (100%) rename {core => api}/src/main/java/io/grpc/Codec.java (100%) rename {core => api}/src/main/java/io/grpc/Compressor.java (100%) rename {core => api}/src/main/java/io/grpc/CompressorRegistry.java (100%) rename {core => api}/src/main/java/io/grpc/ConnectivityState.java (100%) rename {core => api}/src/main/java/io/grpc/ConnectivityStateInfo.java (100%) rename {core => api}/src/main/java/io/grpc/Contexts.java (100%) rename {core => api}/src/main/java/io/grpc/Decompressor.java (100%) rename {core => api}/src/main/java/io/grpc/DecompressorRegistry.java (100%) rename {core => api}/src/main/java/io/grpc/Drainable.java (100%) rename {core => api}/src/main/java/io/grpc/EquivalentAddressGroup.java (100%) rename {core => api}/src/main/java/io/grpc/ExperimentalApi.java (100%) rename {core => api}/src/main/java/io/grpc/ForwardingChannelBuilder.java (100%) rename {core => api}/src/main/java/io/grpc/ForwardingClientCall.java (100%) rename {core => api}/src/main/java/io/grpc/ForwardingClientCallListener.java (100%) rename {core => api}/src/main/java/io/grpc/ForwardingServerCall.java (100%) rename {core => api}/src/main/java/io/grpc/ForwardingServerCallListener.java (100%) rename {core => api}/src/main/java/io/grpc/Grpc.java (100%) rename {core => api}/src/main/java/io/grpc/HandlerRegistry.java (100%) rename {core => api}/src/main/java/io/grpc/HttpConnectProxiedSocketAddress.java (100%) rename {core => api}/src/main/java/io/grpc/Internal.java (100%) rename {core => api}/src/main/java/io/grpc/InternalChannelz.java (100%) rename {core => api}/src/main/java/io/grpc/InternalClientInterceptors.java (100%) rename {core => api}/src/main/java/io/grpc/InternalDecompressorRegistry.java (100%) rename {core => api}/src/main/java/io/grpc/InternalInstrumented.java (100%) rename {core => api}/src/main/java/io/grpc/InternalKnownTransport.java (100%) rename {core => api}/src/main/java/io/grpc/InternalLogId.java (100%) rename {core => api}/src/main/java/io/grpc/InternalManagedChannelProvider.java (100%) rename {core => api}/src/main/java/io/grpc/InternalMetadata.java (100%) rename {core => api}/src/main/java/io/grpc/InternalMethodDescriptor.java (100%) rename {core => api}/src/main/java/io/grpc/InternalNotifyOnServerBuild.java (100%) rename {core => api}/src/main/java/io/grpc/InternalServerInterceptors.java (100%) rename {core => api}/src/main/java/io/grpc/InternalServiceProviders.java (100%) rename {core => api}/src/main/java/io/grpc/InternalStatus.java (100%) rename {core => api}/src/main/java/io/grpc/InternalWithLogId.java (100%) rename {core => api}/src/main/java/io/grpc/KnownLength.java (100%) rename {core => api}/src/main/java/io/grpc/LoadBalancer.java (100%) rename {core => api}/src/main/java/io/grpc/LoadBalancerProvider.java (100%) rename {core => api}/src/main/java/io/grpc/LoadBalancerRegistry.java (100%) rename {core => api}/src/main/java/io/grpc/ManagedChannel.java (100%) rename {core => api}/src/main/java/io/grpc/ManagedChannelBuilder.java (100%) rename {core => api}/src/main/java/io/grpc/ManagedChannelProvider.java (100%) rename {core => api}/src/main/java/io/grpc/Metadata.java (100%) rename {core => api}/src/main/java/io/grpc/MethodDescriptor.java (100%) rename {core => api}/src/main/java/io/grpc/NameResolver.java (100%) rename {core => api}/src/main/java/io/grpc/NameResolverProvider.java (100%) rename {core => api}/src/main/java/io/grpc/PartialForwardingClientCall.java (100%) rename {core => api}/src/main/java/io/grpc/PartialForwardingClientCallListener.java (100%) rename {core => api}/src/main/java/io/grpc/PartialForwardingServerCall.java (100%) rename {core => api}/src/main/java/io/grpc/PartialForwardingServerCallListener.java (100%) rename {core => api}/src/main/java/io/grpc/PickFirstBalancerFactory.java (100%) rename {core => api}/src/main/java/io/grpc/ProxiedSocketAddress.java (100%) rename {core => api}/src/main/java/io/grpc/ProxyDetector.java (100%) rename {core => api}/src/main/java/io/grpc/SecurityLevel.java (100%) rename {core => api}/src/main/java/io/grpc/Server.java (100%) rename {core => api}/src/main/java/io/grpc/ServerBuilder.java (100%) rename {core => api}/src/main/java/io/grpc/ServerCall.java (100%) rename {core => api}/src/main/java/io/grpc/ServerCallHandler.java (100%) rename {core => api}/src/main/java/io/grpc/ServerInterceptor.java (100%) rename {core => api}/src/main/java/io/grpc/ServerInterceptors.java (100%) rename {core => api}/src/main/java/io/grpc/ServerMethodDefinition.java (100%) rename {core => api}/src/main/java/io/grpc/ServerProvider.java (100%) rename {core => api}/src/main/java/io/grpc/ServerServiceDefinition.java (100%) rename {core => api}/src/main/java/io/grpc/ServerStreamTracer.java (100%) rename {core => api}/src/main/java/io/grpc/ServerTransportFilter.java (100%) rename {core => api}/src/main/java/io/grpc/ServiceDescriptor.java (100%) rename {core => api}/src/main/java/io/grpc/ServiceProviders.java (100%) rename {core => api}/src/main/java/io/grpc/Status.java (100%) rename {core => api}/src/main/java/io/grpc/StatusException.java (100%) rename {core => api}/src/main/java/io/grpc/StatusRuntimeException.java (100%) rename {core => api}/src/main/java/io/grpc/StreamTracer.java (100%) rename {core => api}/src/main/java/io/grpc/SynchronizationContext.java (100%) rename {core => api}/src/main/java/io/grpc/package-info.java (100%) rename {core => api}/src/test/java/io/grpc/AttributesTest.java (100%) rename {core => api}/src/test/java/io/grpc/CallOptionsTest.java (100%) rename {core => api}/src/test/java/io/grpc/ClientInterceptorsTest.java (100%) rename {core => api}/src/test/java/io/grpc/ConnectivityStateInfoTest.java (100%) rename {core => api}/src/test/java/io/grpc/ContextsTest.java (88%) rename {core => api}/src/test/java/io/grpc/DecompressorRegistryTest.java (100%) rename {core => api}/src/test/java/io/grpc/ForwardingChannelBuilderTest.java (100%) create mode 100644 api/src/test/java/io/grpc/ForwardingScheduledExecutorService.java rename {core => api}/src/test/java/io/grpc/ForwardingServerCallListenerTest.java (100%) rename {core => api}/src/test/java/io/grpc/ForwardingTestUtil.java (100%) rename {core => api}/src/test/java/io/grpc/IntegerMarshaller.java (100%) rename {core => api}/src/test/java/io/grpc/InternalChannelzTest.java (100%) rename {core => api}/src/test/java/io/grpc/InternalLogIdTest.java (100%) rename {core => api}/src/test/java/io/grpc/LoadBalancerRegistryTest.java (100%) rename {core => api}/src/test/java/io/grpc/LoadBalancerTest.java (100%) rename {core => api}/src/test/java/io/grpc/ManagedChannelProviderTest.java (100%) rename {core => api}/src/test/java/io/grpc/MetadataTest.java (100%) rename {core => api}/src/test/java/io/grpc/MethodDescriptorTest.java (100%) rename {core => api}/src/test/java/io/grpc/NameResolverProviderTest.java (100%) rename {core => api}/src/test/java/io/grpc/PickFirstBalancerFactoryTest.java (100%) rename {core => api}/src/test/java/io/grpc/ReplacingClassLoader.java (100%) rename {core => api}/src/test/java/io/grpc/ServerInterceptorsTest.java (100%) rename {core => api}/src/test/java/io/grpc/ServerServiceDefinitionTest.java (100%) rename {core => api}/src/test/java/io/grpc/ServiceDescriptorTest.java (100%) rename {core => api}/src/test/java/io/grpc/ServiceProvidersTest.java (100%) rename {core => api}/src/test/java/io/grpc/ServiceProvidersTestAbstractProvider.java (100%) rename {core => api}/src/test/java/io/grpc/ServiceProvidersTestUtil.java (100%) rename {core => api}/src/test/java/io/grpc/StatusExceptionTest.java (100%) rename {core => api}/src/test/java/io/grpc/StatusRuntimeExceptionTest.java (100%) rename {core => api}/src/test/java/io/grpc/StatusTest.java (100%) rename {core => api}/src/test/java/io/grpc/StringMarshaller.java (100%) rename {core => api}/src/test/java/io/grpc/SynchronizationContextTest.java (82%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt (100%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt (100%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtInitProvider.txt (100%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt (100%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-multipleProvider.txt (100%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unavailableProvider.txt (100%) rename {core => api}/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unknownClassProvider.txt (100%) diff --git a/BUILD.bazel b/BUILD.bazel index a1b416eec7..4bf8cdbc9b 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -29,7 +29,7 @@ java_library( name = "java_grpc_library_deps__do_not_reference", visibility = ["//visibility:public"], exports = [ - "//core", + "//api", "//protobuf", "//stub", "//stub:javax_annotation", @@ -43,7 +43,7 @@ java_library( name = "java_lite_grpc_library_deps__do_not_reference", visibility = ["//visibility:public"], exports = [ - "//core", + "//api", "//protobuf-lite", "//stub", "//stub:javax_annotation", diff --git a/all/build.gradle b/all/build.gradle index a20246cbc4..85586b0e50 100644 --- a/all/build.gradle +++ b/all/build.gradle @@ -11,6 +11,7 @@ buildscript { } def subprojects = [ + project(':grpc-api'), project(':grpc-auth'), project(':grpc-core'), project(':grpc-context'), diff --git a/alts/BUILD.bazel b/alts/BUILD.bazel index 8924d7f1cc..6512c56f22 100644 --- a/alts/BUILD.bazel +++ b/alts/BUILD.bazel @@ -8,7 +8,7 @@ java_library( deps = [ ":handshaker_java_grpc", ":handshaker_java_proto", - "//core", + "//api", "//core:internal", "//netty", "//stub", @@ -35,8 +35,8 @@ java_library( deps = [ ":alts_internal", ":handshaker_java_grpc", + "//api", "//auth", - "//core", "//core:internal", "//netty", "@com_google_auth_google_auth_library_oauth2_http//jar", diff --git a/api/BUILD.bazel b/api/BUILD.bazel new file mode 100644 index 0000000000..b3ff0e3536 --- /dev/null +++ b/api/BUILD.bazel @@ -0,0 +1,14 @@ +java_library( + name = "api", + srcs = glob([ + "src/main/java/**/*.java", + ]), + visibility = ["//visibility:public"], + deps = [ + "//context", + "@com_google_code_findbugs_jsr305//jar", + "@com_google_guava_failureaccess//jar", # future transitive dep of Guava. See #5214 + "@com_google_guava_guava//jar", + "@com_google_j2objc_j2objc_annotations//jar", + ], +) diff --git a/api/build.gradle b/api/build.gradle new file mode 100644 index 0000000000..a7749687ad --- /dev/null +++ b/api/build.gradle @@ -0,0 +1,32 @@ +description = 'gRPC: API' + +dependencies { + compile project(':grpc-context'), + libraries.errorprone, + libraries.jsr305, + libraries.animalsniffer_annotations + compile (libraries.guava) { + // prefer 2.3.2 from libraries instead of 2.1.3 + exclude group: 'com.google.errorprone', module: 'error_prone_annotations' + // prefer 3.0.2 from libraries instead of 3.0.1 + exclude group: 'com.google.code.findbugs', module: 'jsr305' + // prefer 1.17 from libraries instead of 1.14 + exclude group: 'org.codehaus.mojo', module: 'animal-sniffer-annotations' + } + + testCompile project(':grpc-context').sourceSets.test.output, + project(':grpc-testing'), + project(':grpc-grpclb'), + libraries.guava_testlib + + jmh project(':grpc-core') + + signature "org.codehaus.mojo.signature:java17:1.0@signature" + signature "net.sf.androidscents.signature:android-api-level-14:4.0_r4@signature" +} + +javadoc { + // We want io.grpc.Internal, but not io.grpc.Internal* + exclude 'io/grpc/Internal?*.java' + exclude 'io/grpc/internal/**' +} diff --git a/core/src/jmh/java/io/grpc/AttributesBenchmark.java b/api/src/jmh/java/io/grpc/AttributesBenchmark.java similarity index 100% rename from core/src/jmh/java/io/grpc/AttributesBenchmark.java rename to api/src/jmh/java/io/grpc/AttributesBenchmark.java diff --git a/core/src/jmh/java/io/grpc/CallOptionsBenchmark.java b/api/src/jmh/java/io/grpc/CallOptionsBenchmark.java similarity index 100% rename from core/src/jmh/java/io/grpc/CallOptionsBenchmark.java rename to api/src/jmh/java/io/grpc/CallOptionsBenchmark.java diff --git a/core/src/jmh/java/io/grpc/DecompressorRegistryBenchmark.java b/api/src/jmh/java/io/grpc/DecompressorRegistryBenchmark.java similarity index 100% rename from core/src/jmh/java/io/grpc/DecompressorRegistryBenchmark.java rename to api/src/jmh/java/io/grpc/DecompressorRegistryBenchmark.java diff --git a/core/src/jmh/java/io/grpc/StatusBenchmark.java b/api/src/jmh/java/io/grpc/StatusBenchmark.java similarity index 100% rename from core/src/jmh/java/io/grpc/StatusBenchmark.java rename to api/src/jmh/java/io/grpc/StatusBenchmark.java diff --git a/core/src/main/java/io/grpc/Attributes.java b/api/src/main/java/io/grpc/Attributes.java similarity index 100% rename from core/src/main/java/io/grpc/Attributes.java rename to api/src/main/java/io/grpc/Attributes.java diff --git a/core/src/main/java/io/grpc/BinaryLog.java b/api/src/main/java/io/grpc/BinaryLog.java similarity index 100% rename from core/src/main/java/io/grpc/BinaryLog.java rename to api/src/main/java/io/grpc/BinaryLog.java diff --git a/core/src/main/java/io/grpc/BindableService.java b/api/src/main/java/io/grpc/BindableService.java similarity index 100% rename from core/src/main/java/io/grpc/BindableService.java rename to api/src/main/java/io/grpc/BindableService.java diff --git a/core/src/main/java/io/grpc/CallCredentials.java b/api/src/main/java/io/grpc/CallCredentials.java similarity index 100% rename from core/src/main/java/io/grpc/CallCredentials.java rename to api/src/main/java/io/grpc/CallCredentials.java diff --git a/core/src/main/java/io/grpc/CallCredentials2.java b/api/src/main/java/io/grpc/CallCredentials2.java similarity index 100% rename from core/src/main/java/io/grpc/CallCredentials2.java rename to api/src/main/java/io/grpc/CallCredentials2.java diff --git a/core/src/main/java/io/grpc/CallOptions.java b/api/src/main/java/io/grpc/CallOptions.java similarity index 100% rename from core/src/main/java/io/grpc/CallOptions.java rename to api/src/main/java/io/grpc/CallOptions.java diff --git a/core/src/main/java/io/grpc/Channel.java b/api/src/main/java/io/grpc/Channel.java similarity index 100% rename from core/src/main/java/io/grpc/Channel.java rename to api/src/main/java/io/grpc/Channel.java diff --git a/core/src/main/java/io/grpc/ChannelLogger.java b/api/src/main/java/io/grpc/ChannelLogger.java similarity index 100% rename from core/src/main/java/io/grpc/ChannelLogger.java rename to api/src/main/java/io/grpc/ChannelLogger.java diff --git a/core/src/main/java/io/grpc/ClientCall.java b/api/src/main/java/io/grpc/ClientCall.java similarity index 100% rename from core/src/main/java/io/grpc/ClientCall.java rename to api/src/main/java/io/grpc/ClientCall.java diff --git a/core/src/main/java/io/grpc/ClientInterceptor.java b/api/src/main/java/io/grpc/ClientInterceptor.java similarity index 100% rename from core/src/main/java/io/grpc/ClientInterceptor.java rename to api/src/main/java/io/grpc/ClientInterceptor.java diff --git a/core/src/main/java/io/grpc/ClientInterceptors.java b/api/src/main/java/io/grpc/ClientInterceptors.java similarity index 100% rename from core/src/main/java/io/grpc/ClientInterceptors.java rename to api/src/main/java/io/grpc/ClientInterceptors.java diff --git a/core/src/main/java/io/grpc/ClientStreamTracer.java b/api/src/main/java/io/grpc/ClientStreamTracer.java similarity index 100% rename from core/src/main/java/io/grpc/ClientStreamTracer.java rename to api/src/main/java/io/grpc/ClientStreamTracer.java diff --git a/core/src/main/java/io/grpc/Codec.java b/api/src/main/java/io/grpc/Codec.java similarity index 100% rename from core/src/main/java/io/grpc/Codec.java rename to api/src/main/java/io/grpc/Codec.java diff --git a/core/src/main/java/io/grpc/Compressor.java b/api/src/main/java/io/grpc/Compressor.java similarity index 100% rename from core/src/main/java/io/grpc/Compressor.java rename to api/src/main/java/io/grpc/Compressor.java diff --git a/core/src/main/java/io/grpc/CompressorRegistry.java b/api/src/main/java/io/grpc/CompressorRegistry.java similarity index 100% rename from core/src/main/java/io/grpc/CompressorRegistry.java rename to api/src/main/java/io/grpc/CompressorRegistry.java diff --git a/core/src/main/java/io/grpc/ConnectivityState.java b/api/src/main/java/io/grpc/ConnectivityState.java similarity index 100% rename from core/src/main/java/io/grpc/ConnectivityState.java rename to api/src/main/java/io/grpc/ConnectivityState.java diff --git a/core/src/main/java/io/grpc/ConnectivityStateInfo.java b/api/src/main/java/io/grpc/ConnectivityStateInfo.java similarity index 100% rename from core/src/main/java/io/grpc/ConnectivityStateInfo.java rename to api/src/main/java/io/grpc/ConnectivityStateInfo.java diff --git a/core/src/main/java/io/grpc/Contexts.java b/api/src/main/java/io/grpc/Contexts.java similarity index 100% rename from core/src/main/java/io/grpc/Contexts.java rename to api/src/main/java/io/grpc/Contexts.java diff --git a/core/src/main/java/io/grpc/Decompressor.java b/api/src/main/java/io/grpc/Decompressor.java similarity index 100% rename from core/src/main/java/io/grpc/Decompressor.java rename to api/src/main/java/io/grpc/Decompressor.java diff --git a/core/src/main/java/io/grpc/DecompressorRegistry.java b/api/src/main/java/io/grpc/DecompressorRegistry.java similarity index 100% rename from core/src/main/java/io/grpc/DecompressorRegistry.java rename to api/src/main/java/io/grpc/DecompressorRegistry.java diff --git a/core/src/main/java/io/grpc/Drainable.java b/api/src/main/java/io/grpc/Drainable.java similarity index 100% rename from core/src/main/java/io/grpc/Drainable.java rename to api/src/main/java/io/grpc/Drainable.java diff --git a/core/src/main/java/io/grpc/EquivalentAddressGroup.java b/api/src/main/java/io/grpc/EquivalentAddressGroup.java similarity index 100% rename from core/src/main/java/io/grpc/EquivalentAddressGroup.java rename to api/src/main/java/io/grpc/EquivalentAddressGroup.java diff --git a/core/src/main/java/io/grpc/ExperimentalApi.java b/api/src/main/java/io/grpc/ExperimentalApi.java similarity index 100% rename from core/src/main/java/io/grpc/ExperimentalApi.java rename to api/src/main/java/io/grpc/ExperimentalApi.java diff --git a/core/src/main/java/io/grpc/ForwardingChannelBuilder.java b/api/src/main/java/io/grpc/ForwardingChannelBuilder.java similarity index 100% rename from core/src/main/java/io/grpc/ForwardingChannelBuilder.java rename to api/src/main/java/io/grpc/ForwardingChannelBuilder.java diff --git a/core/src/main/java/io/grpc/ForwardingClientCall.java b/api/src/main/java/io/grpc/ForwardingClientCall.java similarity index 100% rename from core/src/main/java/io/grpc/ForwardingClientCall.java rename to api/src/main/java/io/grpc/ForwardingClientCall.java diff --git a/core/src/main/java/io/grpc/ForwardingClientCallListener.java b/api/src/main/java/io/grpc/ForwardingClientCallListener.java similarity index 100% rename from core/src/main/java/io/grpc/ForwardingClientCallListener.java rename to api/src/main/java/io/grpc/ForwardingClientCallListener.java diff --git a/core/src/main/java/io/grpc/ForwardingServerCall.java b/api/src/main/java/io/grpc/ForwardingServerCall.java similarity index 100% rename from core/src/main/java/io/grpc/ForwardingServerCall.java rename to api/src/main/java/io/grpc/ForwardingServerCall.java diff --git a/core/src/main/java/io/grpc/ForwardingServerCallListener.java b/api/src/main/java/io/grpc/ForwardingServerCallListener.java similarity index 100% rename from core/src/main/java/io/grpc/ForwardingServerCallListener.java rename to api/src/main/java/io/grpc/ForwardingServerCallListener.java diff --git a/core/src/main/java/io/grpc/Grpc.java b/api/src/main/java/io/grpc/Grpc.java similarity index 100% rename from core/src/main/java/io/grpc/Grpc.java rename to api/src/main/java/io/grpc/Grpc.java diff --git a/core/src/main/java/io/grpc/HandlerRegistry.java b/api/src/main/java/io/grpc/HandlerRegistry.java similarity index 100% rename from core/src/main/java/io/grpc/HandlerRegistry.java rename to api/src/main/java/io/grpc/HandlerRegistry.java diff --git a/core/src/main/java/io/grpc/HttpConnectProxiedSocketAddress.java b/api/src/main/java/io/grpc/HttpConnectProxiedSocketAddress.java similarity index 100% rename from core/src/main/java/io/grpc/HttpConnectProxiedSocketAddress.java rename to api/src/main/java/io/grpc/HttpConnectProxiedSocketAddress.java diff --git a/core/src/main/java/io/grpc/Internal.java b/api/src/main/java/io/grpc/Internal.java similarity index 100% rename from core/src/main/java/io/grpc/Internal.java rename to api/src/main/java/io/grpc/Internal.java diff --git a/core/src/main/java/io/grpc/InternalChannelz.java b/api/src/main/java/io/grpc/InternalChannelz.java similarity index 100% rename from core/src/main/java/io/grpc/InternalChannelz.java rename to api/src/main/java/io/grpc/InternalChannelz.java diff --git a/core/src/main/java/io/grpc/InternalClientInterceptors.java b/api/src/main/java/io/grpc/InternalClientInterceptors.java similarity index 100% rename from core/src/main/java/io/grpc/InternalClientInterceptors.java rename to api/src/main/java/io/grpc/InternalClientInterceptors.java diff --git a/core/src/main/java/io/grpc/InternalDecompressorRegistry.java b/api/src/main/java/io/grpc/InternalDecompressorRegistry.java similarity index 100% rename from core/src/main/java/io/grpc/InternalDecompressorRegistry.java rename to api/src/main/java/io/grpc/InternalDecompressorRegistry.java diff --git a/core/src/main/java/io/grpc/InternalInstrumented.java b/api/src/main/java/io/grpc/InternalInstrumented.java similarity index 100% rename from core/src/main/java/io/grpc/InternalInstrumented.java rename to api/src/main/java/io/grpc/InternalInstrumented.java diff --git a/core/src/main/java/io/grpc/InternalKnownTransport.java b/api/src/main/java/io/grpc/InternalKnownTransport.java similarity index 100% rename from core/src/main/java/io/grpc/InternalKnownTransport.java rename to api/src/main/java/io/grpc/InternalKnownTransport.java diff --git a/core/src/main/java/io/grpc/InternalLogId.java b/api/src/main/java/io/grpc/InternalLogId.java similarity index 100% rename from core/src/main/java/io/grpc/InternalLogId.java rename to api/src/main/java/io/grpc/InternalLogId.java diff --git a/core/src/main/java/io/grpc/InternalManagedChannelProvider.java b/api/src/main/java/io/grpc/InternalManagedChannelProvider.java similarity index 100% rename from core/src/main/java/io/grpc/InternalManagedChannelProvider.java rename to api/src/main/java/io/grpc/InternalManagedChannelProvider.java diff --git a/core/src/main/java/io/grpc/InternalMetadata.java b/api/src/main/java/io/grpc/InternalMetadata.java similarity index 100% rename from core/src/main/java/io/grpc/InternalMetadata.java rename to api/src/main/java/io/grpc/InternalMetadata.java diff --git a/core/src/main/java/io/grpc/InternalMethodDescriptor.java b/api/src/main/java/io/grpc/InternalMethodDescriptor.java similarity index 100% rename from core/src/main/java/io/grpc/InternalMethodDescriptor.java rename to api/src/main/java/io/grpc/InternalMethodDescriptor.java diff --git a/core/src/main/java/io/grpc/InternalNotifyOnServerBuild.java b/api/src/main/java/io/grpc/InternalNotifyOnServerBuild.java similarity index 100% rename from core/src/main/java/io/grpc/InternalNotifyOnServerBuild.java rename to api/src/main/java/io/grpc/InternalNotifyOnServerBuild.java diff --git a/core/src/main/java/io/grpc/InternalServerInterceptors.java b/api/src/main/java/io/grpc/InternalServerInterceptors.java similarity index 100% rename from core/src/main/java/io/grpc/InternalServerInterceptors.java rename to api/src/main/java/io/grpc/InternalServerInterceptors.java diff --git a/core/src/main/java/io/grpc/InternalServiceProviders.java b/api/src/main/java/io/grpc/InternalServiceProviders.java similarity index 100% rename from core/src/main/java/io/grpc/InternalServiceProviders.java rename to api/src/main/java/io/grpc/InternalServiceProviders.java diff --git a/core/src/main/java/io/grpc/InternalStatus.java b/api/src/main/java/io/grpc/InternalStatus.java similarity index 100% rename from core/src/main/java/io/grpc/InternalStatus.java rename to api/src/main/java/io/grpc/InternalStatus.java diff --git a/core/src/main/java/io/grpc/InternalWithLogId.java b/api/src/main/java/io/grpc/InternalWithLogId.java similarity index 100% rename from core/src/main/java/io/grpc/InternalWithLogId.java rename to api/src/main/java/io/grpc/InternalWithLogId.java diff --git a/core/src/main/java/io/grpc/KnownLength.java b/api/src/main/java/io/grpc/KnownLength.java similarity index 100% rename from core/src/main/java/io/grpc/KnownLength.java rename to api/src/main/java/io/grpc/KnownLength.java diff --git a/core/src/main/java/io/grpc/LoadBalancer.java b/api/src/main/java/io/grpc/LoadBalancer.java similarity index 100% rename from core/src/main/java/io/grpc/LoadBalancer.java rename to api/src/main/java/io/grpc/LoadBalancer.java diff --git a/core/src/main/java/io/grpc/LoadBalancerProvider.java b/api/src/main/java/io/grpc/LoadBalancerProvider.java similarity index 100% rename from core/src/main/java/io/grpc/LoadBalancerProvider.java rename to api/src/main/java/io/grpc/LoadBalancerProvider.java diff --git a/core/src/main/java/io/grpc/LoadBalancerRegistry.java b/api/src/main/java/io/grpc/LoadBalancerRegistry.java similarity index 100% rename from core/src/main/java/io/grpc/LoadBalancerRegistry.java rename to api/src/main/java/io/grpc/LoadBalancerRegistry.java diff --git a/core/src/main/java/io/grpc/ManagedChannel.java b/api/src/main/java/io/grpc/ManagedChannel.java similarity index 100% rename from core/src/main/java/io/grpc/ManagedChannel.java rename to api/src/main/java/io/grpc/ManagedChannel.java diff --git a/core/src/main/java/io/grpc/ManagedChannelBuilder.java b/api/src/main/java/io/grpc/ManagedChannelBuilder.java similarity index 100% rename from core/src/main/java/io/grpc/ManagedChannelBuilder.java rename to api/src/main/java/io/grpc/ManagedChannelBuilder.java diff --git a/core/src/main/java/io/grpc/ManagedChannelProvider.java b/api/src/main/java/io/grpc/ManagedChannelProvider.java similarity index 100% rename from core/src/main/java/io/grpc/ManagedChannelProvider.java rename to api/src/main/java/io/grpc/ManagedChannelProvider.java diff --git a/core/src/main/java/io/grpc/Metadata.java b/api/src/main/java/io/grpc/Metadata.java similarity index 100% rename from core/src/main/java/io/grpc/Metadata.java rename to api/src/main/java/io/grpc/Metadata.java diff --git a/core/src/main/java/io/grpc/MethodDescriptor.java b/api/src/main/java/io/grpc/MethodDescriptor.java similarity index 100% rename from core/src/main/java/io/grpc/MethodDescriptor.java rename to api/src/main/java/io/grpc/MethodDescriptor.java diff --git a/core/src/main/java/io/grpc/NameResolver.java b/api/src/main/java/io/grpc/NameResolver.java similarity index 100% rename from core/src/main/java/io/grpc/NameResolver.java rename to api/src/main/java/io/grpc/NameResolver.java diff --git a/core/src/main/java/io/grpc/NameResolverProvider.java b/api/src/main/java/io/grpc/NameResolverProvider.java similarity index 100% rename from core/src/main/java/io/grpc/NameResolverProvider.java rename to api/src/main/java/io/grpc/NameResolverProvider.java diff --git a/core/src/main/java/io/grpc/PartialForwardingClientCall.java b/api/src/main/java/io/grpc/PartialForwardingClientCall.java similarity index 100% rename from core/src/main/java/io/grpc/PartialForwardingClientCall.java rename to api/src/main/java/io/grpc/PartialForwardingClientCall.java diff --git a/core/src/main/java/io/grpc/PartialForwardingClientCallListener.java b/api/src/main/java/io/grpc/PartialForwardingClientCallListener.java similarity index 100% rename from core/src/main/java/io/grpc/PartialForwardingClientCallListener.java rename to api/src/main/java/io/grpc/PartialForwardingClientCallListener.java diff --git a/core/src/main/java/io/grpc/PartialForwardingServerCall.java b/api/src/main/java/io/grpc/PartialForwardingServerCall.java similarity index 100% rename from core/src/main/java/io/grpc/PartialForwardingServerCall.java rename to api/src/main/java/io/grpc/PartialForwardingServerCall.java diff --git a/core/src/main/java/io/grpc/PartialForwardingServerCallListener.java b/api/src/main/java/io/grpc/PartialForwardingServerCallListener.java similarity index 100% rename from core/src/main/java/io/grpc/PartialForwardingServerCallListener.java rename to api/src/main/java/io/grpc/PartialForwardingServerCallListener.java diff --git a/core/src/main/java/io/grpc/PickFirstBalancerFactory.java b/api/src/main/java/io/grpc/PickFirstBalancerFactory.java similarity index 100% rename from core/src/main/java/io/grpc/PickFirstBalancerFactory.java rename to api/src/main/java/io/grpc/PickFirstBalancerFactory.java diff --git a/core/src/main/java/io/grpc/ProxiedSocketAddress.java b/api/src/main/java/io/grpc/ProxiedSocketAddress.java similarity index 100% rename from core/src/main/java/io/grpc/ProxiedSocketAddress.java rename to api/src/main/java/io/grpc/ProxiedSocketAddress.java diff --git a/core/src/main/java/io/grpc/ProxyDetector.java b/api/src/main/java/io/grpc/ProxyDetector.java similarity index 100% rename from core/src/main/java/io/grpc/ProxyDetector.java rename to api/src/main/java/io/grpc/ProxyDetector.java diff --git a/core/src/main/java/io/grpc/SecurityLevel.java b/api/src/main/java/io/grpc/SecurityLevel.java similarity index 100% rename from core/src/main/java/io/grpc/SecurityLevel.java rename to api/src/main/java/io/grpc/SecurityLevel.java diff --git a/core/src/main/java/io/grpc/Server.java b/api/src/main/java/io/grpc/Server.java similarity index 100% rename from core/src/main/java/io/grpc/Server.java rename to api/src/main/java/io/grpc/Server.java diff --git a/core/src/main/java/io/grpc/ServerBuilder.java b/api/src/main/java/io/grpc/ServerBuilder.java similarity index 100% rename from core/src/main/java/io/grpc/ServerBuilder.java rename to api/src/main/java/io/grpc/ServerBuilder.java diff --git a/core/src/main/java/io/grpc/ServerCall.java b/api/src/main/java/io/grpc/ServerCall.java similarity index 100% rename from core/src/main/java/io/grpc/ServerCall.java rename to api/src/main/java/io/grpc/ServerCall.java diff --git a/core/src/main/java/io/grpc/ServerCallHandler.java b/api/src/main/java/io/grpc/ServerCallHandler.java similarity index 100% rename from core/src/main/java/io/grpc/ServerCallHandler.java rename to api/src/main/java/io/grpc/ServerCallHandler.java diff --git a/core/src/main/java/io/grpc/ServerInterceptor.java b/api/src/main/java/io/grpc/ServerInterceptor.java similarity index 100% rename from core/src/main/java/io/grpc/ServerInterceptor.java rename to api/src/main/java/io/grpc/ServerInterceptor.java diff --git a/core/src/main/java/io/grpc/ServerInterceptors.java b/api/src/main/java/io/grpc/ServerInterceptors.java similarity index 100% rename from core/src/main/java/io/grpc/ServerInterceptors.java rename to api/src/main/java/io/grpc/ServerInterceptors.java diff --git a/core/src/main/java/io/grpc/ServerMethodDefinition.java b/api/src/main/java/io/grpc/ServerMethodDefinition.java similarity index 100% rename from core/src/main/java/io/grpc/ServerMethodDefinition.java rename to api/src/main/java/io/grpc/ServerMethodDefinition.java diff --git a/core/src/main/java/io/grpc/ServerProvider.java b/api/src/main/java/io/grpc/ServerProvider.java similarity index 100% rename from core/src/main/java/io/grpc/ServerProvider.java rename to api/src/main/java/io/grpc/ServerProvider.java diff --git a/core/src/main/java/io/grpc/ServerServiceDefinition.java b/api/src/main/java/io/grpc/ServerServiceDefinition.java similarity index 100% rename from core/src/main/java/io/grpc/ServerServiceDefinition.java rename to api/src/main/java/io/grpc/ServerServiceDefinition.java diff --git a/core/src/main/java/io/grpc/ServerStreamTracer.java b/api/src/main/java/io/grpc/ServerStreamTracer.java similarity index 100% rename from core/src/main/java/io/grpc/ServerStreamTracer.java rename to api/src/main/java/io/grpc/ServerStreamTracer.java diff --git a/core/src/main/java/io/grpc/ServerTransportFilter.java b/api/src/main/java/io/grpc/ServerTransportFilter.java similarity index 100% rename from core/src/main/java/io/grpc/ServerTransportFilter.java rename to api/src/main/java/io/grpc/ServerTransportFilter.java diff --git a/core/src/main/java/io/grpc/ServiceDescriptor.java b/api/src/main/java/io/grpc/ServiceDescriptor.java similarity index 100% rename from core/src/main/java/io/grpc/ServiceDescriptor.java rename to api/src/main/java/io/grpc/ServiceDescriptor.java diff --git a/core/src/main/java/io/grpc/ServiceProviders.java b/api/src/main/java/io/grpc/ServiceProviders.java similarity index 100% rename from core/src/main/java/io/grpc/ServiceProviders.java rename to api/src/main/java/io/grpc/ServiceProviders.java diff --git a/core/src/main/java/io/grpc/Status.java b/api/src/main/java/io/grpc/Status.java similarity index 100% rename from core/src/main/java/io/grpc/Status.java rename to api/src/main/java/io/grpc/Status.java diff --git a/core/src/main/java/io/grpc/StatusException.java b/api/src/main/java/io/grpc/StatusException.java similarity index 100% rename from core/src/main/java/io/grpc/StatusException.java rename to api/src/main/java/io/grpc/StatusException.java diff --git a/core/src/main/java/io/grpc/StatusRuntimeException.java b/api/src/main/java/io/grpc/StatusRuntimeException.java similarity index 100% rename from core/src/main/java/io/grpc/StatusRuntimeException.java rename to api/src/main/java/io/grpc/StatusRuntimeException.java diff --git a/core/src/main/java/io/grpc/StreamTracer.java b/api/src/main/java/io/grpc/StreamTracer.java similarity index 100% rename from core/src/main/java/io/grpc/StreamTracer.java rename to api/src/main/java/io/grpc/StreamTracer.java diff --git a/core/src/main/java/io/grpc/SynchronizationContext.java b/api/src/main/java/io/grpc/SynchronizationContext.java similarity index 100% rename from core/src/main/java/io/grpc/SynchronizationContext.java rename to api/src/main/java/io/grpc/SynchronizationContext.java diff --git a/core/src/main/java/io/grpc/package-info.java b/api/src/main/java/io/grpc/package-info.java similarity index 100% rename from core/src/main/java/io/grpc/package-info.java rename to api/src/main/java/io/grpc/package-info.java diff --git a/core/src/test/java/io/grpc/AttributesTest.java b/api/src/test/java/io/grpc/AttributesTest.java similarity index 100% rename from core/src/test/java/io/grpc/AttributesTest.java rename to api/src/test/java/io/grpc/AttributesTest.java diff --git a/core/src/test/java/io/grpc/CallOptionsTest.java b/api/src/test/java/io/grpc/CallOptionsTest.java similarity index 100% rename from core/src/test/java/io/grpc/CallOptionsTest.java rename to api/src/test/java/io/grpc/CallOptionsTest.java diff --git a/core/src/test/java/io/grpc/ClientInterceptorsTest.java b/api/src/test/java/io/grpc/ClientInterceptorsTest.java similarity index 100% rename from core/src/test/java/io/grpc/ClientInterceptorsTest.java rename to api/src/test/java/io/grpc/ClientInterceptorsTest.java diff --git a/core/src/test/java/io/grpc/ConnectivityStateInfoTest.java b/api/src/test/java/io/grpc/ConnectivityStateInfoTest.java similarity index 100% rename from core/src/test/java/io/grpc/ConnectivityStateInfoTest.java rename to api/src/test/java/io/grpc/ConnectivityStateInfoTest.java diff --git a/core/src/test/java/io/grpc/ContextsTest.java b/api/src/test/java/io/grpc/ContextsTest.java similarity index 88% rename from core/src/test/java/io/grpc/ContextsTest.java rename to api/src/test/java/io/grpc/ContextsTest.java index 3e91ca1207..185100685c 100644 --- a/core/src/test/java/io/grpc/ContextsTest.java +++ b/api/src/test/java/io/grpc/ContextsTest.java @@ -28,11 +28,13 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import io.grpc.internal.FakeClock; +import com.google.common.util.concurrent.testing.TestingExecutors; import io.grpc.internal.NoopServerCall; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.junit.Test; @@ -213,11 +215,29 @@ public class ContextsTest { @Test public void statusFromCancelled_TimeoutExceptionShouldMapToDeadlineExceeded() { - FakeClock fakeClock = new FakeClock(); + final long expectedDelay = 100; + final TimeUnit expectedUnit = TimeUnit.SECONDS; + class MockScheduledExecutorService extends ForwardingScheduledExecutorService { + private ScheduledExecutorService delegate = TestingExecutors.noOpScheduledExecutor(); + Runnable command; + + @Override public ScheduledExecutorService delegate() { + return delegate; + } + + @Override public ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + if (delay > unit.convert(expectedDelay, expectedUnit)) { + fail("Delay larger than expected: " + delay + " " + unit); + } + this.command = command; + return super.schedule(command, delay, unit); + } + } + + MockScheduledExecutorService executorService = new MockScheduledExecutorService(); Context.CancellableContext cancellableContext = Context.current() - .withDeadlineAfter(100, TimeUnit.NANOSECONDS, fakeClock.getScheduledExecutorService()); - fakeClock.forwardTime(System.nanoTime(), TimeUnit.NANOSECONDS); - fakeClock.forwardNanos(100); + .withDeadlineAfter(expectedDelay, expectedUnit, executorService); + executorService.command.run(); assertTrue(cancellableContext.isCancelled()); assertThat(cancellableContext.cancellationCause(), instanceOf(TimeoutException.class)); diff --git a/core/src/test/java/io/grpc/DecompressorRegistryTest.java b/api/src/test/java/io/grpc/DecompressorRegistryTest.java similarity index 100% rename from core/src/test/java/io/grpc/DecompressorRegistryTest.java rename to api/src/test/java/io/grpc/DecompressorRegistryTest.java diff --git a/core/src/test/java/io/grpc/ForwardingChannelBuilderTest.java b/api/src/test/java/io/grpc/ForwardingChannelBuilderTest.java similarity index 100% rename from core/src/test/java/io/grpc/ForwardingChannelBuilderTest.java rename to api/src/test/java/io/grpc/ForwardingChannelBuilderTest.java diff --git a/api/src/test/java/io/grpc/ForwardingScheduledExecutorService.java b/api/src/test/java/io/grpc/ForwardingScheduledExecutorService.java new file mode 100644 index 0000000000..d300422253 --- /dev/null +++ b/api/src/test/java/io/grpc/ForwardingScheduledExecutorService.java @@ -0,0 +1,54 @@ +/* + * Copyright 2019 The gRPC 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 io.grpc; + +import com.google.common.util.concurrent.ForwardingExecutorService; +import java.util.concurrent.Callable; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +/** + * Forwards all methods to delegate. + */ +abstract class ForwardingScheduledExecutorService extends ForwardingExecutorService + implements ScheduledExecutorService { + @Override + protected abstract ScheduledExecutorService delegate(); + + @Override + public ScheduledFuture schedule(Callable callable, long delay, TimeUnit unit) { + return delegate().schedule(callable, delay, unit); + } + + @Override + public ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + return delegate().schedule(command, delay, unit); + } + + @Override + public ScheduledFuture scheduleAtFixedRate( + Runnable command, long initialDelay, long period, TimeUnit unit) { + return delegate().scheduleAtFixedRate(command, initialDelay, period, unit); + } + + @Override + public ScheduledFuture scheduleWithFixedDelay( + Runnable command, long initialDelay, long delay, TimeUnit unit) { + return delegate().scheduleWithFixedDelay(command, initialDelay, delay, unit); + } +} diff --git a/core/src/test/java/io/grpc/ForwardingServerCallListenerTest.java b/api/src/test/java/io/grpc/ForwardingServerCallListenerTest.java similarity index 100% rename from core/src/test/java/io/grpc/ForwardingServerCallListenerTest.java rename to api/src/test/java/io/grpc/ForwardingServerCallListenerTest.java diff --git a/core/src/test/java/io/grpc/ForwardingTestUtil.java b/api/src/test/java/io/grpc/ForwardingTestUtil.java similarity index 100% rename from core/src/test/java/io/grpc/ForwardingTestUtil.java rename to api/src/test/java/io/grpc/ForwardingTestUtil.java diff --git a/core/src/test/java/io/grpc/IntegerMarshaller.java b/api/src/test/java/io/grpc/IntegerMarshaller.java similarity index 100% rename from core/src/test/java/io/grpc/IntegerMarshaller.java rename to api/src/test/java/io/grpc/IntegerMarshaller.java diff --git a/core/src/test/java/io/grpc/InternalChannelzTest.java b/api/src/test/java/io/grpc/InternalChannelzTest.java similarity index 100% rename from core/src/test/java/io/grpc/InternalChannelzTest.java rename to api/src/test/java/io/grpc/InternalChannelzTest.java diff --git a/core/src/test/java/io/grpc/InternalLogIdTest.java b/api/src/test/java/io/grpc/InternalLogIdTest.java similarity index 100% rename from core/src/test/java/io/grpc/InternalLogIdTest.java rename to api/src/test/java/io/grpc/InternalLogIdTest.java diff --git a/core/src/test/java/io/grpc/LoadBalancerRegistryTest.java b/api/src/test/java/io/grpc/LoadBalancerRegistryTest.java similarity index 100% rename from core/src/test/java/io/grpc/LoadBalancerRegistryTest.java rename to api/src/test/java/io/grpc/LoadBalancerRegistryTest.java diff --git a/core/src/test/java/io/grpc/LoadBalancerTest.java b/api/src/test/java/io/grpc/LoadBalancerTest.java similarity index 100% rename from core/src/test/java/io/grpc/LoadBalancerTest.java rename to api/src/test/java/io/grpc/LoadBalancerTest.java diff --git a/core/src/test/java/io/grpc/ManagedChannelProviderTest.java b/api/src/test/java/io/grpc/ManagedChannelProviderTest.java similarity index 100% rename from core/src/test/java/io/grpc/ManagedChannelProviderTest.java rename to api/src/test/java/io/grpc/ManagedChannelProviderTest.java diff --git a/core/src/test/java/io/grpc/MetadataTest.java b/api/src/test/java/io/grpc/MetadataTest.java similarity index 100% rename from core/src/test/java/io/grpc/MetadataTest.java rename to api/src/test/java/io/grpc/MetadataTest.java diff --git a/core/src/test/java/io/grpc/MethodDescriptorTest.java b/api/src/test/java/io/grpc/MethodDescriptorTest.java similarity index 100% rename from core/src/test/java/io/grpc/MethodDescriptorTest.java rename to api/src/test/java/io/grpc/MethodDescriptorTest.java diff --git a/core/src/test/java/io/grpc/NameResolverProviderTest.java b/api/src/test/java/io/grpc/NameResolverProviderTest.java similarity index 100% rename from core/src/test/java/io/grpc/NameResolverProviderTest.java rename to api/src/test/java/io/grpc/NameResolverProviderTest.java diff --git a/core/src/test/java/io/grpc/PickFirstBalancerFactoryTest.java b/api/src/test/java/io/grpc/PickFirstBalancerFactoryTest.java similarity index 100% rename from core/src/test/java/io/grpc/PickFirstBalancerFactoryTest.java rename to api/src/test/java/io/grpc/PickFirstBalancerFactoryTest.java diff --git a/core/src/test/java/io/grpc/ReplacingClassLoader.java b/api/src/test/java/io/grpc/ReplacingClassLoader.java similarity index 100% rename from core/src/test/java/io/grpc/ReplacingClassLoader.java rename to api/src/test/java/io/grpc/ReplacingClassLoader.java diff --git a/core/src/test/java/io/grpc/ServerInterceptorsTest.java b/api/src/test/java/io/grpc/ServerInterceptorsTest.java similarity index 100% rename from core/src/test/java/io/grpc/ServerInterceptorsTest.java rename to api/src/test/java/io/grpc/ServerInterceptorsTest.java diff --git a/core/src/test/java/io/grpc/ServerServiceDefinitionTest.java b/api/src/test/java/io/grpc/ServerServiceDefinitionTest.java similarity index 100% rename from core/src/test/java/io/grpc/ServerServiceDefinitionTest.java rename to api/src/test/java/io/grpc/ServerServiceDefinitionTest.java diff --git a/core/src/test/java/io/grpc/ServiceDescriptorTest.java b/api/src/test/java/io/grpc/ServiceDescriptorTest.java similarity index 100% rename from core/src/test/java/io/grpc/ServiceDescriptorTest.java rename to api/src/test/java/io/grpc/ServiceDescriptorTest.java diff --git a/core/src/test/java/io/grpc/ServiceProvidersTest.java b/api/src/test/java/io/grpc/ServiceProvidersTest.java similarity index 100% rename from core/src/test/java/io/grpc/ServiceProvidersTest.java rename to api/src/test/java/io/grpc/ServiceProvidersTest.java diff --git a/core/src/test/java/io/grpc/ServiceProvidersTestAbstractProvider.java b/api/src/test/java/io/grpc/ServiceProvidersTestAbstractProvider.java similarity index 100% rename from core/src/test/java/io/grpc/ServiceProvidersTestAbstractProvider.java rename to api/src/test/java/io/grpc/ServiceProvidersTestAbstractProvider.java diff --git a/core/src/test/java/io/grpc/ServiceProvidersTestUtil.java b/api/src/test/java/io/grpc/ServiceProvidersTestUtil.java similarity index 100% rename from core/src/test/java/io/grpc/ServiceProvidersTestUtil.java rename to api/src/test/java/io/grpc/ServiceProvidersTestUtil.java diff --git a/core/src/test/java/io/grpc/StatusExceptionTest.java b/api/src/test/java/io/grpc/StatusExceptionTest.java similarity index 100% rename from core/src/test/java/io/grpc/StatusExceptionTest.java rename to api/src/test/java/io/grpc/StatusExceptionTest.java diff --git a/core/src/test/java/io/grpc/StatusRuntimeExceptionTest.java b/api/src/test/java/io/grpc/StatusRuntimeExceptionTest.java similarity index 100% rename from core/src/test/java/io/grpc/StatusRuntimeExceptionTest.java rename to api/src/test/java/io/grpc/StatusRuntimeExceptionTest.java diff --git a/core/src/test/java/io/grpc/StatusTest.java b/api/src/test/java/io/grpc/StatusTest.java similarity index 100% rename from core/src/test/java/io/grpc/StatusTest.java rename to api/src/test/java/io/grpc/StatusTest.java diff --git a/core/src/test/java/io/grpc/StringMarshaller.java b/api/src/test/java/io/grpc/StringMarshaller.java similarity index 100% rename from core/src/test/java/io/grpc/StringMarshaller.java rename to api/src/test/java/io/grpc/StringMarshaller.java diff --git a/core/src/test/java/io/grpc/SynchronizationContextTest.java b/api/src/test/java/io/grpc/SynchronizationContextTest.java similarity index 82% rename from core/src/test/java/io/grpc/SynchronizationContextTest.java rename to api/src/test/java/io/grpc/SynchronizationContextTest.java index 7c3a4e14e3..3d5e7fa42b 100644 --- a/core/src/test/java/io/grpc/SynchronizationContextTest.java +++ b/api/src/test/java/io/grpc/SynchronizationContextTest.java @@ -25,11 +25,13 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; +import com.google.common.util.concurrent.testing.TestingExecutors; import io.grpc.SynchronizationContext.ScheduledHandle; -import io.grpc.internal.FakeClock; import java.util.concurrent.BlockingQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -231,46 +233,46 @@ public class SynchronizationContextTest { @Test public void schedule() { - FakeClock clock = new FakeClock(); + MockScheduledExecutorService executorService = new MockScheduledExecutorService(); ScheduledHandle handle = - syncContext.schedule(task1, 110, TimeUnit.NANOSECONDS, clock.getScheduledExecutorService()); - assertThat(handle.isPending()).isTrue(); - assertThat(clock.runDueTasks()).isEqualTo(0); - assertThat(clock.forwardNanos(109)).isEqualTo(0); + syncContext.schedule(task1, 110, TimeUnit.NANOSECONDS, executorService); + assertThat(executorService.delay) + .isEqualTo(executorService.unit.convert(110, TimeUnit.NANOSECONDS)); assertThat(handle.isPending()).isTrue(); verify(task1, never()).run(); - assertThat(clock.forwardNanos(1)).isEqualTo(1); + executorService.command.run(); assertThat(handle.isPending()).isFalse(); verify(task1).run(); } @Test public void scheduleDueImmediately() { - FakeClock clock = new FakeClock(); - ScheduledHandle handle = - syncContext.schedule(task1, -1, TimeUnit.NANOSECONDS, clock.getScheduledExecutorService()); + MockScheduledExecutorService executorService = new MockScheduledExecutorService(); + ScheduledHandle handle = syncContext.schedule(task1, -1, TimeUnit.NANOSECONDS, executorService); + assertThat(executorService.delay) + .isEqualTo(executorService.unit.convert(-1, TimeUnit.NANOSECONDS)); verify(task1, never()).run(); assertThat(handle.isPending()).isTrue(); - assertThat(clock.runDueTasks()).isEqualTo(1); + executorService.command.run(); assertThat(handle.isPending()).isFalse(); verify(task1).run(); } @Test public void scheduleHandle_cancel() { - FakeClock clock = new FakeClock(); + MockScheduledExecutorService executorService = new MockScheduledExecutorService(); ScheduledHandle handle = - syncContext.schedule(task1, 110, TimeUnit.NANOSECONDS, clock.getScheduledExecutorService()); - assertThat(handle.isPending()).isTrue(); - assertThat(clock.runDueTasks()).isEqualTo(0); + syncContext.schedule(task1, 110, TimeUnit.NANOSECONDS, executorService); assertThat(handle.isPending()).isTrue(); + assertThat(executorService.delay) + .isEqualTo(executorService.unit.convert(110, TimeUnit.NANOSECONDS)); handle.cancel(); assertThat(handle.isPending()).isFalse(); syncContext.drain(); - assertThat(clock.numPendingTasks()).isEqualTo(0); + assertThat(executorService.future.isCancelled()).isTrue(); verify(task1, never()).run(); } @@ -278,7 +280,7 @@ public class SynchronizationContextTest { // ScheduledExecutorService, but before the task is run. @Test public void scheduledHandle_cancelRacesWithTimerExpiration() throws Exception { - FakeClock clock = new FakeClock(); + MockScheduledExecutorService executorService = new MockScheduledExecutorService(); final CountDownLatch task1Running = new CountDownLatch(1); final LinkedBlockingQueue task2HandleQueue = new LinkedBlockingQueue<>(); @@ -309,8 +311,7 @@ public class SynchronizationContextTest { } }; - ScheduledHandle handle = - syncContext.schedule(task2, 10, TimeUnit.NANOSECONDS, clock.getScheduledExecutorService()); + ScheduledHandle handle = syncContext.schedule(task2, 10, TimeUnit.NANOSECONDS, executorService); // This will execute and block in task1 sideThread.start(); @@ -318,8 +319,9 @@ public class SynchronizationContextTest { assertThat(task1Running.await(5, TimeUnit.SECONDS)).isTrue(); // Timer expires. task2 will be enqueued, but blocked by task1 - assertThat(clock.forwardNanos(10)).isEqualTo(1); - assertThat(clock.numPendingTasks()).isEqualTo(0); + assertThat(executorService.delay) + .isEqualTo(executorService.unit.convert(10, TimeUnit.NANOSECONDS)); + executorService.command.run(); assertThat(handle.isPending()).isTrue(); // Enqueue task3 following task2 @@ -335,6 +337,25 @@ public class SynchronizationContextTest { assertThat(handle.isPending()).isFalse(); verify(task2, never()).run(); verify(task3).run(); - assertThat(clock.numPendingTasks()).isEqualTo(0); + } + + static class MockScheduledExecutorService extends ForwardingScheduledExecutorService { + private ScheduledExecutorService delegate = TestingExecutors.noOpScheduledExecutor(); + + Runnable command; + long delay; + TimeUnit unit; + ScheduledFuture future; + + @Override public ScheduledExecutorService delegate() { + return delegate; + } + + @Override public ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + this.command = command; + this.delay = delay; + this.unit = unit; + return future = super.schedule(command, delay, unit); + } } } diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtInitProvider.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtInitProvider.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtInitProvider.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtInitProvider.txt diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-multipleProvider.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-multipleProvider.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-multipleProvider.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-multipleProvider.txt diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unavailableProvider.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unavailableProvider.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unavailableProvider.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unavailableProvider.txt diff --git a/core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unknownClassProvider.txt b/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unknownClassProvider.txt similarity index 100% rename from core/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unknownClassProvider.txt rename to api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unknownClassProvider.txt diff --git a/auth/BUILD.bazel b/auth/BUILD.bazel index b6ad6e7063..cc923dce2b 100644 --- a/auth/BUILD.bazel +++ b/auth/BUILD.bazel @@ -5,7 +5,7 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - "//core", + "//api", "@com_google_auth_google_auth_library_credentials//jar", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", diff --git a/auth/build.gradle b/auth/build.gradle index d066d6e4ee..09619ea562 100644 --- a/auth/build.gradle +++ b/auth/build.gradle @@ -1,6 +1,6 @@ description = "gRPC: Auth" dependencies { - compile project(':grpc-core'), + compile project(':grpc-api'), libraries.google_auth_credentials testCompile project(':grpc-testing'), libraries.google_auth_oauth2_http diff --git a/build.gradle b/build.gradle index 482be41ce0..ba4e7231cc 100644 --- a/build.gradle +++ b/build.gradle @@ -390,7 +390,7 @@ subprojects { "grpc-protobuf-nano" ])) { asNode().dependencies.'*'.findAll() { dep -> - dep.artifactId.text() == 'grpc-core' + dep.artifactId.text() in ['grpc-api', 'grpc-core'] }.each() { core -> core.version*.value = "[" + core.version.text() + "]" } @@ -452,6 +452,7 @@ def baselineGrpcVersion = '1.6.1' def publicApiSubprojects = [ // TODO: uncomment after grpc-alts, grpc-bom artifact is published. // ':grpc-alts', + //':grpc-api', ':grpc-auth', //':grpc-bom', ':grpc-context', diff --git a/core/BUILD.bazel b/core/BUILD.bazel index e1769e91e0..0616790787 100644 --- a/core/BUILD.bazel +++ b/core/BUILD.bazel @@ -1,16 +1,7 @@ java_library( name = "core", - srcs = glob([ - "src/main/java/io/grpc/*.java", - ]), visibility = ["//visibility:public"], - deps = [ - "//context", - "@com_google_code_findbugs_jsr305//jar", - "@com_google_guava_failureaccess//jar", # future transitive dep of Guava. See #5214 - "@com_google_guava_guava//jar", - "@com_google_j2objc_j2objc_annotations//jar", - ], + exports = ["//api"], ) java_library( @@ -20,8 +11,8 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - ":core", ":internal", + "//api", "//context", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", @@ -39,8 +30,8 @@ java_library( ]), visibility = ["//:__subpackages__"], deps = [ - ":core", ":perfmark", + "//api", "//context", "@com_google_android_annotations//jar", "@com_google_code_findbugs_jsr305//jar", @@ -64,8 +55,8 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - ":core", ":internal", + "//api", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", "@com_google_j2objc_j2objc_annotations//jar", diff --git a/core/build.gradle b/core/build.gradle index 2bf0678742..c822177932 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,20 +1,9 @@ description = 'gRPC: Core' dependencies { - compile project(':grpc-context'), + compile project(':grpc-api'), libraries.gson, - libraries.errorprone, - libraries.jsr305, libraries.android_annotations, - libraries.animalsniffer_annotations - compile (libraries.guava) { - // prefer 2.3.2 from libraries instead of 2.1.3 - exclude group: 'com.google.errorprone', module: 'error_prone_annotations' - // prefer 3.0.2 from libraries instead of 3.0.1 - exclude group: 'com.google.code.findbugs', module: 'jsr305' - // prefer 1.17 from libraries instead of 1.14 - exclude group: 'org.codehaus.mojo', module: 'animal-sniffer-annotations' - } compile (libraries.opencensus_api) { // prefer 3.0.2 from libraries instead of 3.0.1 exclude group: 'com.google.code.findbugs', module: 'jsr305' @@ -33,6 +22,7 @@ dependencies { } testCompile project(':grpc-context').sourceSets.test.output, + project(':grpc-api').sourceSets.test.output, project(':grpc-testing'), project(':grpc-grpclb'), libraries.guava_testlib @@ -42,10 +32,6 @@ dependencies { } javadoc { - // We want io.grpc.Internal, but not io.grpc.Internal* - exclude 'io/grpc/Internal?*.java' - exclude 'io/grpc/internal/**' - // Disabled until kinda stable. exclude 'io/grpc/perfmark/**' } diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel index 36971da41b..f557a5da26 100644 --- a/examples/BUILD.bazel +++ b/examples/BUILD.bazel @@ -59,6 +59,9 @@ java_library( resources = glob( ["src/main/resources/**"], ), + runtime_deps = [ + "@io_grpc_grpc_java//netty", + ], deps = [ ":hello_streaming_java_grpc", ":hello_streaming_java_proto", @@ -71,13 +74,10 @@ java_library( "@com_google_guava_guava//jar", "@com_google_protobuf//:protobuf_java", "@com_google_protobuf//:protobuf_java_util", - "@io_grpc_grpc_java//core", + "@io_grpc_grpc_java//api", "@io_grpc_grpc_java//protobuf", "@io_grpc_grpc_java//stub", ], - runtime_deps = [ - "@io_grpc_grpc_java//netty", - ] ) java_binary( diff --git a/examples/example-alts/BUILD.bazel b/examples/example-alts/BUILD.bazel index 8f747ff992..a9afbe7fde 100644 --- a/examples/example-alts/BUILD.bazel +++ b/examples/example-alts/BUILD.bazel @@ -26,7 +26,7 @@ java_library( ":helloworld_java_grpc", ":helloworld_java_proto", "@io_grpc_grpc_java//alts", - "@io_grpc_grpc_java//core", + "@io_grpc_grpc_java//api", "@io_grpc_grpc_java//protobuf", "@io_grpc_grpc_java//stub", ], diff --git a/examples/example-gauth/BUILD.bazel b/examples/example-gauth/BUILD.bazel index a18d1ce4e8..e43be5115d 100644 --- a/examples/example-gauth/BUILD.bazel +++ b/examples/example-gauth/BUILD.bazel @@ -7,13 +7,13 @@ java_library( ["src/main/java/**/*.java"], ), deps = [ - "@io_grpc_grpc_java//core", - "@io_grpc_grpc_java//protobuf", - "@io_grpc_grpc_java//stub", - "@io_grpc_grpc_java//auth", - "@com_google_auth_google_auth_library_oauth2_http//jar", "@com_google_api_grpc_cloud_pubsub_v1//jar", "@com_google_api_grpc_proto_cloud_pubsub_v1//jar", + "@com_google_auth_google_auth_library_oauth2_http//jar", + "@io_grpc_grpc_java//api", + "@io_grpc_grpc_java//auth", + "@io_grpc_grpc_java//protobuf", + "@io_grpc_grpc_java//stub", ], ) diff --git a/examples/example-tls/BUILD.bazel b/examples/example-tls/BUILD.bazel index 730bc9cbcb..d615b5c4aa 100644 --- a/examples/example-tls/BUILD.bazel +++ b/examples/example-tls/BUILD.bazel @@ -22,18 +22,18 @@ java_library( srcs = glob( ["src/main/java/**/*.java"], ), + runtime_deps = [ + "@io_netty_netty_tcnative_boringssl_static//jar", + ], deps = [ ":helloworld_java_grpc", ":helloworld_java_proto", - "@io_grpc_grpc_java//core", + "@io_grpc_grpc_java//api", "@io_grpc_grpc_java//netty", "@io_grpc_grpc_java//protobuf", "@io_grpc_grpc_java//stub", "@io_netty_netty_handler//jar", ], - runtime_deps = [ - "@io_netty_netty_tcnative_boringssl_static//jar", - ] ) java_binary( diff --git a/grpclb/BUILD.bazel b/grpclb/BUILD.bazel index c557866274..d48073fc5c 100644 --- a/grpclb/BUILD.bazel +++ b/grpclb/BUILD.bazel @@ -9,7 +9,7 @@ java_library( deps = [ ":load_balancer_java_grpc", ":load_balancer_java_proto", - "//core", + "//api", "//core:internal", "//core:util", "//stub", diff --git a/netty/BUILD.bazel b/netty/BUILD.bazel index 8cc9657695..30f02bd985 100644 --- a/netty/BUILD.bazel +++ b/netty/BUILD.bazel @@ -9,7 +9,7 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - "//core", + "//api", "//core:internal", "@com_google_code_findbugs_jsr305//jar", "@com_google_errorprone_error_prone_annotations//jar", diff --git a/okhttp/BUILD.bazel b/okhttp/BUILD.bazel index c01a79a5f5..e237daafbe 100644 --- a/okhttp/BUILD.bazel +++ b/okhttp/BUILD.bazel @@ -9,7 +9,7 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - "//core", + "//api", "//core:internal", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", diff --git a/protobuf-lite/BUILD.bazel b/protobuf-lite/BUILD.bazel index 8abb302703..f1529c9c70 100644 --- a/protobuf-lite/BUILD.bazel +++ b/protobuf-lite/BUILD.bazel @@ -5,7 +5,7 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - "//core", + "//api", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", "@com_google_j2objc_j2objc_annotations//jar", diff --git a/protobuf-lite/build.gradle b/protobuf-lite/build.gradle index f6d6dc06a7..6503c2707c 100644 --- a/protobuf-lite/build.gradle +++ b/protobuf-lite/build.gradle @@ -12,7 +12,7 @@ apply plugin: 'com.google.protobuf' description = 'gRPC: Protobuf Lite' dependencies { - compile project(':grpc-core'), + compile project(':grpc-api'), libraries.protobuf_lite compile (libraries.guava) { // prefer 2.3.2 from libraries instead of 2.1.3 @@ -23,6 +23,7 @@ dependencies { exclude group: 'org.codehaus.mojo', module: 'animal-sniffer-annotations' } + testCompile project(':grpc-core') testProtobuf libraries.protobuf signature "org.codehaus.mojo.signature:java17:1.0@signature" diff --git a/protobuf-nano/BUILD.bazel b/protobuf-nano/BUILD.bazel index b336e99450..05ea2c6701 100644 --- a/protobuf-nano/BUILD.bazel +++ b/protobuf-nano/BUILD.bazel @@ -5,7 +5,7 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - "//core", + "//api", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", "@com_google_j2objc_j2objc_annotations//jar", diff --git a/protobuf-nano/build.gradle b/protobuf-nano/build.gradle index 06415b7a17..9064df4bb4 100644 --- a/protobuf-nano/build.gradle +++ b/protobuf-nano/build.gradle @@ -10,7 +10,7 @@ buildscript { description = 'gRPC: Protobuf Nano' dependencies { - compile project(':grpc-core'), + compile project(':grpc-api'), libraries.protobuf_nano compile (libraries.guava) { // prefer 2.3.2 from libraries instead of 2.1.3 diff --git a/protobuf/BUILD.bazel b/protobuf/BUILD.bazel index e37191509e..d6df923e05 100644 --- a/protobuf/BUILD.bazel +++ b/protobuf/BUILD.bazel @@ -5,7 +5,7 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ - "//core", + "//api", "//protobuf-lite", "@com_google_api_grpc_proto_google_common_protos//jar", "@com_google_code_findbugs_jsr305//jar", diff --git a/protobuf/build.gradle b/protobuf/build.gradle index 27531012bb..eb8efb38a3 100644 --- a/protobuf/build.gradle +++ b/protobuf/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { - compile project(':grpc-core'), + compile project(':grpc-api'), libraries.protobuf compile (libraries.guava) { // prefer 2.3.2 from libraries instead of 2.1.3 diff --git a/services/BUILD.bazel b/services/BUILD.bazel index 896e8015f8..a5386abd0f 100644 --- a/services/BUILD.bazel +++ b/services/BUILD.bazel @@ -13,8 +13,8 @@ java_library( "src/main/java/io/grpc/services/TempFileSink.java", ], deps = [ + "//api", "//context", - "//core", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", "@com_google_protobuf//:protobuf_java", @@ -31,8 +31,8 @@ java_library( ], deps = [ ":_channelz_java_grpc", + "//api", "//context", - "//core", "//stub", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", @@ -49,8 +49,8 @@ java_library( ], deps = [ ":_reflection_java_grpc", + "//api", "//context", - "//core", "//core:internal", "//core:util", "//protobuf", diff --git a/services/build.gradle b/services/build.gradle index 9fe6c87bca..9c87031d26 100644 --- a/services/build.gradle +++ b/services/build.gradle @@ -19,7 +19,8 @@ description = "gRPC: Services" dependencies { compile project(':grpc-protobuf'), - project(':grpc-stub') + project(':grpc-stub'), + project(':grpc-core') compile (libraries.protobuf_util) { // prefer 26.0-android from libraries instead of 20.0 exclude group: 'com.google.guava', module: 'guava' diff --git a/settings.gradle b/settings.gradle index 9fc061ef58..9c4c4a2262 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,5 @@ rootProject.name = "grpc" +include ":grpc-api" include ":grpc-core" include ":grpc-context" include ":grpc-stub" @@ -21,6 +22,7 @@ include ":grpc-services" include ":grpc-xds" include ":grpc-bom" +project(':grpc-api').projectDir = "$rootDir/api" as File project(':grpc-core').projectDir = "$rootDir/core" as File project(':grpc-context').projectDir = "$rootDir/context" as File project(':grpc-stub').projectDir = "$rootDir/stub" as File diff --git a/stub/BUILD.bazel b/stub/BUILD.bazel index 3547f63254..f4cfaf004d 100644 --- a/stub/BUILD.bazel +++ b/stub/BUILD.bazel @@ -5,8 +5,8 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ + "//api", "//context", - "//core", "@com_google_code_findbugs_jsr305//jar", "@com_google_guava_guava//jar", "@com_google_j2objc_j2objc_annotations//jar", diff --git a/stub/build.gradle b/stub/build.gradle index 651173f91e..3ee264db4b 100644 --- a/stub/build.gradle +++ b/stub/build.gradle @@ -1,6 +1,6 @@ description = "gRPC: Stub" dependencies { - compile project(':grpc-core') + compile project(':grpc-api') testCompile libraries.truth, project(':grpc-testing') signature "org.codehaus.mojo.signature:java17:1.0@signature" diff --git a/testing/BUILD.bazel b/testing/BUILD.bazel index f09ffd03f8..09d0796fa4 100644 --- a/testing/BUILD.bazel +++ b/testing/BUILD.bazel @@ -9,8 +9,8 @@ java_library( ]), visibility = ["//visibility:public"], deps = [ + "//api", "//context", - "//core", "//core:inprocess", "//core:util", "//stub", @@ -29,7 +29,7 @@ java_library( ]), visibility = ["//:__subpackages__"], deps = [ - "//core", + "//api", "//core:internal", ], ) diff --git a/xds/build.gradle b/xds/build.gradle index 7c5a04a4af..903b13d93d 100644 --- a/xds/build.gradle +++ b/xds/build.gradle @@ -24,7 +24,8 @@ description = "gRPC: XDS plugin" dependencies { compile project(':grpc-protobuf'), - project(':grpc-stub') + project(':grpc-stub'), + project(':grpc-core') compile (libraries.protobuf_util) { // prefer 26.0-android from libraries instead of 20.0 exclude group: 'com.google.guava', module: 'guava'