diff --git a/java/google/registry/whois/BUILD b/java/google/registry/whois/BUILD index 8aabcb716..10f1475a5 100644 --- a/java/google/registry/whois/BUILD +++ b/java/google/registry/whois/BUILD @@ -16,7 +16,6 @@ java_library( "//java/google/registry/xml", "//third_party/java/objectify:objectify-v4_1", "@com_google_appengine_api_1_0_sdk", - "@com_google_auto_factory", "@com_google_auto_value", "@com_google_code_findbugs_jsr305", "@com_google_dagger", diff --git a/java/google/registry/whois/Whois.java b/java/google/registry/whois/Whois.java index 5afe55068..e25ad64fc 100644 --- a/java/google/registry/whois/Whois.java +++ b/java/google/registry/whois/Whois.java @@ -26,25 +26,21 @@ public final class Whois { private final Clock clock; private final String disclaimer; - private final WhoisReaderFactory whoisReaderFactory; + private final WhoisReader whoisReader; @Inject - public Whois( - Clock clock, - @Config("whoisDisclaimer") String disclaimer, - WhoisReaderFactory whoisReader) { + public Whois(Clock clock, @Config("whoisDisclaimer") String disclaimer, WhoisReader whoisReader) { this.clock = clock; this.disclaimer = disclaimer; - this.whoisReaderFactory = whoisReader; + this.whoisReader = whoisReader; } /** Performs a WHOIS lookup on a plaintext query string. */ public String lookup(String query, boolean preferUnicode) { DateTime now = clock.nowUtc(); try { - return whoisReaderFactory - .create(now) - .readCommand(new StringReader(query)) + return whoisReader + .readCommand(new StringReader(query), now) .executeQuery(now) .getResponse(preferUnicode, disclaimer) .plainTextOutput(); diff --git a/java/google/registry/whois/WhoisHttpServer.java b/java/google/registry/whois/WhoisHttpServer.java index e316f1608..99511b421 100644 --- a/java/google/registry/whois/WhoisHttpServer.java +++ b/java/google/registry/whois/WhoisHttpServer.java @@ -134,7 +134,7 @@ public final class WhoisHttpServer implements Runnable { @Inject Response response; @Inject @Config("whoisDisclaimer") String disclaimer; @Inject @Config("whoisHttpExpires") Duration expires; - @Inject WhoisReaderFactory whoisReaderFactory; + @Inject WhoisReader whoisReader; @Inject @RequestPath String requestPath; @Inject WhoisMetric.Builder metricBuilder; @Inject WhoisMetrics whoisMetrics; @@ -149,8 +149,7 @@ public final class WhoisHttpServer implements Runnable { String commandText = decode(JOINER.join(SLASHER.split(path.substring(PATH.length())))) + "\r\n"; DateTime now = clock.nowUtc(); - WhoisCommand command = - whoisReaderFactory.create(now).readCommand(new StringReader(commandText)); + WhoisCommand command = whoisReader.readCommand(new StringReader(commandText), now); metricBuilder.setCommand(command); sendResponse(SC_OK, command.executeQuery(now)); } catch (WhoisException e) { diff --git a/java/google/registry/whois/WhoisReader.java b/java/google/registry/whois/WhoisReader.java index f12bdc2af..3246c548d 100644 --- a/java/google/registry/whois/WhoisReader.java +++ b/java/google/registry/whois/WhoisReader.java @@ -20,8 +20,6 @@ import static google.registry.model.registry.Registries.findTldForName; import static google.registry.util.DomainNameUtils.canonicalizeDomainName; import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST; -import com.google.auto.factory.AutoFactory; -import com.google.auto.factory.Provided; import com.google.common.base.Joiner; import com.google.common.base.Optional; import com.google.common.io.CharStreams; @@ -62,7 +60,6 @@ import org.joda.time.DateTime; * @see RFC 3912 * @see IANA Registrar IDs */ -@AutoFactory(allowSubclasses = true) class WhoisReader { /** @@ -73,15 +70,12 @@ class WhoisReader { static final String NAMESERVER_LOOKUP_COMMAND = "nameserver"; static final String REGISTRAR_LOOKUP_COMMAND = "registrar"; - private final DateTime now; private final WhoisCommandFactory commandFactory; /** Creates a new WhoisReader that extracts its command from the specified Reader. */ @Inject - WhoisReader( - @Provided @Config("whoisCommandFactory") WhoisCommandFactory commandFactory, DateTime now) { + WhoisReader(@Config("whoisCommandFactory") WhoisCommandFactory commandFactory) { this.commandFactory = commandFactory; - this.now = now; } /** @@ -91,15 +85,15 @@ class WhoisReader { * @throws IOException If the command could not be read from the reader. * @throws WhoisException If the command could not be parsed as a WhoisCommand. */ - WhoisCommand readCommand(Reader reader) throws IOException, WhoisException { - return parseCommand(CharStreams.toString(checkNotNull(reader, "reader"))); + WhoisCommand readCommand(Reader reader, DateTime now) throws IOException, WhoisException { + return parseCommand(CharStreams.toString(checkNotNull(reader, "reader")), now); } /** * Given a WHOIS command string, parse it into its command type and target string. See class level * comments for a full description of the command syntax accepted. */ - private WhoisCommand parseCommand(String command) throws WhoisException { + private WhoisCommand parseCommand(String command, DateTime now) throws WhoisException { // Split the string into tokens based on whitespace. List tokens = filterEmptyStrings(command.split("\\s")); if (tokens.isEmpty()) { diff --git a/java/google/registry/whois/WhoisServer.java b/java/google/registry/whois/WhoisServer.java index 6ad978007..232539940 100644 --- a/java/google/registry/whois/WhoisServer.java +++ b/java/google/registry/whois/WhoisServer.java @@ -61,7 +61,7 @@ public class WhoisServer implements Runnable { @Inject Clock clock; @Inject Reader input; @Inject Response response; - @Inject WhoisReaderFactory whoisReaderFactory; + @Inject WhoisReader whoisReader; @Inject @Config("whoisDisclaimer") String disclaimer; @Inject WhoisMetric.Builder metricBuilder; @Inject WhoisMetrics whoisMetrics; @@ -72,7 +72,7 @@ public class WhoisServer implements Runnable { String responseText; DateTime now = clock.nowUtc(); try { - WhoisCommand command = whoisReaderFactory.create(now).readCommand(input); + WhoisCommand command = whoisReader.readCommand(input, now); metricBuilder.setCommand(command); WhoisResponseResults results = command.executeQuery(now).getResponse(PREFER_UNICODE, disclaimer); diff --git a/javatests/google/registry/whois/WhoisHttpServerTest.java b/javatests/google/registry/whois/WhoisHttpServerTest.java index bbd511ec6..cbae3b24b 100644 --- a/javatests/google/registry/whois/WhoisHttpServerTest.java +++ b/javatests/google/registry/whois/WhoisHttpServerTest.java @@ -43,7 +43,6 @@ import google.registry.testing.AppEngineRule; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.InjectRule; -import google.registry.testing.Providers; import google.registry.whois.WhoisMetrics.WhoisMetric; import java.io.IOException; import java.io.Reader; @@ -78,8 +77,7 @@ public class WhoisHttpServerTest { whoisServer.expires = Duration.standardHours(1); whoisServer.requestPath = WhoisHttpServer.PATH + pathInfo; whoisServer.response = response; - whoisServer.whoisReaderFactory = - new WhoisReaderFactory(Providers.of(new WhoisCommandFactory())); + whoisServer.whoisReader = new WhoisReader(new WhoisCommandFactory()); whoisServer.whoisMetrics = new WhoisMetrics(); whoisServer.metricBuilder = WhoisMetric.builderForRequest(clock); whoisServer.disclaimer = "Doodle Disclaimer"; @@ -375,14 +373,9 @@ public class WhoisHttpServerTest { public void testRun_metricsLoggedForInternalServerError() throws Exception { persistResource(makeHostResource("ns1.cat.lol", "1.2.3.4")); WhoisHttpServer server = newWhoisHttpServer("ns1.cat.lol"); - final WhoisReader reader = mock(WhoisReader.class); - when(reader.readCommand(any(Reader.class))).thenThrow(new IOException("missing cat interface")); - - server.whoisReaderFactory = new WhoisReaderFactory(Providers.of(new WhoisCommandFactory())) { - @Override - WhoisReader create(DateTime now) { - return reader; - }}; + server.whoisReader = mock(WhoisReader.class); + when(server.whoisReader.readCommand(any(Reader.class), any(DateTime.class))) + .thenThrow(new IOException("missing cat interface")); server.whoisMetrics = mock(WhoisMetrics.class); try { diff --git a/javatests/google/registry/whois/WhoisReaderTest.java b/javatests/google/registry/whois/WhoisReaderTest.java index bf36d1851..47deab03c 100644 --- a/javatests/google/registry/whois/WhoisReaderTest.java +++ b/javatests/google/registry/whois/WhoisReaderTest.java @@ -45,8 +45,8 @@ public class WhoisReaderTest { @SuppressWarnings("unchecked") // XXX: Generic abuse ftw. T readCommand(String commandStr) throws Exception { return (T) - new WhoisReader(new WhoisCommandFactory(), clock.nowUtc()) - .readCommand(new StringReader(commandStr)); + new WhoisReader(new WhoisCommandFactory()) + .readCommand(new StringReader(commandStr), clock.nowUtc()); } void assertLoadsExampleTld(String commandString) throws Exception { diff --git a/javatests/google/registry/whois/WhoisServerTest.java b/javatests/google/registry/whois/WhoisServerTest.java index 00d41dc4d..8c50eba18 100644 --- a/javatests/google/registry/whois/WhoisServerTest.java +++ b/javatests/google/registry/whois/WhoisServerTest.java @@ -44,7 +44,6 @@ import google.registry.testing.AppEngineRule; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.InjectRule; -import google.registry.testing.Providers; import google.registry.whois.WhoisMetrics.WhoisMetric; import java.io.IOException; import java.io.Reader; @@ -72,8 +71,7 @@ public class WhoisServerTest { whoisServer.clock = clock; whoisServer.input = new StringReader(input); whoisServer.response = response; - whoisServer.whoisReaderFactory = - new WhoisReaderFactory(Providers.of(new WhoisCommandFactory())); + whoisServer.whoisReader = new WhoisReader(new WhoisCommandFactory()); whoisServer.whoisMetrics = new WhoisMetrics(); whoisServer.metricBuilder = WhoisMetric.builderForRequest(clock); whoisServer.disclaimer = "Doodle Disclaimer"; @@ -478,14 +476,9 @@ public class WhoisServerTest { public void testRun_metricsLoggedForInternalServerError() throws Exception { persistResource(makeHostResource("ns1.cat.lol", "1.2.3.4")); WhoisServer server = newWhoisServer("ns1.cat.lol"); - final WhoisReader reader = mock(WhoisReader.class); - when(reader.readCommand(any(Reader.class))).thenThrow(new IOException("missing cat interface")); - - server.whoisReaderFactory = new WhoisReaderFactory(Providers.of(new WhoisCommandFactory())) { - @Override - WhoisReader create(DateTime now) { - return reader; - }}; + server.whoisReader = mock(WhoisReader.class); + when(server.whoisReader.readCommand(any(Reader.class), any(DateTime.class))) + .thenThrow(new IOException("missing cat interface")); server.whoisMetrics = mock(WhoisMetrics.class); server.run();