@@ -177,6 +177,8 @@ public static ManagedChannelBuilder<?> forTarget(String target) {
177177 @ Nullable
178178 String authorityOverride ;
179179
180+ boolean registryProvided ;
181+
180182 String defaultLbPolicy = GrpcUtil .DEFAULT_LB_POLICY ;
181183
182184 boolean fullStreamDecompression ;
@@ -343,6 +345,7 @@ public ManagedChannelImplBuilder(
343345 }
344346 if (nameResolverRegistry != null ) {
345347 this .nameResolverRegistry = nameResolverRegistry ;
348+ this .registryProvided = true ;
346349 }
347350 if (nameResolverProvider != null ) {
348351 this .nameResolverProvider = nameResolverProvider ;
@@ -467,6 +470,8 @@ public ManagedChannelImplBuilder nameResolverFactory(NameResolver.Factory resolv
467470 Preconditions .checkState (directServerAddress == null ,
468471 "directServerAddress is set (%s), which forbids the use of NameResolverFactory" ,
469472 directServerAddress );
473+ Preconditions .checkState (!registryProvided ,
474+ "NameResolverRegistry is already set, which forbids the use of NameResolverFactory" );
470475 if (resolverFactory != null ) {
471476 NameResolverRegistry reg = new NameResolverRegistry ();
472477 if (resolverFactory instanceof NameResolverProvider ) {
@@ -481,16 +486,11 @@ public ManagedChannelImplBuilder nameResolverFactory(NameResolver.Factory resolv
481486 return this ;
482487 }
483488
484- public ManagedChannelImplBuilder nameResolverRegistry (NameResolverRegistry resolverRegistry ) {
489+ ManagedChannelImplBuilder nameResolverRegistry (NameResolverRegistry resolverRegistry ) {
485490 this .nameResolverRegistry = resolverRegistry ;
486491 return this ;
487492 }
488493
489- public ManagedChannelImplBuilder nameResolverProvider (NameResolverProvider provider ) {
490- this .nameResolverProvider = provider ;
491- return this ;
492- }
493-
494494 @ Override
495495 public ManagedChannelImplBuilder defaultLoadBalancingPolicy (String policy ) {
496496 Preconditions .checkState (directServerAddress == null ,
@@ -923,15 +923,21 @@ static ResolvedNameResolver getNameResolverProvider(
923923 // the provider's default scheme (if provider is specified).
924924 String scheme = (provider != null )
925925 ? provider .getDefaultScheme ()
926- : nameResolverRegistry .getDefaultScheme ();
926+ : (nameResolverProvider != null
927+ ? nameResolverProvider .getDefaultScheme ()
928+ : nameResolverRegistry .getDefaultScheme ());
927929 try {
928930 targetUri = new URI (scheme , "" , "/" + target , null );
929931 } catch (URISyntaxException e ) {
930932 // Should not happen because we just validated the URI.
931933 throw new IllegalArgumentException (e );
932934 }
933935 if (provider == null ) {
934- provider = nameResolverRegistry .getProviderForScheme (targetUri .getScheme ());
936+ if (nameResolverProvider != null ) {
937+ provider = nameResolverProvider ;
938+ } else {
939+ provider = nameResolverRegistry .getProviderForScheme (targetUri .getScheme ());
940+ }
935941 }
936942 }
937943
0 commit comments