mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 07:57:13 +02:00
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:
parent
317e92d88c
commit
0d47534246
2 changed files with 131 additions and 135 deletions
|
@ -14,22 +14,152 @@
|
|||
|
||||
package google.registry.flows;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.Subcomponent;
|
||||
|
||||
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.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;
|
||||
|
||||
/** Dagger component for flow classes. */
|
||||
@FlowScope
|
||||
@Subcomponent(modules = FlowModule.class)
|
||||
@Subcomponent(modules = {
|
||||
FlowModule.class,
|
||||
FlowComponent.FlowComponentModule.class})
|
||||
public interface FlowComponent {
|
||||
|
||||
Trid trid();
|
||||
FlowRunner flowRunner();
|
||||
|
||||
// Flows must be added here and in FlowComponentModule below.
|
||||
ContactCheckFlow contactCheckFlow();
|
||||
ContactCreateFlow contactCreateFlow();
|
||||
ContactDeleteFlow contactDeleteFlow();
|
||||
ContactInfoFlow contactInfoFlow();
|
||||
ContactTransferApproveFlow contactTransferApproveFlow();
|
||||
ContactTransferCancelFlow contactTransferCancelFlow();
|
||||
ContactTransferQueryFlow contactTransferQueryFlow();
|
||||
ContactTransferRejectFlow contactTransferRejectFlow();
|
||||
ContactTransferRequestFlow contactTransferRequestFlow();
|
||||
ContactUpdateFlow contactUpdateFlow();
|
||||
ClaimsCheckFlow claimsCheckFlow();
|
||||
DomainAllocateFlow domainAllocateFlow();
|
||||
DomainApplicationCreateFlow domainApplicationCreateFlow();
|
||||
DomainApplicationDeleteFlow domainApplicationDeleteFlow();
|
||||
DomainApplicationInfoFlow domainApplicationInfoFlow();
|
||||
DomainApplicationUpdateFlow domainApplicationUpdateFlow();
|
||||
DomainCheckFlow domainCheckFlow();
|
||||
DomainCreateFlow domainCreateFlow();
|
||||
DomainDeleteFlow domainDeleteFlow();
|
||||
DomainInfoFlow domainInfoFlow();
|
||||
DomainRenewFlow domainRenewFlow();
|
||||
DomainRestoreRequestFlow domainRestoreRequestFlow();
|
||||
DomainTransferApproveFlow domainTransferApproveFlow();
|
||||
DomainTransferCancelFlow domainTransferCancelFlow();
|
||||
DomainTransferQueryFlow domainTransferQueryFlow();
|
||||
DomainTransferRejectFlow domainTransferRejectFlow();
|
||||
DomainTransferRequestFlow domainTransferRequestFlow();
|
||||
DomainUpdateFlow domainUpdateFlow();
|
||||
HostCheckFlow hostCheckFlow();
|
||||
HostCreateFlow hostCreateFlow();
|
||||
HostDeleteFlow hostDeleteFlow();
|
||||
HostInfoFlow hostInfoFlow();
|
||||
HostUpdateFlow hostUpdateFlow();
|
||||
PollAckFlow pollAckFlow();
|
||||
PollRequestFlow pollRequestFlow();
|
||||
HelloFlow helloFlow();
|
||||
LoginFlow loginFlow();
|
||||
LogoutFlow logoutFlow();
|
||||
|
||||
/** Dagger-implemented builder for this subcomponent. */
|
||||
@Subcomponent.Builder
|
||||
interface Builder {
|
||||
Builder flowModule(FlowModule flowModule);
|
||||
FlowComponent build();
|
||||
}
|
||||
|
||||
/** Module to delegate injection of a desired {@link Flow}. */
|
||||
@Module
|
||||
static class FlowComponentModule {
|
||||
@Provides
|
||||
@FlowScope
|
||||
static Flow provideFlow(FlowComponent flows, Class<? extends Flow> clazz) {
|
||||
return clazz.equals(ContactCheckFlow.class) ? flows.contactCheckFlow()
|
||||
: clazz.equals(ContactCreateFlow.class) ? flows.contactCreateFlow()
|
||||
: clazz.equals(ContactDeleteFlow.class) ? flows.contactDeleteFlow()
|
||||
: clazz.equals(ContactInfoFlow.class) ? flows.contactInfoFlow()
|
||||
: clazz.equals(ContactTransferApproveFlow.class) ? flows.contactTransferApproveFlow()
|
||||
: clazz.equals(ContactTransferCancelFlow.class) ? flows.contactTransferCancelFlow()
|
||||
: clazz.equals(ContactTransferQueryFlow.class) ? flows.contactTransferQueryFlow()
|
||||
: clazz.equals(ContactTransferRejectFlow.class) ? flows.contactTransferRejectFlow()
|
||||
: clazz.equals(ContactTransferRequestFlow.class) ? flows.contactTransferRequestFlow()
|
||||
: clazz.equals(ContactUpdateFlow.class) ? flows.contactUpdateFlow()
|
||||
: clazz.equals(ClaimsCheckFlow.class) ? flows.claimsCheckFlow()
|
||||
: clazz.equals(DomainAllocateFlow.class) ? flows.domainAllocateFlow()
|
||||
: clazz.equals(DomainApplicationCreateFlow.class) ? flows.domainApplicationCreateFlow()
|
||||
: clazz.equals(DomainApplicationDeleteFlow.class) ? flows.domainApplicationDeleteFlow()
|
||||
: clazz.equals(DomainApplicationInfoFlow.class) ? flows.domainApplicationInfoFlow()
|
||||
: clazz.equals(DomainApplicationUpdateFlow.class) ? flows.domainApplicationUpdateFlow()
|
||||
: clazz.equals(DomainCheckFlow.class) ? flows.domainCheckFlow()
|
||||
: clazz.equals(DomainCreateFlow.class) ? flows.domainCreateFlow()
|
||||
: clazz.equals(DomainDeleteFlow.class) ? flows.domainDeleteFlow()
|
||||
: clazz.equals(DomainInfoFlow.class) ? flows.domainInfoFlow()
|
||||
: clazz.equals(DomainRenewFlow.class) ? flows.domainRenewFlow()
|
||||
: clazz.equals(DomainRestoreRequestFlow.class) ? flows.domainRestoreRequestFlow()
|
||||
: clazz.equals(DomainTransferApproveFlow.class) ? flows.domainTransferApproveFlow()
|
||||
: clazz.equals(DomainTransferCancelFlow.class) ? flows.domainTransferCancelFlow()
|
||||
: clazz.equals(DomainTransferQueryFlow.class) ? flows.domainTransferQueryFlow()
|
||||
: clazz.equals(DomainTransferRejectFlow.class) ? flows.domainTransferRejectFlow()
|
||||
: clazz.equals(DomainTransferRequestFlow.class) ? flows.domainTransferRequestFlow()
|
||||
: clazz.equals(DomainUpdateFlow.class) ? flows.domainUpdateFlow()
|
||||
: clazz.equals(HostCheckFlow.class) ? flows.hostCheckFlow()
|
||||
: clazz.equals(HostCreateFlow.class) ? flows.hostCreateFlow()
|
||||
: clazz.equals(HostDeleteFlow.class) ? flows.hostDeleteFlow()
|
||||
: clazz.equals(HostInfoFlow.class) ? flows.hostInfoFlow()
|
||||
: clazz.equals(HostUpdateFlow.class) ? flows.hostUpdateFlow()
|
||||
: clazz.equals(PollAckFlow.class) ? flows.pollAckFlow()
|
||||
: clazz.equals(PollRequestFlow.class) ? flows.pollRequestFlow()
|
||||
: clazz.equals(HelloFlow.class) ? flows.helloFlow()
|
||||
: clazz.equals(LoginFlow.class) ? flows.loginFlow()
|
||||
: clazz.equals(LogoutFlow.class) ? flows.logoutFlow()
|
||||
: null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue