Skip to content

Commit 6913156

Browse files
committed
API for nameResolverRegistry
1 parent 1488536 commit 6913156

File tree

4 files changed

+44
-29
lines changed

4 files changed

+44
-29
lines changed

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

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,32 @@ public static ManagedChannelBuilder<?> newChannelBuilder(
102102
}
103103

104104
/**
105-
* Creates a channel builder with a target string, credentials and nameResolverRegistry.
105+
* Creates a channel builder with a target string, credentials, and a specific
106+
* name resolver registry.
107+
*
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
111+
* into physical addresses (e.g., DNS or custom schemes).
112+
*
113+
* @param target the target URI for the channel, such as {@code "localhost:8080"}
114+
* or {@code "dns:///example.com"}
115+
* @param creds the channel credentials to use for secure communication
116+
* @param nameResolverRegistry the registry used to look up {@link NameResolver}
117+
* providers for the target
118+
* @return a {@link ManagedChannelBuilder} instance configured with the given parameters
119+
* @throws IllegalArgumentException if no provider is available for the given target
120+
* or credentials
121+
* @since 1.79.0
106122
*/
107-
public static ManagedChannelBuilder<?> newChannelBuilder(String target,
108-
ChannelCredentials creds, NameResolverRegistry nameResolverRegistry) {
109-
return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(nameResolverRegistry,
110-
target, creds);
123+
public static ManagedChannelBuilder<?> newChannelBuilder(
124+
String target,
125+
ChannelCredentials creds,
126+
NameResolverRegistry nameResolverRegistry) {
127+
return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(
128+
nameResolverRegistry,
129+
target,
130+
creds);
111131
}
112132

113133
/**

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

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,28 @@ protected NewChannelBuilderResult newChannelBuilder(String target, ChannelCreden
8282
}
8383

8484
/**
85-
* Creates a channel builder with a target string, credentials, NameResolverRegistry
86-
* and NameResolverProvider. Returns an error-string result if unable to
87-
* understand the credentials.
85+
* Creates a channel builder using the provided target, credentials, and resolution
86+
* components.
87+
*
88+
* <p>This method allows for fine-grained control over name resolution by providing
89+
* both a {@link NameResolverRegistry} and a specific {@link NameResolverProvider}.
90+
* Unlike the public factory methods, this returns a {@link NewChannelBuilderResult},
91+
* which may contain an error string if the provided credentials or target are
92+
* not supported by this provider.
93+
*
94+
* @param target the target URI for the channel
95+
* @param creds the channel credentials to use
96+
* @param nameResolverRegistry the registry used for looking up name resolvers
97+
* @param nameResolverProvider a specific provider to use, or {@code null} to
98+
* search the registry
99+
* @return a {@link NewChannelBuilderResult} containing either the builder or an
100+
* error description
101+
* @since 1.79.0
88102
*/
89103
protected NewChannelBuilderResult newChannelBuilder(String target, ChannelCredentials creds,
90104
NameResolverRegistry nameResolverRegistry,
91105
NameResolverProvider nameResolverProvider) {
106+
// Implementation note: Currently delegates to the simplified version
92107
return newChannelBuilder(target, creds);
93108
}
94109

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ ManagedChannelBuilder<?> newChannelBuilder(NameResolverRegistry nameResolverRegi
191191
continue;
192192
}
193193
ManagedChannelProvider.NewChannelBuilderResult result
194-
= provider.newChannelBuilder(target, creds);
194+
= provider.newChannelBuilder(target, creds, nameResolverRegistry, nameResolverProvider);
195195
if (result.getChannelBuilder() != null) {
196196
return result.getChannelBuilder();
197197
}

netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import io.grpc.ManagedChannelProvider;
2929
import io.grpc.ManagedChannelProvider.NewChannelBuilderResult;
3030
import io.grpc.ManagedChannelRegistryAccessor;
31-
import io.grpc.NameResolverRegistry;
3231
import io.grpc.TlsChannelCredentials;
33-
import io.grpc.internal.testing.FakeNameResolverProvider;
3432
import io.grpc.stub.StreamObserver;
3533
import io.grpc.testing.GrpcCleanupRule;
3634
import io.grpc.testing.protobuf.SimpleRequest;
@@ -122,24 +120,6 @@ public void managedChannelRegistry_newChannelBuilder() {
122120
channel.shutdownNow();
123121
}
124122

125-
@Test
126-
public void managedChannelRegistry_newChannelBuilderForNameResolverRegistry() {
127-
Assume.assumeTrue(Utils.isEpollAvailable());
128-
NameResolverRegistry nameResolverRegistry = new NameResolverRegistry();
129-
DomainSocketAddress socketAddress = new DomainSocketAddress("test-server");
130-
FakeNameResolverProvider fakeNameResolverProvider = new FakeNameResolverProvider(
131-
"unix:///sock.sock", socketAddress);
132-
nameResolverRegistry.register(fakeNameResolverProvider);
133-
ManagedChannelBuilder<?> managedChannelBuilder
134-
= Grpc.newChannelBuilder("unix:///sock.sock",
135-
InsecureChannelCredentials.create(), nameResolverRegistry);
136-
assertThat(managedChannelBuilder).isNotNull();
137-
ManagedChannel channel = managedChannelBuilder.build();
138-
assertThat(channel).isNotNull();
139-
assertThat(channel.authority()).isEqualTo("/sock.sock");
140-
channel.shutdownNow();
141-
}
142-
143123
@Test
144124
public void udsClientServerTestUsingProvider() throws IOException {
145125
Assume.assumeTrue(Utils.isEpollAvailable());

0 commit comments

Comments
 (0)