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
This commit is contained in:
gak 2016-06-27 11:47:54 -07:00 committed by Ben McIlwain
parent a4091594d0
commit a47cc2a85c
5 changed files with 20 additions and 26 deletions

View file

@ -27,6 +27,7 @@ import static google.registry.request.RequestParameters.extractSetOfParameters;
import com.google.appengine.api.taskqueue.Queue; import com.google.appengine.api.taskqueue.Queue;
import com.google.appengine.api.taskqueue.QueueFactory; import com.google.appengine.api.taskqueue.QueueFactory;
import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@ -42,13 +43,11 @@ import javax.servlet.http.HttpServletRequest;
/** Dagger module for the dns package. */ /** Dagger module for the dns package. */
@Module @Module
public final class DnsModule { public abstract class DnsModule {
@Provides @Binds
@DnsWriterZone @DnsWriterZone
static String provideZoneName(@Parameter(RequestParameters.PARAM_TLD) String tld) { abstract String provideZoneName(@Parameter(RequestParameters.PARAM_TLD) String tld);
return tld;
}
@Provides @Provides
@Named(DNS_PULL_QUEUE_NAME) @Named(DNS_PULL_QUEUE_NAME)

View file

@ -14,6 +14,7 @@
package google.registry.dns.writer.dnsupdate; package google.registry.dns.writer.dnsupdate;
import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@ -23,12 +24,10 @@ import javax.net.SocketFactory;
/** Dagger module that provides a DnsUpdateWriter. */ /** Dagger module that provides a DnsUpdateWriter. */
@Module @Module
public final class DnsUpdateWriterModule { public abstract class DnsUpdateWriterModule {
@Provides @Binds
static DnsWriter provideDnsWriter(DnsUpdateWriter dnsWriter) { abstract DnsWriter provideDnsWriter(DnsUpdateWriter dnsWriter);
return dnsWriter;
}
@Provides @Provides
static SocketFactory provideSocketFactory() { static SocketFactory provideSocketFactory() {

View file

@ -14,15 +14,13 @@
package google.registry.groups; package google.registry.groups;
import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides;
/** Dagger module for groups package. */ /** Dagger module for groups package. */
@Module @Module
public final class GroupsModule { public abstract class GroupsModule {
@Provides @Binds
static GroupsConnection provideGroupsConnection(DirectoryGroupsConnection connection) { abstract GroupsConnection provideGroupsConnection(DirectoryGroupsConnection connection);
return connection;
}
} }

View file

@ -32,6 +32,7 @@ import com.google.appengine.api.urlfetch.URLFetchServiceFactory;
import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory; import com.google.appengine.api.users.UserServiceFactory;
import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@ -138,11 +139,9 @@ public final class Modules {
* <p>You must also use the {@link AppIdentityCredential} module. * <p>You must also use the {@link AppIdentityCredential} module.
*/ */
@Module @Module
public static final class UseAppIdentityCredentialForGoogleApisModule { public abstract static class UseAppIdentityCredentialForGoogleApisModule {
@Provides @Binds
static HttpRequestInitializer provideHttpRequestInitializer(AppIdentityCredential credential) { abstract HttpRequestInitializer provideHttpRequestInitializer(AppIdentityCredential credential);
return credential;
}
} }
/** /**

View file

@ -14,6 +14,7 @@
package google.registry.tools; package google.registry.tools;
import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@ -24,17 +25,15 @@ import java.util.Random;
/** Dagger module for Registry Tool. */ /** Dagger module for Registry Tool. */
@Module @Module
final class RegistryToolModule { abstract class RegistryToolModule {
@Provides @Provides
static RegistryToolEnvironment provideRegistryToolEnvironment() { static RegistryToolEnvironment provideRegistryToolEnvironment() {
return RegistryToolEnvironment.get(); return RegistryToolEnvironment.get();
} }
@Provides @Binds
static PasswordGenerator providePasswordGenerator(RandomPasswordGenerator passwordGenerator) { abstract PasswordGenerator providePasswordGenerator(RandomPasswordGenerator passwordGenerator);
return passwordGenerator;
}
@Provides @Provides
static Random provideRandom() { static Random provideRandom() {