Remove unnecessary usage of CircularList (#358)

Implementation of CircularList is an overkill for its stated
purpose. Remove an unnecessary usage so that the remaining
use case may be refactored in isolation.
This commit is contained in:
Weimin Yu
2019-11-11 18:04:46 -05:00
committed by GitHub
parent 455daae25c
commit cb87658827
3 changed files with 25 additions and 18 deletions
@@ -27,7 +27,6 @@ import google.registry.monitoring.blackbox.handler.WebWhoisMessageHandler;
import google.registry.monitoring.blackbox.message.HttpRequestMessage;
import google.registry.monitoring.blackbox.metric.MetricsCollector;
import google.registry.monitoring.blackbox.token.WebWhoisToken;
import google.registry.util.CircularList;
import google.registry.util.Clock;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
@@ -191,8 +190,8 @@ public class WebWhoisModule {
@Singleton
@Provides
@WebWhoisProtocol
CircularList<String> provideTopLevelDomains() {
return new CircularList.Builder<String>().add("how", "soy", "xn--q9jyb4c").build();
ImmutableList<String> provideTopLevelDomains() {
return ImmutableList.of("how", "soy", "xn--q9jyb4c");
}
@Provides
@@ -14,11 +14,15 @@
package google.registry.monitoring.blackbox.token;
import static com.google.common.base.Preconditions.checkArgument;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
import com.google.common.collect.PeekingIterator;
import google.registry.monitoring.blackbox.exception.UndeterminedStateException;
import google.registry.monitoring.blackbox.message.OutboundMessageType;
import google.registry.monitoring.blackbox.module.WebWhoisModule.WebWhoisProtocol;
import google.registry.util.CircularList;
import javax.inject.Inject;
/**
@@ -33,19 +37,21 @@ public class WebWhoisToken extends Token {
/** For each top level domain (tld), we probe "prefix.tld". */
private static final String PREFIX = "whois.nic.";
/** {@link ImmutableList} of all top level domains to be probed. */
private CircularList<String> topLevelDomainsList;
/** {@link PeekingIterator} over a cycle of all top level domains to be probed. */
private final PeekingIterator<String> tldCycleIterator;
@Inject
public WebWhoisToken(@WebWhoisProtocol CircularList<String> topLevelDomainsList) {
public WebWhoisToken(@WebWhoisProtocol ImmutableList<String> topLevelDomainsList) {
checkArgument(!topLevelDomainsList.isEmpty(), "topLevelDomainsList must not be empty.");
this.topLevelDomainsList = topLevelDomainsList;
this.tldCycleIterator =
Iterators.peekingIterator(Iterables.cycle(topLevelDomainsList).iterator());
}
/** Moves on to next top level domain in {@code topLevelDomainsList}. */
/** Moves on to next top level domain in {@code tldCycleIterator}. */
@Override
public WebWhoisToken next() {
topLevelDomainsList = topLevelDomainsList.next();
tldCycleIterator.next();
return this;
}
@@ -62,6 +68,6 @@ public class WebWhoisToken extends Token {
*/
@Override
public String host() {
return PREFIX + topLevelDomainsList.get();
return PREFIX + tldCycleIterator.peek();
}
}