core: Harden ServiceDescriptor API

Over-specifying List prevents fewer things to be passed in and makes it
less efficient to use a Map later. We definitely don't want people
extending this class.
This commit is contained in:
Eric Anderson 2016-06-18 14:43:56 -07:00
parent bf588b0be8
commit cd9042b49b
1 changed files with 7 additions and 6 deletions

View File

@ -35,22 +35,22 @@ import com.google.common.base.Preconditions;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List;
/** /**
* Descriptor for a service. * Descriptor for a service.
*/ */
public class ServiceDescriptor { public final class ServiceDescriptor {
private final String name; private final String name;
private final List<MethodDescriptor<?, ?>> methods; private final Collection<MethodDescriptor<?, ?>> methods;
public ServiceDescriptor(String name, MethodDescriptor<?, ?>... methods) { public ServiceDescriptor(String name, MethodDescriptor<?, ?>... methods) {
this(name, Arrays.asList(methods)); this(name, Arrays.asList(methods));
} }
public ServiceDescriptor(String name, List<MethodDescriptor<?, ?>> methods) { public ServiceDescriptor(String name, Collection<MethodDescriptor<?, ?>> methods) {
this.name = Preconditions.checkNotNull(name); this.name = Preconditions.checkNotNull(name);
this.methods = Collections.unmodifiableList(new ArrayList<MethodDescriptor<?, ?>>(methods)); this.methods = Collections.unmodifiableList(new ArrayList<MethodDescriptor<?, ?>>(methods));
} }
@ -61,9 +61,10 @@ public class ServiceDescriptor {
} }
/** /**
* A list of {@link MethodDescriptor} instances describing the methods exposed by the service. * A collection of {@link MethodDescriptor} instances describing the methods exposed by the
* service.
*/ */
public List<MethodDescriptor<?, ?>> getMethods() { public Collection<MethodDescriptor<?, ?>> getMethods() {
return methods; return methods;
} }
} }