From a47cc2a85c50522a4982c2cf4add04c6f595710f Mon Sep 17 00:00:00 2001 From: gak Date: Mon, 27 Jun 2016 11:47:54 -0700 Subject: [PATCH] Migrate @Provides methods to @Binds methods where possible. @Binds is a much more efficient way to delegate one binding to another in that: * The @Binds method does not need to be invoked * It does not generate an additional Provider implementation * An additional Provider does does not need to be instantiated Future changes to Dagger's component processor will add even further benefits. More information: [] ATTENTION REVIEWERS: This migration is being done with global approval. Per-project approval is not required. Tested: TAP train for global presubmit queue [] ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=125980758 --- java/google/registry/dns/DnsModule.java | 9 ++++----- .../dns/writer/dnsupdate/DnsUpdateWriterModule.java | 9 ++++----- java/google/registry/groups/GroupsModule.java | 10 ++++------ java/google/registry/request/Modules.java | 9 ++++----- java/google/registry/tools/RegistryToolModule.java | 9 ++++----- 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/java/google/registry/dns/DnsModule.java b/java/google/registry/dns/DnsModule.java index bfce0670a..befc77d27 100644 --- a/java/google/registry/dns/DnsModule.java +++ b/java/google/registry/dns/DnsModule.java @@ -27,6 +27,7 @@ import static google.registry.request.RequestParameters.extractSetOfParameters; import com.google.appengine.api.taskqueue.Queue; import com.google.appengine.api.taskqueue.QueueFactory; +import dagger.Binds; import dagger.Module; import dagger.Provides; @@ -42,13 +43,11 @@ import javax.servlet.http.HttpServletRequest; /** Dagger module for the dns package. */ @Module -public final class DnsModule { +public abstract class DnsModule { - @Provides + @Binds @DnsWriterZone - static String provideZoneName(@Parameter(RequestParameters.PARAM_TLD) String tld) { - return tld; - } + abstract String provideZoneName(@Parameter(RequestParameters.PARAM_TLD) String tld); @Provides @Named(DNS_PULL_QUEUE_NAME) diff --git a/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java b/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java index 23b7445ab..58005cb9a 100644 --- a/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java +++ b/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java @@ -14,6 +14,7 @@ package google.registry.dns.writer.dnsupdate; +import dagger.Binds; import dagger.Module; import dagger.Provides; @@ -23,12 +24,10 @@ import javax.net.SocketFactory; /** Dagger module that provides a DnsUpdateWriter. */ @Module -public final class DnsUpdateWriterModule { +public abstract class DnsUpdateWriterModule { - @Provides - static DnsWriter provideDnsWriter(DnsUpdateWriter dnsWriter) { - return dnsWriter; - } + @Binds + abstract DnsWriter provideDnsWriter(DnsUpdateWriter dnsWriter); @Provides static SocketFactory provideSocketFactory() { diff --git a/java/google/registry/groups/GroupsModule.java b/java/google/registry/groups/GroupsModule.java index 970914cb8..3a0b5dd9e 100644 --- a/java/google/registry/groups/GroupsModule.java +++ b/java/google/registry/groups/GroupsModule.java @@ -14,15 +14,13 @@ package google.registry.groups; +import dagger.Binds; import dagger.Module; -import dagger.Provides; /** Dagger module for groups package. */ @Module -public final class GroupsModule { +public abstract class GroupsModule { - @Provides - static GroupsConnection provideGroupsConnection(DirectoryGroupsConnection connection) { - return connection; - } + @Binds + abstract GroupsConnection provideGroupsConnection(DirectoryGroupsConnection connection); } diff --git a/java/google/registry/request/Modules.java b/java/google/registry/request/Modules.java index 59943a2b6..9151e8b83 100644 --- a/java/google/registry/request/Modules.java +++ b/java/google/registry/request/Modules.java @@ -32,6 +32,7 @@ import com.google.appengine.api.urlfetch.URLFetchServiceFactory; import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserServiceFactory; +import dagger.Binds; import dagger.Module; import dagger.Provides; @@ -138,11 +139,9 @@ public final class Modules { *

You must also use the {@link AppIdentityCredential} module. */ @Module - public static final class UseAppIdentityCredentialForGoogleApisModule { - @Provides - static HttpRequestInitializer provideHttpRequestInitializer(AppIdentityCredential credential) { - return credential; - } + public abstract static class UseAppIdentityCredentialForGoogleApisModule { + @Binds + abstract HttpRequestInitializer provideHttpRequestInitializer(AppIdentityCredential credential); } /** diff --git a/java/google/registry/tools/RegistryToolModule.java b/java/google/registry/tools/RegistryToolModule.java index b1a1e12a3..9d08369cf 100644 --- a/java/google/registry/tools/RegistryToolModule.java +++ b/java/google/registry/tools/RegistryToolModule.java @@ -14,6 +14,7 @@ package google.registry.tools; +import dagger.Binds; import dagger.Module; import dagger.Provides; @@ -24,17 +25,15 @@ import java.util.Random; /** Dagger module for Registry Tool. */ @Module -final class RegistryToolModule { +abstract class RegistryToolModule { @Provides static RegistryToolEnvironment provideRegistryToolEnvironment() { return RegistryToolEnvironment.get(); } - @Provides - static PasswordGenerator providePasswordGenerator(RandomPasswordGenerator passwordGenerator) { - return passwordGenerator; - } + @Binds + abstract PasswordGenerator providePasswordGenerator(RandomPasswordGenerator passwordGenerator); @Provides static Random provideRandom() {