@@ -309,6 +309,49 @@ public ManagedChannelImplBuilder(
309309 InternalConfiguratorRegistry .configureChannelBuilder (this );
310310 }
311311
312+ /**
313+ * Creates a new managed channel builder with a target string, which can be
314+ * either a valid {@link io.grpc.NameResolver}-compliant URI, or an authority
315+ * string. Transport
316+ * implementors must provide client transport factory builder, and may set
317+ * custom channel default
318+ * port provider.
319+ *
320+ * @param channelCreds The ChannelCredentials provided by the user.
321+ * These may be used when
322+ * creating derivative channels.
323+ * @param nameResolverRegistry the registry used to look up name resolvers.
324+ * @param nameResolverProvider the provider used to look up name resolvers.
325+ */
326+ public ManagedChannelImplBuilder (
327+ String target , @ Nullable ChannelCredentials channelCreds , @ Nullable CallCredentials callCreds ,
328+ ClientTransportFactoryBuilder clientTransportFactoryBuilder ,
329+ @ Nullable ChannelBuilderDefaultPortProvider channelBuilderDefaultPortProvider ,
330+ @ Nullable NameResolverRegistry nameResolverRegistry ,
331+ @ Nullable NameResolverProvider nameResolverProvider ) {
332+ this .target = checkNotNull (target , "target" );
333+ this .channelCredentials = channelCreds ;
334+ this .callCredentials = callCreds ;
335+ this .clientTransportFactoryBuilder = checkNotNull (clientTransportFactoryBuilder ,
336+ "clientTransportFactoryBuilder" );
337+ this .directServerAddress = null ;
338+
339+ if (channelBuilderDefaultPortProvider != null ) {
340+ this .channelBuilderDefaultPortProvider = channelBuilderDefaultPortProvider ;
341+ } else {
342+ this .channelBuilderDefaultPortProvider = new ManagedChannelDefaultPortProvider ();
343+ }
344+ if (nameResolverRegistry != null ) {
345+ this .nameResolverRegistry = nameResolverRegistry ;
346+ }
347+ if (nameResolverProvider != null ) {
348+ this .nameResolverProvider = nameResolverProvider ;
349+ }
350+
351+ // TODO(dnvindhya): Move configurator to all the individual builders
352+ InternalConfiguratorRegistry .configureChannelBuilder (this );
353+ }
354+
312355 /**
313356 * Returns a target string for the SocketAddress. It is only used as a placeholder, because
314357 * DirectAddressNameResolverProvider will not actually try to use it. However, it must be a valid
@@ -438,16 +481,11 @@ public ManagedChannelImplBuilder nameResolverFactory(NameResolver.Factory resolv
438481 return this ;
439482 }
440483
441- public ManagedChannelImplBuilder nameResolverRegistry (NameResolverRegistry resolverRegistry ) {
484+ ManagedChannelImplBuilder nameResolverRegistry (NameResolverRegistry resolverRegistry ) {
442485 this .nameResolverRegistry = resolverRegistry ;
443486 return this ;
444487 }
445488
446- public ManagedChannelImplBuilder nameResolverProvider (NameResolverProvider provider ) {
447- this .nameResolverProvider = provider ;
448- return this ;
449- }
450-
451489 @ Override
452490 public ManagedChannelImplBuilder defaultLoadBalancingPolicy (String policy ) {
453491 Preconditions .checkState (directServerAddress == null ,
0 commit comments