Skip to content

Commit 7fc22d7

Browse files
committed
fix: suggested changes
1 parent 3859ae5 commit 7fc22d7

3 files changed

Lines changed: 35 additions & 45 deletions

File tree

api/src/main/java/io/grpc/Grpc.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,7 @@ public static ManagedChannelBuilder<?> newChannelBuilder(
105105
* Creates a channel builder with a target string, credentials, and a specific
106106
* name resolver registry.
107107
*
108-
* <p>This method uses the {@link ManagedChannelRegistry#getDefaultRegistry()} to
109-
* find an appropriate underlying transport provider based on the target and credentials.
110-
* The provided {@code nameResolverRegistry} is used to resolve the target address
108+
* <p>The provided {@code nameResolverRegistry} is used to resolve the target address
111109
* into physical addresses (e.g., DNS or custom schemes).
112110
*
113111
* @param target the target URI for the channel, such as {@code "localhost:8080"}
@@ -118,8 +116,9 @@ public static ManagedChannelBuilder<?> newChannelBuilder(
118116
* @return a {@link ManagedChannelBuilder} instance configured with the given parameters
119117
* @throws IllegalArgumentException if no provider is available for the given target
120118
* or credentials
121-
* @since 1.79.0
119+
* @since 1.81.0
122120
*/
121+
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/12694")
123122
public static ManagedChannelBuilder<?> newChannelBuilder(
124123
String target,
125124
ChannelCredentials creds,

api/src/main/java/io/grpc/ManagedChannelProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ protected NewChannelBuilderResult newChannelBuilder(String target, ChannelCreden
8787
*
8888
* <p>This method allows for fine-grained control over name resolution by providing
8989
* both a {@link NameResolverRegistry} and a specific {@link NameResolverProvider}.
90-
* Unlike the public factory methods, this returns a {@link NewChannelBuilderResult},
90+
* This returns a {@link NewChannelBuilderResult},
9191
* which may contain an error string if the provided credentials or target are
9292
* not supported by this provider.
9393
*

core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java

Lines changed: 31 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -294,20 +294,14 @@ public ManagedChannelImplBuilder(
294294
String target, @Nullable ChannelCredentials channelCreds, @Nullable CallCredentials callCreds,
295295
ClientTransportFactoryBuilder clientTransportFactoryBuilder,
296296
@Nullable ChannelBuilderDefaultPortProvider channelBuilderDefaultPortProvider) {
297-
this.target = checkNotNull(target, "target");
298-
this.channelCredentials = channelCreds;
299-
this.callCredentials = callCreds;
300-
this.clientTransportFactoryBuilder = checkNotNull(clientTransportFactoryBuilder,
301-
"clientTransportFactoryBuilder");
302-
this.directServerAddress = null;
303-
304-
if (channelBuilderDefaultPortProvider != null) {
305-
this.channelBuilderDefaultPortProvider = channelBuilderDefaultPortProvider;
306-
} else {
307-
this.channelBuilderDefaultPortProvider = new ManagedChannelDefaultPortProvider();
308-
}
309-
// TODO(dnvindhya): Move configurator to all the individual builders
310-
InternalConfiguratorRegistry.configureChannelBuilder(this);
297+
this(
298+
target,
299+
channelCreds,
300+
callCreds,
301+
clientTransportFactoryBuilder,
302+
channelBuilderDefaultPortProvider,
303+
null,
304+
null);
311305
}
312306

313307
/**
@@ -337,17 +331,15 @@ public ManagedChannelImplBuilder(
337331
"clientTransportFactoryBuilder");
338332
this.directServerAddress = null;
339333

340-
if (channelBuilderDefaultPortProvider != null) {
341-
this.channelBuilderDefaultPortProvider = channelBuilderDefaultPortProvider;
342-
} else {
343-
this.channelBuilderDefaultPortProvider = new ManagedChannelDefaultPortProvider();
344-
}
345-
if (nameResolverRegistry != null) {
346-
this.nameResolverRegistry = nameResolverRegistry;
347-
}
348-
if (nameResolverProvider != null) {
349-
this.nameResolverProvider = nameResolverProvider;
350-
}
334+
this.channelBuilderDefaultPortProvider =
335+
channelBuilderDefaultPortProvider != null
336+
? channelBuilderDefaultPortProvider
337+
: new ManagedChannelDefaultPortProvider();
338+
this.nameResolverRegistry =
339+
nameResolverRegistry != null
340+
? nameResolverRegistry
341+
: NameResolverRegistry.getDefaultRegistry();
342+
this.nameResolverProvider = nameResolverProvider;
351343

352344
// TODO(dnvindhya): Move configurator to all the individual builders
353345
InternalConfiguratorRegistry.configureChannelBuilder(this);
@@ -908,33 +900,32 @@ static ResolvedNameResolver getNameResolverProvider(
908900
if (targetUri != null) {
909901
// For "localhost:8080" this would likely cause provider to be null, because "localhost" is
910902
// parsed as the scheme. Will hit the next case and try "dns:///localhost:8080".
911-
provider = nameResolverProvider;
912-
if (provider == null) {
903+
// Use the explicit provider if its scheme matches the target URI.
904+
if (nameResolverProvider != null
905+
&& targetUri.getScheme().equals(nameResolverProvider.getDefaultScheme())) {
906+
provider = nameResolverProvider;
907+
} else {
913908
provider = nameResolverRegistry.getProviderForScheme(targetUri.getScheme());
914909
}
915910
}
916911

917-
if (!URI_PATTERN.matcher(target).matches()) {
912+
if (provider == null && !URI_PATTERN.matcher(target).matches()) {
918913
// It doesn't look like a URI target. Maybe it's an authority string. Try with
919914
// the default scheme from the registry (if provider is not specified) or
920915
// the provider's default scheme (if provider is specified).
921-
String scheme = (provider != null)
922-
? provider.getDefaultScheme()
923-
: (nameResolverProvider != null
924-
? nameResolverProvider.getDefaultScheme()
925-
: nameResolverRegistry.getDefaultScheme());
916+
String scheme = nameResolverProvider != null
917+
? nameResolverProvider.getDefaultScheme()
918+
: nameResolverRegistry.getDefaultScheme();
926919
try {
927920
targetUri = new URI(scheme, "", "/" + target, null);
928921
} catch (URISyntaxException e) {
929-
// Should not happen because we just validated the URI.
922+
// Should not be possible
930923
throw new IllegalArgumentException(e);
931924
}
932-
if (provider == null) {
933-
if (nameResolverProvider != null) {
934-
provider = nameResolverProvider;
935-
} else {
936-
provider = nameResolverRegistry.getProviderForScheme(targetUri.getScheme());
937-
}
925+
if (nameResolverProvider != null) {
926+
provider = nameResolverProvider;
927+
} else {
928+
provider = nameResolverRegistry.getProviderForScheme(targetUri.getScheme());
938929
}
939930
}
940931

0 commit comments

Comments
 (0)