Skip to content

Commit 0244418

Browse files
authored
core: Move ConfigOrError up level up. (#5578)
This class is used in other places than just NameResolver.Helper. It should not be an inner class of Helper. Strictly speaking this is an API-breaking change. However, this is part of the service config error handling API that hasn't been done yet. Nobody has a legitimate reason to use it.
1 parent ba335f5 commit 0244418

File tree

13 files changed

+98
-99
lines changed

13 files changed

+98
-99
lines changed

core/src/main/java/io/grpc/LoadBalancerProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package io.grpc;
1818

1919
import com.google.common.base.MoreObjects;
20-
import io.grpc.NameResolver.Helper.ConfigOrError;
20+
import io.grpc.NameResolver.ConfigOrError;
2121
import java.util.Map;
2222

2323
/**

core/src/main/java/io/grpc/NameResolver.java

Lines changed: 86 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import com.google.common.base.MoreObjects;
2323
import com.google.common.base.Objects;
24-
import io.grpc.NameResolver.Helper.ConfigOrError;
2524
import java.lang.annotation.Documented;
2625
import java.lang.annotation.Retention;
2726
import java.lang.annotation.RetentionPolicy;
@@ -355,93 +354,6 @@ public SynchronizationContext getSynchronizationContext() {
355354
public ConfigOrError parseServiceConfig(Map<String, ?> rawServiceConfig) {
356355
throw new UnsupportedOperationException("should have been implemented");
357356
}
358-
359-
/**
360-
* Represents either a successfully parsed service config, containing all necessary parts to be
361-
* later applied by the channel, or a Status containing the error encountered while parsing.
362-
*
363-
* @since 1.20.0
364-
*/
365-
public static final class ConfigOrError {
366-
367-
private static final class UnknownConfig {
368-
369-
UnknownConfig() {}
370-
371-
@Override
372-
public String toString() {
373-
return "service config is unused";
374-
}
375-
}
376-
377-
/**
378-
* A sentinel value indicating that service config is not supported. This can be used to
379-
* indicate that parsing of the service config is neither right nor wrong, but doesn't have
380-
* any meaning.
381-
*/
382-
public static final ConfigOrError UNKNOWN_CONFIG =
383-
ConfigOrError.fromConfig(new UnknownConfig());
384-
385-
/**
386-
* Returns a {@link ConfigOrError} for the successfully parsed config.
387-
*/
388-
public static ConfigOrError fromConfig(Object config) {
389-
return new ConfigOrError(config);
390-
}
391-
392-
/**
393-
* Returns a {@link ConfigOrError} for the failure to parse the config.
394-
*
395-
* @param status a non-OK status
396-
*/
397-
public static ConfigOrError fromError(Status status) {
398-
return new ConfigOrError(status);
399-
}
400-
401-
private final Status status;
402-
private final Object config;
403-
404-
private ConfigOrError(Object config) {
405-
this.config = checkNotNull(config, "config");
406-
this.status = null;
407-
}
408-
409-
private ConfigOrError(Status status) {
410-
this.config = null;
411-
this.status = checkNotNull(status, "status");
412-
checkArgument(!status.isOk(), "cannot use OK status: %s", status);
413-
}
414-
415-
/**
416-
* Returns config if exists, otherwise null.
417-
*/
418-
@Nullable
419-
public Object getConfig() {
420-
return config;
421-
}
422-
423-
/**
424-
* Returns error status if exists, otherwise null.
425-
*/
426-
@Nullable
427-
public Status getError() {
428-
return status;
429-
}
430-
431-
@Override
432-
public String toString() {
433-
if (config != null) {
434-
return MoreObjects.toStringHelper(this)
435-
.add("config", config)
436-
.toString();
437-
} else {
438-
assert status != null;
439-
return MoreObjects.toStringHelper(this)
440-
.add("error", status)
441-
.toString();
442-
}
443-
}
444-
}
445357
}
446358

447359
/**
@@ -598,4 +510,90 @@ public ResolutionResult build() {
598510
}
599511
}
600512
}
513+
514+
/**
515+
* Gets the attributes associated with the servers resolved by name resolution. If there are
516+
* no attributes, {@link Attributes#EMPTY} will be returned.
517+
*
518+
* @since 1.21.0
519+
*/
520+
public static final class ConfigOrError {
521+
private static final class UnknownConfig {
522+
523+
UnknownConfig() {}
524+
525+
@Override
526+
public String toString() {
527+
return "service config is unused";
528+
}
529+
}
530+
531+
/**
532+
* A sentinel value indicating that service config is not supported. This can be used to
533+
* indicate that parsing of the service config is neither right nor wrong, but doesn't have
534+
* any meaning.
535+
*/
536+
public static final ConfigOrError UNKNOWN_CONFIG =
537+
ConfigOrError.fromConfig(new UnknownConfig());
538+
539+
/**
540+
* Returns a {@link ConfigOrError} for the successfully parsed config.
541+
*/
542+
public static ConfigOrError fromConfig(Object config) {
543+
return new ConfigOrError(config);
544+
}
545+
546+
/**
547+
* Returns a {@link ConfigOrError} for the failure to parse the config.
548+
*
549+
* @param status a non-OK status
550+
*/
551+
public static ConfigOrError fromError(Status status) {
552+
return new ConfigOrError(status);
553+
}
554+
555+
private final Status status;
556+
private final Object config;
557+
558+
private ConfigOrError(Object config) {
559+
this.config = checkNotNull(config, "config");
560+
this.status = null;
561+
}
562+
563+
private ConfigOrError(Status status) {
564+
this.config = null;
565+
this.status = checkNotNull(status, "status");
566+
checkArgument(!status.isOk(), "cannot use OK status: %s", status);
567+
}
568+
569+
/**
570+
* Returns config if exists, otherwise null.
571+
*/
572+
@Nullable
573+
public Object getConfig() {
574+
return config;
575+
}
576+
577+
/**
578+
* Returns error status if exists, otherwise null.
579+
*/
580+
@Nullable
581+
public Status getError() {
582+
return status;
583+
}
584+
585+
@Override
586+
public String toString() {
587+
if (config != null) {
588+
return MoreObjects.toStringHelper(this)
589+
.add("config", config)
590+
.toString();
591+
} else {
592+
assert status != null;
593+
return MoreObjects.toStringHelper(this)
594+
.add("error", status)
595+
.toString();
596+
}
597+
}
598+
}
601599
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import io.grpc.LoadBalancer.SubchannelPicker;
3232
import io.grpc.LoadBalancerProvider;
3333
import io.grpc.LoadBalancerRegistry;
34-
import io.grpc.NameResolver.Helper.ConfigOrError;
34+
import io.grpc.NameResolver.ConfigOrError;
3535
import io.grpc.Status;
3636
import io.grpc.internal.ServiceConfigUtil.LbConfig;
3737
import java.util.ArrayList;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import io.grpc.Attributes;
2929
import io.grpc.EquivalentAddressGroup;
3030
import io.grpc.NameResolver;
31-
import io.grpc.NameResolver.Helper.ConfigOrError;
31+
import io.grpc.NameResolver.ConfigOrError;
3232
import io.grpc.ProxiedSocketAddress;
3333
import io.grpc.ProxyDetector;
3434
import io.grpc.Status;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import io.grpc.Metadata;
6262
import io.grpc.MethodDescriptor;
6363
import io.grpc.NameResolver;
64+
import io.grpc.NameResolver.ConfigOrError;
6465
import io.grpc.NameResolver.ResolutionResult;
6566
import io.grpc.ProxyDetector;
6667
import io.grpc.Status;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import io.grpc.LoadBalancer;
2020
import io.grpc.LoadBalancerProvider;
21-
import io.grpc.NameResolver.Helper.ConfigOrError;
21+
import io.grpc.NameResolver.ConfigOrError;
2222
import java.util.Map;
2323

2424
/**

core/src/main/java/io/grpc/util/SecretRoundRobinLoadBalancerProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import io.grpc.LoadBalancer;
2020
import io.grpc.LoadBalancerProvider;
21-
import io.grpc.NameResolver.Helper.ConfigOrError;
21+
import io.grpc.NameResolver.ConfigOrError;
2222
import java.util.Map;
2323

2424
/**

core/src/test/java/io/grpc/internal/DnsNameResolverTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import io.grpc.EquivalentAddressGroup;
4040
import io.grpc.HttpConnectProxiedSocketAddress;
4141
import io.grpc.NameResolver;
42-
import io.grpc.NameResolver.Helper.ConfigOrError;
42+
import io.grpc.NameResolver.ConfigOrError;
4343
import io.grpc.NameResolver.ResolutionResult;
4444
import io.grpc.ProxyDetector;
4545
import io.grpc.Status;

core/src/test/java/io/grpc/internal/ManagedChannelImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
import io.grpc.MethodDescriptor;
9292
import io.grpc.MethodDescriptor.MethodType;
9393
import io.grpc.NameResolver;
94-
import io.grpc.NameResolver.Helper.ConfigOrError;
94+
import io.grpc.NameResolver.ConfigOrError;
9595
import io.grpc.NameResolver.ResolutionResult;
9696
import io.grpc.ProxiedSocketAddress;
9797
import io.grpc.ProxyDetector;

grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancerProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import io.grpc.Internal;
2121
import io.grpc.LoadBalancer;
2222
import io.grpc.LoadBalancerProvider;
23-
import io.grpc.NameResolver.Helper.ConfigOrError;
23+
import io.grpc.NameResolver.ConfigOrError;
2424
import io.grpc.Status;
2525
import io.grpc.grpclb.GrpclbState.Mode;
2626
import io.grpc.internal.ExponentialBackoffPolicy;

0 commit comments

Comments
 (0)