Skip to content

Commit

Permalink
api: Expose ForwardingServerBuilder for XdsServerBuilder
Browse files Browse the repository at this point in the history
This reduces ABI issues caused by returning the more precise
XdsServerBuilder in the API. See
grpc#7552.
  • Loading branch information
ejona86 authored and dfawley committed Jan 15, 2021
1 parent 0c6aff2 commit 070eaf6
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 90 deletions.
6 changes: 3 additions & 3 deletions api/src/main/java/io/grpc/ForwardingServerBuilder.java
Expand Up @@ -27,10 +27,10 @@
* 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.
* @since 1.33.0
* @since 1.34.0
*/
@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. */
protected ForwardingServerBuilder() {}
Expand Down Expand Up @@ -160,7 +160,7 @@ public String toString() {
/**
* Returns the correctly typed version of the builder.
*/
protected final T thisT() {
private T thisT() {
@SuppressWarnings("unchecked")
T thisT = (T) this;
return thisT;
Expand Down
93 changes: 6 additions & 87 deletions xds/src/main/java/io/grpc/xds/XdsServerBuilder.java
Expand Up @@ -18,17 +18,11 @@

import com.google.common.annotations.VisibleForTesting;
import io.grpc.Attributes;
import io.grpc.BindableService;
import io.grpc.CompressorRegistry;
import io.grpc.DecompressorRegistry;
import io.grpc.ExperimentalApi;
import io.grpc.HandlerRegistry;
import io.grpc.ForwardingServerBuilder;
import io.grpc.Internal;
import io.grpc.Server;
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.netty.InternalNettyServerBuilder;
import io.grpc.netty.InternalProtocolNegotiator.ProtocolNegotiator;
Expand All @@ -42,16 +36,13 @@
import java.io.File;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import javax.net.ssl.SSLException;

/**
* 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.
*/
public final class XdsServerBuilder extends ServerBuilder<XdsServerBuilder> {
public final class XdsServerBuilder extends ForwardingServerBuilder<XdsServerBuilder> {

private final NettyServerBuilder delegate;
private final int port;
Expand All @@ -64,63 +55,9 @@ private XdsServerBuilder(NettyServerBuilder nettyDelegate, int port) {
}

@Override
public XdsServerBuilder handshakeTimeout(long timeout, TimeUnit unit) {
delegate.handshakeTimeout(timeout, unit);
return this;
}

@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;
@Internal
protected ServerBuilder<?> delegate() {
return delegate;
}

/**
Expand Down Expand Up @@ -163,24 +100,6 @@ public XdsServerBuilder useXdsSecurityWithTransportSecurityFallback(
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. */
public XdsServerBuilder fallbackProtocolNegotiator(
ProtocolNegotiator fallbackProtocolNegotiator) {
Expand Down

0 comments on commit 070eaf6

Please sign in to comment.