Skip to content

Commit

Permalink
core: remove Type from ConfigOrError
Browse files Browse the repository at this point in the history
  • Loading branch information
carl-mastrangelo committed Mar 28, 2019
1 parent a8c7381 commit 5ef8377
Show file tree
Hide file tree
Showing 13 changed files with 41 additions and 41 deletions.
3 changes: 1 addition & 2 deletions core/src/main/java/io/grpc/LoadBalancerProvider.java
Expand Up @@ -63,8 +63,7 @@ public abstract class LoadBalancerProvider extends LoadBalancer.Factory {
* @since 1.20.0
* @see https://github.com/grpc/proposal/blob/master/A24-lb-policy-config.md
*/
public ConfigOrError<?> parseLoadBalancingPolicyConfig(
Map<String, ?> rawLoadBalancingPolicyConfig) {
public ConfigOrError parseLoadBalancingPolicyConfig(Map<String, ?> rawLoadBalancingPolicyConfig) {
return ConfigOrError.UNKNOWN_CONFIG;
}

Expand Down
21 changes: 10 additions & 11 deletions core/src/main/java/io/grpc/NameResolver.java
Expand Up @@ -316,18 +316,17 @@ public SynchronizationContext getSynchronizationContext() {
* @return a tuple of the fully parsed and validated channel configuration, else the Status.
* @since 1.20.0
*/
public ConfigOrError<?> parseServiceConfig(Map<String, ?> rawServiceConfig) {
public ConfigOrError parseServiceConfig(Map<String, ?> rawServiceConfig) {
throw new UnsupportedOperationException("should have been implemented");
}

/**
* Represents either a successfully parsed service config, containing all necessary parts to be
* later applied by the channel, or a Status containing the error encountered while parsing.
*
* @param <T> The message type of the config.
* @since 1.20.0
*/
public static final class ConfigOrError<T> {
public static final class ConfigOrError {

private static final class UnknownConfig {

Expand All @@ -344,29 +343,29 @@ public String toString() {
* indicate that parsing of the service config is neither right nor wrong, but doesn't have
* any meaning.
*/
public static final ConfigOrError<?> UNKNOWN_CONFIG =
public static final ConfigOrError UNKNOWN_CONFIG =
ConfigOrError.fromConfig(new UnknownConfig());

/**
* Returns a {@link ConfigOrError} for the successfully parsed config.
*/
public static <T> ConfigOrError<T> fromConfig(T config) {
return new ConfigOrError<>(config);
public static ConfigOrError fromConfig(Object config) {
return new ConfigOrError(config);
}

/**
* Returns a {@link ConfigOrError} for the failure to parse the config.
*
* @param status a non-OK status
*/
public static <T> ConfigOrError<T> fromError(Status status) {
return new ConfigOrError<>(status);
public static ConfigOrError fromError(Status status) {
return new ConfigOrError(status);
}

private final Status status;
private final T config;
private final Object config;

private ConfigOrError(T config) {
private ConfigOrError(Object config) {
this.config = checkNotNull(config, "config");
this.status = null;
}
Expand All @@ -381,7 +380,7 @@ private ConfigOrError(Status status) {
* Returns config if exists, otherwise null.
*/
@Nullable
public T getConfig() {
public Object getConfig() {
return config;
}

Expand Down
Expand Up @@ -301,7 +301,7 @@ private LoadBalancerProvider getProviderOrThrow(String policy, String choiceReas
* @return null if no selection could be made.
*/
@Nullable
ConfigOrError<PolicySelection> selectLoadBalancerPolicy(Map<String, ?> serviceConfig) {
ConfigOrError selectLoadBalancerPolicy(Map<String, ?> serviceConfig) {
try {
List<LbConfig> loadBalancerConfigs = null;
if (serviceConfig != null) {
Expand Down
10 changes: 6 additions & 4 deletions core/src/main/java/io/grpc/internal/DnsNameResolver.java
Expand Up @@ -292,14 +292,16 @@ public void run() {

Attributes.Builder attrs = Attributes.newBuilder();
if (!resolutionResults.txtRecords.isEmpty()) {
ConfigOrError<Map<String, ?>> serviceConfig =
ConfigOrError serviceConfig =
parseServiceConfig(resolutionResults.txtRecords, random, getLocalHostname());
if (serviceConfig != null) {
if (serviceConfig.getError() != null) {
savedObserver.onError(serviceConfig.getError());
return;
} else {
attrs.set(GrpcAttributes.NAME_RESOLVER_SERVICE_CONFIG, serviceConfig.getConfig());
@SuppressWarnings("unchecked")
Map<String, ?> config = (Map<String, ?>) serviceConfig.getConfig();
attrs.set(GrpcAttributes.NAME_RESOLVER_SERVICE_CONFIG, config);
}
}
} else {
Expand All @@ -312,7 +314,7 @@ public void run() {
}

@Nullable
static ConfigOrError<Map<String, ?>> parseServiceConfig(
static ConfigOrError parseServiceConfig(
List<String> rawTxtRecords, Random random, String localHostname) {
List<Map<String, ?>> possibleServiceConfigChoices;
try {
Expand All @@ -337,7 +339,7 @@ public void run() {
if (possibleServiceConfig == null) {
return null;
}
return ConfigOrError.<Map<String, ?>>fromConfig(possibleServiceConfig);
return ConfigOrError.fromConfig(possibleServiceConfig);
}

private void resolve() {
Expand Down
5 changes: 2 additions & 3 deletions core/src/main/java/io/grpc/internal/ManagedChannelImpl.java
Expand Up @@ -1772,12 +1772,11 @@ public SynchronizationContext getSynchronizationContext() {

@Override
@SuppressWarnings("unchecked")
public ConfigOrError<ManagedChannelServiceConfig> parseServiceConfig(
Map<String, ?> rawServiceConfig) {
public ConfigOrError parseServiceConfig(Map<String, ?> rawServiceConfig) {
try {
Object loadBalancingPolicySelection;
if (autoLoadBalancerFactory != null) {
ConfigOrError<?> choiceFromLoadBalancer =
ConfigOrError choiceFromLoadBalancer =
autoLoadBalancerFactory.selectLoadBalancerPolicy(rawServiceConfig);
if (choiceFromLoadBalancer == null) {
loadBalancingPolicySelection = null;
Expand Down
Expand Up @@ -51,7 +51,7 @@ public LoadBalancer newLoadBalancer(LoadBalancer.Helper helper) {
}

@Override
public ConfigOrError<?> parseLoadBalancingPolicyConfig(
public ConfigOrError parseLoadBalancingPolicyConfig(
Map<String, ?> rawLoadBalancingPolicyConfig) {
return ConfigOrError.fromConfig(NO_CONFIG);
}
Expand Down
Expand Up @@ -56,7 +56,7 @@ public LoadBalancer newLoadBalancer(LoadBalancer.Helper helper) {
}

@Override
public ConfigOrError<?> parseLoadBalancingPolicyConfig(
public ConfigOrError parseLoadBalancingPolicyConfig(
Map<String, ?> rawLoadBalancingPolicyConfig) {
return ConfigOrError.fromConfig(NO_CONFIG);
}
Expand Down
8 changes: 4 additions & 4 deletions core/src/test/java/io/grpc/internal/DnsNameResolverTest.java
Expand Up @@ -1008,7 +1008,7 @@ public void shouldUseJndi_trueIfItMightPossiblyBeValid() {

@Test
public void parseServiceConfig_capturesParseError() {
ConfigOrError<Map<String, ?>> result = DnsNameResolver.parseServiceConfig(
ConfigOrError result = DnsNameResolver.parseServiceConfig(
Arrays.asList("grpc_config=bogus"), new Random(), "localhost");

assertThat(result).isNotNull();
Expand All @@ -1018,7 +1018,7 @@ public void parseServiceConfig_capturesParseError() {

@Test
public void parseServiceConfig_capturesChoiceError() {
ConfigOrError<Map<String, ?>> result = DnsNameResolver.parseServiceConfig(
ConfigOrError result = DnsNameResolver.parseServiceConfig(
Arrays.asList("grpc_config=[{\"hi\":{}}]"), new Random(), "localhost");

assertThat(result).isNotNull();
Expand All @@ -1028,15 +1028,15 @@ public void parseServiceConfig_capturesChoiceError() {

@Test
public void parseServiceConfig_noChoiceIsNull() {
ConfigOrError<Map<String, ?>> result = DnsNameResolver.parseServiceConfig(
ConfigOrError result = DnsNameResolver.parseServiceConfig(
Arrays.asList("grpc_config=[]"), new Random(), "localhost");

assertThat(result).isNull();
}

@Test
public void parseServiceConfig_matches() {
ConfigOrError<Map<String, ?>> result = DnsNameResolver.parseServiceConfig(
ConfigOrError result = DnsNameResolver.parseServiceConfig(
Arrays.asList("grpc_config=[{\"serviceConfig\":{}}]"), new Random(), "localhost");

assertThat(result).isNotNull();
Expand Down
15 changes: 8 additions & 7 deletions core/src/test/java/io/grpc/internal/ManagedChannelImplTest.java
Expand Up @@ -3423,12 +3423,12 @@ public void nameResolverHelper_emptyConfigSucceeds() {
maxHedgedAttemptsLimit,
autoConfiguredLoadBalancerFactory);

ConfigOrError<ManagedChannelServiceConfig> coe =
nrh.parseServiceConfig(ImmutableMap.<String, Object>of());
ConfigOrError coe = nrh.parseServiceConfig(ImmutableMap.<String, Object>of());

assertThat(coe.getError()).isNull();
assertThat(coe.getConfig().getServiceMap()).isEmpty();
assertThat(coe.getConfig().getServiceMethodMap()).isEmpty();
ManagedChannelServiceConfig cfg = (ManagedChannelServiceConfig) coe.getConfig();
assertThat(cfg.getServiceMap()).isEmpty();
assertThat(cfg.getServiceMethodMap()).isEmpty();
}

@Test
Expand All @@ -3451,7 +3451,7 @@ public void nameResolverHelper_badConfigFails() {
maxHedgedAttemptsLimit,
autoConfiguredLoadBalancerFactory);

ConfigOrError<ManagedChannelServiceConfig> coe =
ConfigOrError coe =
nrh.parseServiceConfig(ImmutableMap.<String, Object>of("methodConfig", "bogus"));

assertThat(coe.getError()).isNotNull();
Expand Down Expand Up @@ -3481,11 +3481,12 @@ public void nameResolverHelper_noConfigChosen() {
maxHedgedAttemptsLimit,
autoConfiguredLoadBalancerFactory);

ConfigOrError<ManagedChannelServiceConfig> coe =
ConfigOrError coe =
nrh.parseServiceConfig(ImmutableMap.of("loadBalancingConfig", ImmutableList.of()));

assertThat(coe.getError()).isNull();
assertThat(coe.getConfig().getLoadBalancingConfig()).isEqualTo(null);
ManagedChannelServiceConfig cfg = (ManagedChannelServiceConfig) coe.getConfig();
assertThat(cfg.getLoadBalancingConfig()).isEqualTo(null);
}

@Test
Expand Down
Expand Up @@ -64,7 +64,7 @@ helper, new CachedSubchannelPool(), TimeProvider.SYSTEM_TIME_PROVIDER,
}

@Override
public ConfigOrError<?> parseLoadBalancingPolicyConfig(
public ConfigOrError parseLoadBalancingPolicyConfig(
Map<String, ?> rawLoadBalancingConfigPolicy) {
try {
return parseLoadBalancingConfigPolicyInternal(rawLoadBalancingConfigPolicy);
Expand All @@ -74,7 +74,7 @@ public ConfigOrError<?> parseLoadBalancingPolicyConfig(
}
}

ConfigOrError<Mode> parseLoadBalancingConfigPolicyInternal(
ConfigOrError parseLoadBalancingConfigPolicyInternal(
Map<String, ?> rawLoadBalancingPolicyConfig) {
if (rawLoadBalancingPolicyConfig == null) {
return ConfigOrError.fromConfig(DEFAULT_MODE);
Expand Down
Expand Up @@ -59,7 +59,7 @@ public LoadBalancer newLoadBalancer(Helper helper) {
}

@Override
public ConfigOrError<?> parseLoadBalancingPolicyConfig(
public ConfigOrError parseLoadBalancingPolicyConfig(
Map<String, ?> rawLoadBalancingPolicyConfig) {
return rrProvider.parseLoadBalancingPolicyConfig(rawLoadBalancingPolicyConfig);
}
Expand Down
4 changes: 2 additions & 2 deletions xds/src/main/java/io/grpc/xds/XdsLoadBalancer.java
Expand Up @@ -89,12 +89,12 @@ public void handleResolvedAddressGroups(
Map<String, ?> newRawLbConfig = checkNotNull(
attributes.get(ATTR_LOAD_BALANCING_CONFIG), "ATTR_LOAD_BALANCING_CONFIG not available");

ConfigOrError<XdsConfig> cfg =
ConfigOrError cfg =
XdsLoadBalancerProvider.parseLoadBalancingConfigPolicy(newRawLbConfig, lbRegistry);
if (cfg.getError() != null) {
throw cfg.getError().asRuntimeException();
}
XdsConfig xdsConfig = cfg.getConfig();
XdsConfig xdsConfig = (XdsConfig) cfg.getConfig();
fallbackPolicy = xdsConfig.fallbackPolicy;
fallbackManager.updateFallbackServers(servers, attributes, fallbackPolicy);
fallbackManager.maybeStartFallbackTimer();
Expand Down
4 changes: 2 additions & 2 deletions xds/src/main/java/io/grpc/xds/XdsLoadBalancerProvider.java
Expand Up @@ -66,12 +66,12 @@ public LoadBalancer newLoadBalancer(Helper helper) {
}

@Override
public ConfigOrError<?> parseLoadBalancingPolicyConfig(
public ConfigOrError parseLoadBalancingPolicyConfig(
Map<String, ?> rawLoadBalancingPolicyConfig) {
return parseLoadBalancingConfigPolicy(rawLoadBalancingPolicyConfig, registry);
}

static ConfigOrError<XdsConfig> parseLoadBalancingConfigPolicy(
static ConfigOrError parseLoadBalancingConfigPolicy(
Map<String, ?> rawLoadBalancingPolicyConfig, LoadBalancerRegistry registry) {
try {
LbConfig newLbConfig =
Expand Down

0 comments on commit 5ef8377

Please sign in to comment.