Inject flows with a nested ternary rather than a map

This is more efficient (we were constructing all the
providers and the map anew for every flow) and prettier.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=125479328
This commit is contained in:
cgoldfeder 2016-06-21 12:09:21 -07:00 committed by Ben McIlwain
parent 317e92d88c
commit 0d47534246
2 changed files with 131 additions and 135 deletions

View file

@ -16,58 +16,16 @@ package google.registry.flows;
import static com.google.common.base.Preconditions.checkState;
import com.google.common.collect.ImmutableMap;
import dagger.Module;
import dagger.Provides;
import google.registry.flows.contact.ContactCheckFlow;
import google.registry.flows.contact.ContactCreateFlow;
import google.registry.flows.contact.ContactDeleteFlow;
import google.registry.flows.contact.ContactInfoFlow;
import google.registry.flows.contact.ContactTransferApproveFlow;
import google.registry.flows.contact.ContactTransferCancelFlow;
import google.registry.flows.contact.ContactTransferQueryFlow;
import google.registry.flows.contact.ContactTransferRejectFlow;
import google.registry.flows.contact.ContactTransferRequestFlow;
import google.registry.flows.contact.ContactUpdateFlow;
import google.registry.flows.domain.ClaimsCheckFlow;
import google.registry.flows.domain.DomainAllocateFlow;
import google.registry.flows.domain.DomainApplicationCreateFlow;
import google.registry.flows.domain.DomainApplicationDeleteFlow;
import google.registry.flows.domain.DomainApplicationInfoFlow;
import google.registry.flows.domain.DomainApplicationUpdateFlow;
import google.registry.flows.domain.DomainCheckFlow;
import google.registry.flows.domain.DomainCreateFlow;
import google.registry.flows.domain.DomainDeleteFlow;
import google.registry.flows.domain.DomainInfoFlow;
import google.registry.flows.domain.DomainRenewFlow;
import google.registry.flows.domain.DomainRestoreRequestFlow;
import google.registry.flows.domain.DomainTransferApproveFlow;
import google.registry.flows.domain.DomainTransferCancelFlow;
import google.registry.flows.domain.DomainTransferQueryFlow;
import google.registry.flows.domain.DomainTransferRejectFlow;
import google.registry.flows.domain.DomainTransferRequestFlow;
import google.registry.flows.domain.DomainUpdateFlow;
import google.registry.flows.host.HostCheckFlow;
import google.registry.flows.host.HostCreateFlow;
import google.registry.flows.host.HostDeleteFlow;
import google.registry.flows.host.HostInfoFlow;
import google.registry.flows.host.HostUpdateFlow;
import google.registry.flows.picker.FlowPicker;
import google.registry.flows.poll.PollAckFlow;
import google.registry.flows.poll.PollRequestFlow;
import google.registry.flows.session.HelloFlow;
import google.registry.flows.session.LoginFlow;
import google.registry.flows.session.LogoutFlow;
import google.registry.model.eppcommon.Trid;
import google.registry.model.eppinput.EppInput;
import java.lang.annotation.Documented;
import java.util.Map;
import javax.annotation.Nullable;
import javax.inject.Provider;
import javax.inject.Qualifier;
/** Module to choose and instantiate an EPP flow. */
@ -199,90 +157,6 @@ public class FlowModule {
return Trid.create(eppInput.getCommandWrapper().getClTrid());
}
/** Provides a mapping between flow classes and injected providers. */
@Provides
@FlowScope
static Map<Class<? extends Flow>, Provider<? extends Flow>> provideFlowClassMap(
Provider<ContactCheckFlow> contactCheckFlowProvider,
Provider<ContactCreateFlow> contactCreateFlowProvider,
Provider<ContactDeleteFlow> contactDeleteFlowProvider,
Provider<ContactInfoFlow> contactInfoFlowProvider,
Provider<ContactTransferApproveFlow> contactTransferApproveFlowProvider,
Provider<ContactTransferCancelFlow> contactTransferCancelFlowProvider,
Provider<ContactTransferQueryFlow> contactTransferQueryFlowProvider,
Provider<ContactTransferRejectFlow> contactTransferRejectFlowProvider,
Provider<ContactTransferRequestFlow> contactTransferRequestFlowProvider,
Provider<ContactUpdateFlow> contactUpdateFlowProvider,
Provider<ClaimsCheckFlow> claimsCheckFlowProvider,
Provider<DomainAllocateFlow> domainAllocateFlowProvider,
Provider<DomainApplicationCreateFlow> domainApplicationCreateFlowProvider,
Provider<DomainApplicationDeleteFlow> domainApplicationDeleteFlowProvider,
Provider<DomainApplicationInfoFlow> domainApplicationInfoFlowProvider,
Provider<DomainApplicationUpdateFlow> domainApplicationUpdateFlowProvider,
Provider<DomainCheckFlow> domainCheckFlowProvider,
Provider<DomainCreateFlow> domainCreateFlowProvider,
Provider<DomainDeleteFlow> domainDeleteFlowProvider,
Provider<DomainInfoFlow> domainInfoFlowProvider,
Provider<DomainRenewFlow> domainRenewFlowProvider,
Provider<DomainRestoreRequestFlow> domainRestoreRequestFlowProvider,
Provider<DomainTransferApproveFlow> domainTransferApproveFlowProvider,
Provider<DomainTransferCancelFlow> domainTransferCancelFlowProvider,
Provider<DomainTransferQueryFlow> domainTransferQueryFlowProvider,
Provider<DomainTransferRejectFlow> domainTransferRejectFlowProvider,
Provider<DomainTransferRequestFlow> domainTransferRequestFlowProvider,
Provider<DomainUpdateFlow> domainUpdateFlowProvider,
Provider<HostCheckFlow> hostCheckFlowProvider,
Provider<HostCreateFlow> hostCreateFlowProvider,
Provider<HostDeleteFlow> hostDeleteFlowProvider,
Provider<HostInfoFlow> hostInfoFlowProvider,
Provider<HostUpdateFlow> hostUpdateFlowProvider,
Provider<PollAckFlow> pollAckFlowProvider,
Provider<PollRequestFlow> pollRequestFlowProvider,
Provider<HelloFlow> helloFlowProvider,
Provider<LoginFlow> loginFlowProvider,
Provider<LogoutFlow> logoutFlowProvider) {
return new ImmutableMap.Builder<Class<? extends Flow>, Provider<? extends Flow>>()
.put(ContactCheckFlow.class, contactCheckFlowProvider)
.put(ContactCreateFlow.class, contactCreateFlowProvider)
.put(ContactDeleteFlow.class, contactDeleteFlowProvider)
.put(ContactInfoFlow.class, contactInfoFlowProvider)
.put(ContactTransferApproveFlow.class, contactTransferApproveFlowProvider)
.put(ContactTransferCancelFlow.class, contactTransferCancelFlowProvider)
.put(ContactTransferQueryFlow.class, contactTransferQueryFlowProvider)
.put(ContactTransferRejectFlow.class, contactTransferRejectFlowProvider)
.put(ContactTransferRequestFlow.class, contactTransferRequestFlowProvider)
.put(ContactUpdateFlow.class, contactUpdateFlowProvider)
.put(ClaimsCheckFlow.class, claimsCheckFlowProvider)
.put(DomainAllocateFlow.class, domainAllocateFlowProvider)
.put(DomainApplicationCreateFlow.class, domainApplicationCreateFlowProvider)
.put(DomainApplicationDeleteFlow.class, domainApplicationDeleteFlowProvider)
.put(DomainApplicationInfoFlow.class, domainApplicationInfoFlowProvider)
.put(DomainApplicationUpdateFlow.class, domainApplicationUpdateFlowProvider)
.put(DomainCheckFlow.class, domainCheckFlowProvider)
.put(DomainCreateFlow.class, domainCreateFlowProvider)
.put(DomainDeleteFlow.class, domainDeleteFlowProvider)
.put(DomainInfoFlow.class, domainInfoFlowProvider)
.put(DomainRenewFlow.class, domainRenewFlowProvider)
.put(DomainRestoreRequestFlow.class, domainRestoreRequestFlowProvider)
.put(DomainTransferApproveFlow.class, domainTransferApproveFlowProvider)
.put(DomainTransferCancelFlow.class, domainTransferCancelFlowProvider)
.put(DomainTransferQueryFlow.class, domainTransferQueryFlowProvider)
.put(DomainTransferRejectFlow.class, domainTransferRejectFlowProvider)
.put(DomainTransferRequestFlow.class, domainTransferRequestFlowProvider)
.put(DomainUpdateFlow.class, domainUpdateFlowProvider)
.put(HostCheckFlow.class, hostCheckFlowProvider)
.put(HostCreateFlow.class, hostCreateFlowProvider)
.put(HostDeleteFlow.class, hostDeleteFlowProvider)
.put(HostInfoFlow.class, hostInfoFlowProvider)
.put(HostUpdateFlow.class, hostUpdateFlowProvider)
.put(PollAckFlow.class, pollAckFlowProvider)
.put(PollRequestFlow.class, pollRequestFlowProvider)
.put(HelloFlow.class, helloFlowProvider)
.put(LoginFlow.class, loginFlowProvider)
.put(LogoutFlow.class, logoutFlowProvider)
.build();
}
@Provides
@FlowScope
static Class<? extends Flow> provideFlowClass(EppInput eppInput) {
@ -293,14 +167,6 @@ public class FlowModule {
}
}
@Provides
@FlowScope
static Flow provideFlow(
Map<Class<? extends Flow>, Provider<? extends Flow>> flowProviders,
Class<? extends Flow> flowClass) {
return flowProviders.get(flowClass).get();
}
/** Wrapper class to carry an {@link EppException} to the calling code. */
static class EppExceptionInProviderException extends RuntimeException {
EppExceptionInProviderException(EppException exception) {