api: Expose ForwardingServerBuilder for XdsServerBuilder

This reduces ABI issues caused by returning the more precise
XdsServerBuilder in the API. See
https://github.com/grpc/grpc-java/issues/7552.
This commit is contained in:
Eric Anderson 2020-11-18 10:43:01 -08:00 committed by Eric Anderson
parent bde8bda273
commit 980956d503
2 changed files with 9 additions and 90 deletions

View File

@ -27,10 +27,10 @@ import javax.annotation.Nullable;
* A {@link ServerBuilder} that delegates all its builder method to another builder by default. * A {@link ServerBuilder} that delegates all its builder method to another builder by default.
* *
* @param <T> The type of the subclass extending this abstract class. * @param <T> The type of the subclass extending this abstract class.
* @since 1.33.0 * @since 1.34.0
*/ */
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/7393") @ExperimentalApi("https://github.com/grpc/grpc-java/issues/7393")
abstract class ForwardingServerBuilder<T extends ServerBuilder<T>> extends ServerBuilder<T> { public abstract class ForwardingServerBuilder<T extends ServerBuilder<T>> extends ServerBuilder<T> {
/** The default constructor. */ /** The default constructor. */
protected ForwardingServerBuilder() {} protected ForwardingServerBuilder() {}
@ -160,7 +160,7 @@ abstract class ForwardingServerBuilder<T extends ServerBuilder<T>> extends Serve
/** /**
* Returns the correctly typed version of the builder. * Returns the correctly typed version of the builder.
*/ */
protected final T thisT() { private T thisT() {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
T thisT = (T) this; T thisT = (T) this;
return thisT; return thisT;

View File

@ -18,17 +18,11 @@ package io.grpc.xds;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import io.grpc.Attributes; import io.grpc.Attributes;
import io.grpc.BindableService;
import io.grpc.CompressorRegistry;
import io.grpc.DecompressorRegistry;
import io.grpc.ExperimentalApi; import io.grpc.ExperimentalApi;
import io.grpc.HandlerRegistry; import io.grpc.ForwardingServerBuilder;
import io.grpc.Internal;
import io.grpc.Server; import io.grpc.Server;
import io.grpc.ServerBuilder; import io.grpc.ServerBuilder;
import io.grpc.ServerInterceptor;
import io.grpc.ServerServiceDefinition;
import io.grpc.ServerStreamTracer;
import io.grpc.ServerTransportFilter;
import io.grpc.Status; import io.grpc.Status;
import io.grpc.netty.InternalNettyServerBuilder; import io.grpc.netty.InternalNettyServerBuilder;
import io.grpc.netty.InternalProtocolNegotiator.ProtocolNegotiator; import io.grpc.netty.InternalProtocolNegotiator.ProtocolNegotiator;
@ -42,16 +36,13 @@ import io.netty.handler.ssl.SslContextBuilder;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import javax.net.ssl.SSLException; import javax.net.ssl.SSLException;
/** /**
* A version of {@link ServerBuilder} to create xDS managed servers that will use SDS to set up SSL * A version of {@link ServerBuilder} to create xDS managed servers that will use SDS to set up SSL
* with peers. Note, this is not ready to use yet. * with peers. Note, this is not ready to use yet.
*/ */
public final class XdsServerBuilder extends ServerBuilder<XdsServerBuilder> { public final class XdsServerBuilder extends ForwardingServerBuilder<XdsServerBuilder> {
private final NettyServerBuilder delegate; private final NettyServerBuilder delegate;
private final int port; private final int port;
@ -64,63 +55,9 @@ public final class XdsServerBuilder extends ServerBuilder<XdsServerBuilder> {
} }
@Override @Override
public XdsServerBuilder handshakeTimeout(long timeout, TimeUnit unit) { @Internal
delegate.handshakeTimeout(timeout, unit); protected ServerBuilder<?> delegate() {
return this; return delegate;
}
@Override
public XdsServerBuilder directExecutor() {
delegate.directExecutor();
return this;
}
@Override
public XdsServerBuilder addStreamTracerFactory(ServerStreamTracer.Factory factory) {
delegate.addStreamTracerFactory(factory);
return this;
}
@Override
public XdsServerBuilder addTransportFilter(ServerTransportFilter filter) {
delegate.addTransportFilter(filter);
return this;
}
@Override
public XdsServerBuilder executor(Executor executor) {
delegate.executor(executor);
return this;
}
@Override
public XdsServerBuilder addService(ServerServiceDefinition service) {
delegate.addService(service);
return this;
}
@Override
public XdsServerBuilder addService(BindableService bindableService) {
delegate.addService(bindableService);
return this;
}
@Override
public XdsServerBuilder fallbackHandlerRegistry(@Nullable HandlerRegistry fallbackRegistry) {
delegate.fallbackHandlerRegistry(fallbackRegistry);
return this;
}
@Override
public XdsServerBuilder useTransportSecurity(File certChain, File privateKey) {
delegate.useTransportSecurity(certChain, privateKey);
return this;
}
@Override
public XdsServerBuilder useTransportSecurity(InputStream certChain, InputStream privateKey) {
delegate.useTransportSecurity(certChain, privateKey);
return this;
} }
/** /**
@ -163,24 +100,6 @@ public final class XdsServerBuilder extends ServerBuilder<XdsServerBuilder> {
return this; return this;
} }
@Override
public XdsServerBuilder decompressorRegistry(@Nullable DecompressorRegistry registry) {
delegate.decompressorRegistry(registry);
return this;
}
@Override
public XdsServerBuilder compressorRegistry(@Nullable CompressorRegistry registry) {
delegate.compressorRegistry(registry);
return this;
}
@Override
public XdsServerBuilder intercept(ServerInterceptor interceptor) {
delegate.intercept(interceptor);
return this;
}
/** Set the fallback protocolNegotiator. Pass null to unset a previously set value. */ /** Set the fallback protocolNegotiator. Pass null to unset a previously set value. */
public XdsServerBuilder fallbackProtocolNegotiator( public XdsServerBuilder fallbackProtocolNegotiator(
ProtocolNegotiator fallbackProtocolNegotiator) { ProtocolNegotiator fallbackProtocolNegotiator) {