core: Deprecate ForwardingChannelBuilder (#10587)

Deprecate `ForwardingChannelBuilder` in favor of `ForwardingChannelBuilder2`.
This commit is contained in:
Sergii Tkachenko 2023-11-02 10:58:20 -07:00 committed by GitHub
parent 073ca92e24
commit a294b27d52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 36 additions and 16 deletions

View File

@ -18,7 +18,7 @@ package io.grpc.alts;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import io.grpc.ExperimentalApi; import io.grpc.ExperimentalApi;
import io.grpc.ForwardingChannelBuilder; import io.grpc.ForwardingChannelBuilder2;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder; import io.grpc.ManagedChannelBuilder;
import io.grpc.internal.GrpcUtil; import io.grpc.internal.GrpcUtil;
@ -32,7 +32,7 @@ import javax.annotation.Nullable;
* commmunication between two cloud VMs using ALTS. * commmunication between two cloud VMs using ALTS.
*/ */
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4151") @ExperimentalApi("https://github.com/grpc/grpc-java/issues/4151")
public final class AltsChannelBuilder extends ForwardingChannelBuilder<AltsChannelBuilder> { public final class AltsChannelBuilder extends ForwardingChannelBuilder2<AltsChannelBuilder> {
private final NettyChannelBuilder delegate; private final NettyChannelBuilder delegate;
private final AltsChannelCredentials.Builder credentialsBuilder = private final AltsChannelCredentials.Builder credentialsBuilder =
new AltsChannelCredentials.Builder(); new AltsChannelCredentials.Builder();

View File

@ -45,6 +45,7 @@ public final class ComputeEngineChannelBuilder
} }
@Override @Override
@SuppressWarnings("deprecation") // Not extending ForwardingChannelBuilder2 to preserve ABI.
protected NettyChannelBuilder delegate() { protected NettyChannelBuilder delegate() {
return delegate; return delegate;
} }

View File

@ -45,6 +45,7 @@ public final class GoogleDefaultChannelBuilder
} }
@Override @Override
@SuppressWarnings("deprecation") // Not extending ForwardingChannelBuilder2 to preserve ABI.
protected NettyChannelBuilder delegate() { protected NettyChannelBuilder delegate() {
return delegate; return delegate;
} }

View File

@ -156,6 +156,7 @@ public final class AndroidChannelBuilder extends ForwardingChannelBuilder<Androi
} }
@Override @Override
@SuppressWarnings("deprecation") // Not extending ForwardingChannelBuilder2 to preserve ABI.
protected ManagedChannelBuilder<?> delegate() { protected ManagedChannelBuilder<?> delegate() {
return delegateBuilder; return delegateBuilder;
} }

View File

@ -26,7 +26,7 @@ import javax.annotation.Nullable;
* A {@link ManagedChannelBuilder} that delegates all its builder methods to another builder by * A {@link ManagedChannelBuilder} that delegates all its builder methods to another builder by
* default. * default.
* *
* <p>Important! Use {@link ForwardingChannelBuilder2} instead! * <p>DEPRECATED: Use {@link ForwardingChannelBuilder2} instead!
* *
* <p>This class mistakenly used {@code <T extends ForwardingChannelBuilder<T>>} which causes * <p>This class mistakenly used {@code <T extends ForwardingChannelBuilder<T>>} which causes
* return types to be {@link ForwardingChannelBuilder} instead of {@link ManagedChannelBuilder}. * return types to be {@link ForwardingChannelBuilder} instead of {@link ManagedChannelBuilder}.
@ -38,14 +38,29 @@ import javax.annotation.Nullable;
*/ */
public abstract class ForwardingChannelBuilder<T extends ForwardingChannelBuilder<T>> public abstract class ForwardingChannelBuilder<T extends ForwardingChannelBuilder<T>>
extends ForwardingChannelBuilder2<T> { extends ForwardingChannelBuilder2<T> {
// TODO(sergiitk): deprecate after stabilizing
/** /**
* The default constructor. * The default constructor.
*/ */
protected ForwardingChannelBuilder() { protected ForwardingChannelBuilder() {
} }
/**
* Returns the delegated {@code ManagedChannelBuilder}.
*
* <p>NOTE: this method is marked deprecated instead the class itself, so that classes extending
* {@link ForwardingChannelBuilder2} won't need class-level
* {@code @SuppressWarnings("deprecation")} annotation. Such annotation would suppress all
* deprecation warnings in all methods, inadvertently hiding any real deprecation warnings needing
* to be addressed. However, each child class is expected to implement {@code delegate()}.
* Therefore, the {@code @Deprecated} annotation is added to this method, and not to the class.
*
* @deprecated As of 1.60.0, use {@link ForwardingChannelBuilder2} instead.
*/
@Override
@Deprecated
protected abstract ManagedChannelBuilder<?> delegate();
@Override @Override
public T directExecutor() { public T directExecutor() {
delegate().directExecutor(); delegate().directExecutor();

View File

@ -39,6 +39,7 @@ public class ForwardingChannelBuilderTest {
private final class TestBuilder extends ForwardingChannelBuilder<TestBuilder> { private final class TestBuilder extends ForwardingChannelBuilder<TestBuilder> {
@Override @Override
@SuppressWarnings("deprecation")
protected ManagedChannelBuilder<?> delegate() { protected ManagedChannelBuilder<?> delegate() {
return mockDelegate; return mockDelegate;
} }

View File

@ -125,7 +125,7 @@ public class ManagedChannelRegistryTest {
return NewChannelBuilderResult.error("dodging"); return NewChannelBuilderResult.error("dodging");
} }
}); });
class MockChannelBuilder extends ForwardingChannelBuilder<MockChannelBuilder> { class MockChannelBuilder extends ForwardingChannelBuilder2<MockChannelBuilder> {
@Override public ManagedChannelBuilder<?> delegate() { @Override public ManagedChannelBuilder<?> delegate() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@ -199,7 +199,7 @@ public class ManagedChannelRegistryTest {
throw new AssertionError(); throw new AssertionError();
} }
}); });
class MockChannelBuilder extends ForwardingChannelBuilder<MockChannelBuilder> { class MockChannelBuilder extends ForwardingChannelBuilder2<MockChannelBuilder> {
@Override public ManagedChannelBuilder<?> delegate() { @Override public ManagedChannelBuilder<?> delegate() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@ -282,7 +282,7 @@ public class ManagedChannelRegistryTest {
NameResolverRegistry nameResolverRegistry = new NameResolverRegistry(); NameResolverRegistry nameResolverRegistry = new NameResolverRegistry();
ManagedChannelRegistry registry = new ManagedChannelRegistry(); ManagedChannelRegistry registry = new ManagedChannelRegistry();
class MockChannelBuilder extends ForwardingChannelBuilder<MockChannelBuilder> { class MockChannelBuilder extends ForwardingChannelBuilder2<MockChannelBuilder> {
@Override public ManagedChannelBuilder<?> delegate() { @Override public ManagedChannelBuilder<?> delegate() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@ -320,7 +320,7 @@ public class ManagedChannelRegistryTest {
}); });
ManagedChannelRegistry registry = new ManagedChannelRegistry(); ManagedChannelRegistry registry = new ManagedChannelRegistry();
class MockChannelBuilder extends ForwardingChannelBuilder<MockChannelBuilder> { class MockChannelBuilder extends ForwardingChannelBuilder2<MockChannelBuilder> {
@Override public ManagedChannelBuilder<?> delegate() { @Override public ManagedChannelBuilder<?> delegate() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@ -351,7 +351,7 @@ public class ManagedChannelRegistryTest {
ManagedChannelRegistry registry = new ManagedChannelRegistry(); ManagedChannelRegistry registry = new ManagedChannelRegistry();
class MockChannelBuilder extends ForwardingChannelBuilder<MockChannelBuilder> { class MockChannelBuilder extends ForwardingChannelBuilder2<MockChannelBuilder> {
@Override public ManagedChannelBuilder<?> delegate() { @Override public ManagedChannelBuilder<?> delegate() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }

View File

@ -231,6 +231,7 @@ public final class BinderChannelBuilder
} }
@Override @Override
@SuppressWarnings("deprecation") // Not extending ForwardingChannelBuilder2 to preserve ABI.
protected ManagedChannelBuilder<?> delegate() { protected ManagedChannelBuilder<?> delegate() {
return managedChannelImplBuilder; return managedChannelImplBuilder;
} }

View File

@ -49,7 +49,7 @@ import io.grpc.Context;
import io.grpc.Deadline; import io.grpc.Deadline;
import io.grpc.DecompressorRegistry; import io.grpc.DecompressorRegistry;
import io.grpc.EquivalentAddressGroup; import io.grpc.EquivalentAddressGroup;
import io.grpc.ForwardingChannelBuilder; import io.grpc.ForwardingChannelBuilder2;
import io.grpc.ForwardingClientCall; import io.grpc.ForwardingClientCall;
import io.grpc.Grpc; import io.grpc.Grpc;
import io.grpc.InternalChannelz; import io.grpc.InternalChannelz;
@ -1593,7 +1593,7 @@ final class ManagedChannelImpl extends ManagedChannel implements
checkNotNull(channelCreds, "channelCreds"); checkNotNull(channelCreds, "channelCreds");
final class ResolvingOobChannelBuilder final class ResolvingOobChannelBuilder
extends ForwardingChannelBuilder<ResolvingOobChannelBuilder> { extends ForwardingChannelBuilder2<ResolvingOobChannelBuilder> {
final ManagedChannelBuilder<?> delegate; final ManagedChannelBuilder<?> delegate;
ResolvingOobChannelBuilder() { ResolvingOobChannelBuilder() {

View File

@ -40,7 +40,7 @@ import io.grpc.ChannelCredentials;
import io.grpc.ChannelLogger; import io.grpc.ChannelLogger;
import io.grpc.ConnectivityState; import io.grpc.ConnectivityState;
import io.grpc.EquivalentAddressGroup; import io.grpc.EquivalentAddressGroup;
import io.grpc.ForwardingChannelBuilder; import io.grpc.ForwardingChannelBuilder2;
import io.grpc.LoadBalancer; import io.grpc.LoadBalancer;
import io.grpc.LoadBalancer.Helper; import io.grpc.LoadBalancer.Helper;
import io.grpc.LoadBalancer.PickResult; import io.grpc.LoadBalancer.PickResult;
@ -817,7 +817,7 @@ public class CachingRlsLbClientTest {
final InProcessChannelBuilder builder = final InProcessChannelBuilder builder =
InProcessChannelBuilder.forName(target).directExecutor(); InProcessChannelBuilder.forName(target).directExecutor();
class CleaningChannelBuilder extends ForwardingChannelBuilder<CleaningChannelBuilder> { class CleaningChannelBuilder extends ForwardingChannelBuilder2<CleaningChannelBuilder> {
@Override @Override
protected ManagedChannelBuilder<?> delegate() { protected ManagedChannelBuilder<?> delegate() {

View File

@ -36,7 +36,7 @@ import io.grpc.ChannelLogger;
import io.grpc.ConnectivityState; import io.grpc.ConnectivityState;
import io.grpc.ConnectivityStateInfo; import io.grpc.ConnectivityStateInfo;
import io.grpc.EquivalentAddressGroup; import io.grpc.EquivalentAddressGroup;
import io.grpc.ForwardingChannelBuilder; import io.grpc.ForwardingChannelBuilder2;
import io.grpc.LoadBalancer.CreateSubchannelArgs; import io.grpc.LoadBalancer.CreateSubchannelArgs;
import io.grpc.LoadBalancer.Helper; import io.grpc.LoadBalancer.Helper;
import io.grpc.LoadBalancer.PickResult; import io.grpc.LoadBalancer.PickResult;
@ -519,7 +519,7 @@ public class RlsLoadBalancerTest {
final InProcessChannelBuilder builder = final InProcessChannelBuilder builder =
InProcessChannelBuilder.forName(target).directExecutor(); InProcessChannelBuilder.forName(target).directExecutor();
class CleaningChannelBuilder extends ForwardingChannelBuilder<CleaningChannelBuilder> { class CleaningChannelBuilder extends ForwardingChannelBuilder2<CleaningChannelBuilder> {
@Override @Override
protected ManagedChannelBuilder<?> delegate() { protected ManagedChannelBuilder<?> delegate() {