Skip to content

Commit 084a087

Browse files
committed
api: Use io.grpc.Uri for target parsing in ManagedChannelRegistry
1 parent 4abd727 commit 084a087

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,11 @@ ManagedChannelBuilder<?> newChannelBuilder(NameResolverRegistry nameResolverRegi
160160
String target, ChannelCredentials creds) {
161161
NameResolverProvider nameResolverProvider = null;
162162
try {
163-
URI uri = new URI(target);
164-
nameResolverProvider = nameResolverRegistry.getProviderForScheme(uri.getScheme());
163+
String scheme =
164+
InternalFeatureFlags.getRfc3986UrisEnabled()
165+
? Uri.parse(target).getScheme()
166+
: new URI(target).getScheme();
167+
nameResolverProvider = nameResolverRegistry.getProviderForScheme(scheme);
165168
} catch (URISyntaxException ignore) {
166169
// bad URI found, just ignore and continue
167170
}

api/src/test/java/io/grpc/ManagedChannelRegistryTest.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,23 @@
2020
import static org.junit.Assert.fail;
2121

2222
import com.google.common.collect.ImmutableSet;
23+
import io.grpc.internal.testing.FlagResetRule;
2324
import java.net.InetSocketAddress;
2425
import java.net.SocketAddress;
2526
import java.net.URI;
27+
import java.util.Arrays;
2628
import java.util.Collection;
2729
import java.util.Collections;
30+
import org.junit.Before;
31+
import org.junit.Rule;
2832
import org.junit.Test;
2933
import org.junit.runner.RunWith;
30-
import org.junit.runners.JUnit4;
34+
import org.junit.runners.Parameterized;
35+
import org.junit.runners.Parameterized.Parameter;
36+
import org.junit.runners.Parameterized.Parameters;
3137

3238
/** Unit tests for {@link ManagedChannelRegistry}. */
33-
@RunWith(JUnit4.class)
39+
@RunWith(Parameterized.class)
3440
public class ManagedChannelRegistryTest {
3541
private String target = "testing123";
3642
private ChannelCredentials creds = new ChannelCredentials() {
@@ -40,6 +46,21 @@ public ChannelCredentials withoutBearerTokens() {
4046
}
4147
};
4248

49+
@Rule public final FlagResetRule flagResetRule = new FlagResetRule();
50+
51+
@Parameters(name = "enableRfc3986UrisParam={0}")
52+
public static Iterable<Object[]> data() {
53+
return Arrays.asList(new Object[][] {{true}, {false}});
54+
}
55+
56+
@Parameter public boolean enableRfc3986UrisParam;
57+
58+
@Before
59+
public void setUp() {
60+
flagResetRule.setFlagForTest(
61+
InternalFeatureFlags::setRfc3986UrisEnabled, enableRfc3986UrisParam);
62+
}
63+
4364
@Test
4465
public void register_unavailableProviderThrows() {
4566
ManagedChannelRegistry reg = new ManagedChannelRegistry();

0 commit comments

Comments
 (0)