diff --git a/java/google/registry/dns/writer/VoidDnsWriterModule.java b/java/google/registry/dns/writer/VoidDnsWriterModule.java index 2f4dbb80f..cf2a475fe 100644 --- a/java/google/registry/dns/writer/VoidDnsWriterModule.java +++ b/java/google/registry/dns/writer/VoidDnsWriterModule.java @@ -17,7 +17,9 @@ package google.registry.dns.writer; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; +import dagger.multibindings.IntoSet; import dagger.multibindings.StringKey; +import javax.inject.Named; /** Dagger module that disables DNS updates. */ @Module @@ -26,7 +28,14 @@ public final class VoidDnsWriterModule { @Provides @IntoMap @StringKey(VoidDnsWriter.NAME) - static DnsWriter provideVoidDnsWriter(VoidDnsWriter writer) { + static DnsWriter provideWriter(VoidDnsWriter writer) { return writer; } + + @Provides + @IntoSet + @Named("dnsWriterNames") + static String provideWriterName() { + return VoidDnsWriter.NAME; + } } diff --git a/java/google/registry/dns/writer/clouddns/CloudDnsModule.java b/java/google/registry/dns/writer/clouddns/CloudDnsModule.java index 40a3afc7c..4dccb9610 100644 --- a/java/google/registry/dns/writer/clouddns/CloudDnsModule.java +++ b/java/google/registry/dns/writer/clouddns/CloudDnsModule.java @@ -23,10 +23,12 @@ import com.google.common.base.Function; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; +import dagger.multibindings.IntoSet; import dagger.multibindings.StringKey; import google.registry.config.ConfigModule.Config; import google.registry.dns.writer.DnsWriter; import java.util.Set; +import javax.inject.Named; /** Dagger module for Google Cloud DNS service connection objects. */ @Module @@ -46,7 +48,14 @@ public final class CloudDnsModule { @Provides @IntoMap @StringKey(CloudDnsWriter.NAME) - static DnsWriter provideCloudDnsWriter(CloudDnsWriter writer) { + static DnsWriter provideWriter(CloudDnsWriter writer) { return writer; } + + @Provides + @IntoSet + @Named("dnsWriterNames") + static String provideWriterName() { + return CloudDnsWriter.NAME; + } } diff --git a/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java b/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java index a4fabd858..dec07d86d 100644 --- a/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java +++ b/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java @@ -17,8 +17,10 @@ package google.registry.dns.writer.dnsupdate; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; +import dagger.multibindings.IntoSet; import dagger.multibindings.StringKey; import google.registry.dns.writer.DnsWriter; +import javax.inject.Named; import javax.net.SocketFactory; /** Dagger module that provides a DnsUpdateWriter. */ @@ -33,7 +35,14 @@ public abstract class DnsUpdateWriterModule { @Provides @IntoMap @StringKey(DnsUpdateWriter.NAME) - static DnsWriter provideDnsUpdateWriter(DnsUpdateWriter writer) { + static DnsWriter provideWriter(DnsUpdateWriter writer) { return writer; } + + @Provides + @IntoSet + @Named("dnsWriterNames") + static String provideWriterName() { + return DnsUpdateWriter.NAME; + } } diff --git a/java/google/registry/tools/BUILD b/java/google/registry/tools/BUILD index caa2513fa..fda18cd79 100644 --- a/java/google/registry/tools/BUILD +++ b/java/google/registry/tools/BUILD @@ -46,6 +46,8 @@ java_library( "//java/google/registry/bigquery", "//java/google/registry/config", "//java/google/registry/dns/writer", + "//java/google/registry/dns/writer/clouddns", + "//java/google/registry/dns/writer/dnsupdate", "//java/google/registry/export", "//java/google/registry/flows", "//java/google/registry/keyring/api", diff --git a/java/google/registry/tools/CreateOrUpdateTldCommand.java b/java/google/registry/tools/CreateOrUpdateTldCommand.java index a00acd266..ae8d73826 100644 --- a/java/google/registry/tools/CreateOrUpdateTldCommand.java +++ b/java/google/registry/tools/CreateOrUpdateTldCommand.java @@ -15,7 +15,6 @@ package google.registry.tools; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; import static google.registry.model.RoidSuffixes.isRoidSuffixUsed; import static google.registry.util.CollectionUtils.findDuplicates; import static google.registry.util.DomainNameUtils.canonicalizeDomainName; @@ -27,7 +26,6 @@ import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedMap; -import google.registry.dns.writer.DnsWriter; import google.registry.model.pricing.StaticPremiumListPricingEngine; import google.registry.model.registry.Registries; import google.registry.model.registry.Registry; @@ -43,6 +41,7 @@ import java.util.Map; import java.util.Set; import javax.annotation.Nullable; import javax.inject.Inject; +import javax.inject.Named; import org.joda.money.Money; import org.joda.time.DateTime; import org.joda.time.Duration; @@ -50,11 +49,11 @@ import org.joda.time.Duration; /** Shared base class for commands to create or update a TLD. */ abstract class CreateOrUpdateTldCommand extends MutatingCommand { - @Inject Map dnsWriters; + @Inject + @Named("dnsWriterNames") + Set dnsWriterNames; - @Parameter( - description = "Names of the TLDs", - required = true) + @Parameter(description = "Names of the TLDs", required = true) List mainParameters; @Parameter( @@ -384,8 +383,8 @@ abstract class CreateOrUpdateTldCommand extends MutatingCommand { if (dnsWriter != null) { if (dnsWriter.isPresent()) { - checkNotNull( - dnsWriters.get(dnsWriter.get()), + checkArgument( + dnsWriterNames.contains(dnsWriter.get()), "The DNS writer '%s' doesn't exist", dnsWriter.get()); builder.setDnsWriter(dnsWriter.get()); diff --git a/java/google/registry/tools/RegistryToolComponent.java b/java/google/registry/tools/RegistryToolComponent.java index 8fd301f82..332ff931c 100644 --- a/java/google/registry/tools/RegistryToolComponent.java +++ b/java/google/registry/tools/RegistryToolComponent.java @@ -16,6 +16,9 @@ package google.registry.tools; import dagger.Component; import google.registry.config.ConfigModule; +import google.registry.dns.writer.VoidDnsWriterModule; +import google.registry.dns.writer.clouddns.CloudDnsModule; +import google.registry.dns.writer.dnsupdate.DnsUpdateWriterModule; import google.registry.keyring.api.KeyModule; import google.registry.keyring.api.VoidKeyringModule; import google.registry.request.Modules.DatastoreServiceModule; @@ -30,19 +33,24 @@ import google.registry.util.SystemClock.SystemClockModule; * Otherwise {@link RegistryCli} will not be able to populate those fields after its instantiation. */ @Component( - modules = { - ConfigModule.class, - DatastoreServiceModule.class, - Jackson2Module.class, - KeyModule.class, - RegistryToolModule.class, - SystemClockModule.class, - URLFetchServiceModule.class, - VoidKeyringModule.class, - }) + modules = { + ConfigModule.class, + DatastoreServiceModule.class, + CloudDnsModule.class, + DnsUpdateWriterModule.class, + Jackson2Module.class, + KeyModule.class, + RegistryToolModule.class, + SystemClockModule.class, + URLFetchServiceModule.class, + VoidDnsWriterModule.class, + VoidKeyringModule.class, + } +) interface RegistryToolComponent { void inject(CreateAnchorTenantCommand command); void inject(CreateContactCommand command); + void inject(CreateTldCommand command); void inject(EncryptEscrowDepositCommand command); void inject(GenerateApplicationsReportCommand command); void inject(GenerateDnsReportCommand command); @@ -53,6 +61,7 @@ interface RegistryToolComponent { void inject(SendEscrowReportToIcannCommand command); void inject(SetupOteCommand command); void inject(UpdateCursorsCommand command); + void inject(UpdateTldCommand command); void inject(ValidateEscrowDepositCommand command); void inject(WhoisQueryCommand command); }