core: update since javadoc, and add toBuilder for NameResolver results

This commit is contained in:
Carl Mastrangelo 2019-03-29 10:43:08 -07:00 committed by GitHub
parent 17d67f17fa
commit ecccdbb3b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 34 additions and 18 deletions

View File

@ -83,7 +83,7 @@ public abstract class NameResolver {
* Starts the resolution. This method will become abstract in 1.21.0.
*
* @param observer used to receive updates on the target
* @since 1.20.0
* @since 1.21.0
*/
public void start(Observer observer) {
start((Listener) observer);
@ -231,7 +231,7 @@ public abstract class NameResolver {
*
* <p>All methods are expected to return quickly.
*
* @since 1.20.0
* @since 1.21.0
*/
public abstract static class Observer implements Listener {
/**
@ -249,7 +249,7 @@ public abstract class NameResolver {
* {@link ResolutionResult#getServers()} is empty, {@link #onError(Status)} will be called.
*
* @param resolutionResult the resolved server addresses, attributes, and Service Config.
* @since 1.20.0
* @since 1.21.0
*/
public abstract void onResult(ResolutionResult resolutionResult);
@ -258,7 +258,7 @@ public abstract class NameResolver {
* {@link NameResolver#refresh()} to re-attempt resolution.
*
* @param error a non-OK status
* @since 1.20.0
* @since 1.21.0
*/
@Override
public abstract void onError(Status error);
@ -299,7 +299,7 @@ public abstract class NameResolver {
* Returns the {@link SynchronizationContext} where {@link #start(Observer)}, {@link #shutdown}
* and {@link #refresh} are run from.
*
* @since 1.20.0
* @since 1.21.0
*/
public SynchronizationContext getSynchronizationContext() {
throw new UnsupportedOperationException("Not implemented");
@ -411,7 +411,7 @@ public abstract class NameResolver {
/**
* Represents the results from a Name Resolver.
*
* @since 1.20.0
* @since 1.21.0
*/
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1770")
public static final class ResolutionResult {
@ -433,25 +433,38 @@ public abstract class NameResolver {
/**
* Constructs a new builder of a name resolution result.
*
* @since 1.20.0
* @since 1.21.0
*/
public static Builder newBuilder() {
return new Builder();
}
/**
* Converts these results back to a builder.
*
* @since 1.21.0
*/
public Builder toBuilder() {
return newBuilder()
.setServers(servers)
.setAttributes(attributes)
.setServiceConfig(serviceConfig);
}
/**
* Gets the servers resolved by name resolution.
*
* @since 1.20.0
* @since 1.21.0
*/
public List<EquivalentAddressGroup> getServers() {
return servers;
}
/**
* Gets the attributes associated with the servers resolved by name resolution.
* Gets the attributes associated with the servers resolved by name resolution. If there are
* no attributes, {@link Attributes#EMPTY} will be returned.
*
* @since 1.20.0
* @since 1.21.0
*/
@ResolutionResultAttr
public Attributes getAttributes() {
@ -461,7 +474,7 @@ public abstract class NameResolver {
/**
* Gets the Service Config parsed by {@link NameResolver.Helper#parseServiceConfig(Map)}.
*
* @since 1.20.0
* @since 1.21.0
*/
@Nullable
public Object getServiceConfig() {
@ -496,20 +509,21 @@ public abstract class NameResolver {
/**
* A builder for {@link ResolutionResult}.
*
* @since 1.20.0
* @since 1.21.0
*/
public static final class Builder {
private List<EquivalentAddressGroup> servers = Collections.emptyList();
private Attributes attributes = Attributes.EMPTY;
@Nullable
private Object serviceConfig;
// Make sure to update #toBuilder above!
Builder() {}
/**
* Sets the servers resolved by name resolution.
* Sets the servers resolved by name resolution. This field is required.
*
* @since 1.20.0
* @since 1.21.0
*/
public Builder setServers(List<EquivalentAddressGroup> servers) {
this.servers = servers;
@ -517,9 +531,10 @@ public abstract class NameResolver {
}
/**
* Sets the attributes for the servers resolved by name resolution.
* Sets the attributes for the servers resolved by name resolution. If unset,
* {@link Attributes#EMPTY} will be used as a default.
*
* @since 1.20.0
* @since 1.21.0
*/
public Builder setAttributes(Attributes attributes) {
this.attributes = attributes;
@ -528,8 +543,9 @@ public abstract class NameResolver {
/**
* Sets the Service Config parsed by {@link NameResolver.Helper#parseServiceConfig(Map)}.
* This field is optional.
*
* @since 1.20.0
* @since 1.21.0
*/
public Builder setServiceConfig(@Nullable Object serviceConfig) {
this.serviceConfig = serviceConfig;
@ -539,7 +555,7 @@ public abstract class NameResolver {
/**
* Constructs a new {@link ResolutionResult} from this builder.
*
* @since 1.20.0
* @since 1.21.0
*/
public ResolutionResult build() {
return new ResolutionResult(servers, attributes, serviceConfig);