@@ -318,6 +318,49 @@ public ManagedChannelImplBuilder(
318318 InternalConfiguratorRegistry .configureChannelBuilder (this );
319319 }
320320
321+ /**
322+ * Creates a new managed channel builder with a target string, which can be
323+ * either a valid {@link io.grpc.NameResolver}-compliant URI, or an authority
324+ * string. Transport
325+ * implementors must provide client transport factory builder, and may set
326+ * custom channel default
327+ * port provider.
328+ *
329+ * @param channelCreds The ChannelCredentials provided by the user.
330+ * These may be used when
331+ * creating derivative channels.
332+ * @param nameResolverRegistry the registry used to look up name resolvers.
333+ * @param nameResolverProvider the provider used to look up name resolvers.
334+ */
335+ public ManagedChannelImplBuilder (
336+ String target , @ Nullable ChannelCredentials channelCreds , @ Nullable CallCredentials callCreds ,
337+ ClientTransportFactoryBuilder clientTransportFactoryBuilder ,
338+ @ Nullable ChannelBuilderDefaultPortProvider channelBuilderDefaultPortProvider ,
339+ @ Nullable NameResolverRegistry nameResolverRegistry ,
340+ @ Nullable NameResolverProvider nameResolverProvider ) {
341+ this .target = checkNotNull (target , "target" );
342+ this .channelCredentials = channelCreds ;
343+ this .callCredentials = callCreds ;
344+ this .clientTransportFactoryBuilder = checkNotNull (clientTransportFactoryBuilder ,
345+ "clientTransportFactoryBuilder" );
346+ this .directServerAddress = null ;
347+
348+ if (channelBuilderDefaultPortProvider != null ) {
349+ this .channelBuilderDefaultPortProvider = channelBuilderDefaultPortProvider ;
350+ } else {
351+ this .channelBuilderDefaultPortProvider = new ManagedChannelDefaultPortProvider ();
352+ }
353+ if (nameResolverRegistry != null ) {
354+ this .nameResolverRegistry = nameResolverRegistry ;
355+ }
356+ if (nameResolverProvider != null ) {
357+ this .nameResolverProvider = nameResolverProvider ;
358+ }
359+
360+ // TODO(dnvindhya): Move configurator to all the individual builders
361+ InternalConfiguratorRegistry .configureChannelBuilder (this );
362+ }
363+
321364 /**
322365 * Returns a target string for the SocketAddress. It is only used as a placeholder, because
323366 * DirectAddressNameResolverProvider will not actually try to use it. However, it must be a valid
@@ -447,16 +490,11 @@ public ManagedChannelImplBuilder nameResolverFactory(NameResolver.Factory resolv
447490 return this ;
448491 }
449492
450- public ManagedChannelImplBuilder nameResolverRegistry (NameResolverRegistry resolverRegistry ) {
493+ ManagedChannelImplBuilder nameResolverRegistry (NameResolverRegistry resolverRegistry ) {
451494 this .nameResolverRegistry = resolverRegistry ;
452495 return this ;
453496 }
454497
455- public ManagedChannelImplBuilder nameResolverProvider (NameResolverProvider provider ) {
456- this .nameResolverProvider = provider ;
457- return this ;
458- }
459-
460498 @ Override
461499 public ManagedChannelImplBuilder defaultLoadBalancingPolicy (String policy ) {
462500 Preconditions .checkState (directServerAddress == null ,
0 commit comments