From a63921350b7312e00a4b6eedbb384a68f7e91686 Mon Sep 17 00:00:00 2001 From: mountford Date: Thu, 8 Sep 2016 09:04:07 -0700 Subject: [PATCH] HistoryEntry for extra logic; update fee check While working on an implementation of TLD-specific logic, it was realized that the extra logic methods would need access to the flow's HistoryEntry, so that things like poll messages could be parented properly. Also, the update flow had not been fixed to perform the fee check. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=132561527 --- .../flows/domain/BaseDomainUpdateFlow.java | 9 +++++++ .../flows/domain/DomainCreateFlow.java | 3 ++- .../flows/domain/DomainDeleteFlow.java | 2 +- .../flows/domain/DomainFlowUtils.java | 8 +++++- .../flows/domain/DomainRenewFlow.java | 7 ++++- .../domain/DomainRestoreRequestFlow.java | 2 +- .../domain/DomainTransferRequestFlow.java | 7 ++++- .../flows/domain/DomainUpdateFlow.java | 23 +++++++++++++++- .../flows/domain/RegistryExtraFlowLogic.java | 19 ++++++++----- .../flows/domain/DomainUpdateFlowTest.java | 22 ++++++++++++++- .../domain_update_addremove_flags.xml | 2 +- .../domain_update_addremove_flags_fee.xml | 27 +++++++++++++++++++ .../model/domain/TestExtraLogicManager.java | 19 ++++++++----- 13 files changed, 129 insertions(+), 21 deletions(-) create mode 100644 javatests/google/registry/flows/domain/testdata/domain_update_addremove_flags_fee.xml diff --git a/java/google/registry/flows/domain/BaseDomainUpdateFlow.java b/java/google/registry/flows/domain/BaseDomainUpdateFlow.java index 4f2a7ec70..c6fa49374 100644 --- a/java/google/registry/flows/domain/BaseDomainUpdateFlow.java +++ b/java/google/registry/flows/domain/BaseDomainUpdateFlow.java @@ -26,6 +26,7 @@ import static google.registry.flows.domain.DomainFlowUtils.validateNoDuplicateCo import static google.registry.flows.domain.DomainFlowUtils.validateRegistrantAllowedOnTld; import static google.registry.flows.domain.DomainFlowUtils.validateRequiredContactsPresent; import static google.registry.flows.domain.DomainFlowUtils.verifyNotInPendingDelete; +import static google.registry.model.domain.fee.Fee.FEE_UPDATE_COMMAND_EXTENSIONS_IN_PREFERENCE_ORDER; import com.google.common.base.Optional; import com.google.common.collect.ImmutableSet; @@ -37,11 +38,13 @@ import google.registry.flows.ResourceUpdateFlow; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainBase.Builder; import google.registry.model.domain.DomainCommand.Update; +import google.registry.model.domain.fee.FeeTransformCommandExtension; import google.registry.model.domain.secdns.DelegationSignerData; import google.registry.model.domain.secdns.SecDnsUpdateExtension; import google.registry.model.domain.secdns.SecDnsUpdateExtension.Add; import google.registry.model.domain.secdns.SecDnsUpdateExtension.Remove; import java.util.Set; +import javax.annotation.Nullable; /** * An EPP flow that updates a domain application or resource. @@ -52,10 +55,16 @@ import java.util.Set; public abstract class BaseDomainUpdateFlow> extends ResourceUpdateFlow { + @Nullable + protected FeeTransformCommandExtension feeUpdate; + protected Optional extraFlowLogic; @Override public final void initResourceCreateOrMutateFlow() throws EppException { + registerExtensions(FEE_UPDATE_COMMAND_EXTENSIONS_IN_PREFERENCE_ORDER); + feeUpdate = + eppInput.getFirstExtensionOfClasses(FEE_UPDATE_COMMAND_EXTENSIONS_IN_PREFERENCE_ORDER); command = cloneAndLinkReferences(command, now); initDomainUpdateFlow(); extraFlowLogic = RegistryExtraFlowLogicProxy.newInstanceForDomain(existingResource); diff --git a/java/google/registry/flows/domain/DomainCreateFlow.java b/java/google/registry/flows/domain/DomainCreateFlow.java index 705bef02f..c8925a975 100644 --- a/java/google/registry/flows/domain/DomainCreateFlow.java +++ b/java/google/registry/flows/domain/DomainCreateFlow.java @@ -195,7 +195,8 @@ public class DomainCreateFlow extends DomainCreateOrAllocateFlow { getClientId(), now, command.getPeriod().getValue(), - eppInput); + eppInput, + historyEntry); } } diff --git a/java/google/registry/flows/domain/DomainDeleteFlow.java b/java/google/registry/flows/domain/DomainDeleteFlow.java index 630c5abd0..ca77152c0 100644 --- a/java/google/registry/flows/domain/DomainDeleteFlow.java +++ b/java/google/registry/flows/domain/DomainDeleteFlow.java @@ -131,7 +131,7 @@ public class DomainDeleteFlow extends ResourceSyncDeleteFlowentities(explicitRenewEvent, newAutorenewEvent, newAutorenewPollMessage); diff --git a/java/google/registry/flows/domain/DomainRestoreRequestFlow.java b/java/google/registry/flows/domain/DomainRestoreRequestFlow.java index 353cb76e5..43fa6350a 100644 --- a/java/google/registry/flows/domain/DomainRestoreRequestFlow.java +++ b/java/google/registry/flows/domain/DomainRestoreRequestFlow.java @@ -162,7 +162,7 @@ public class DomainRestoreRequestFlow extends OwnedResourceMutateFlow - example.flags + update-13.flags diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_addremove_flags_fee.xml b/javatests/google/registry/flows/domain/testdata/domain_update_addremove_flags_fee.xml new file mode 100644 index 000000000..f57e67c8f --- /dev/null +++ b/javatests/google/registry/flows/domain/testdata/domain_update_addremove_flags_fee.xml @@ -0,0 +1,27 @@ + + + + + update-13.flags + + + + + + flag1 + flag2 + + + flag3 + flag4 + + + + USD + %FEE% + + + ABC-12345 + + diff --git a/javatests/google/registry/model/domain/TestExtraLogicManager.java b/javatests/google/registry/model/domain/TestExtraLogicManager.java index fbfa4fbdd..674c1ede1 100644 --- a/javatests/google/registry/model/domain/TestExtraLogicManager.java +++ b/javatests/google/registry/model/domain/TestExtraLogicManager.java @@ -31,6 +31,7 @@ import google.registry.model.domain.flags.FlagsCreateCommandExtension; import google.registry.model.domain.flags.FlagsTransferCommandExtension; import google.registry.model.domain.flags.FlagsUpdateCommandExtension; import google.registry.model.eppinput.EppInput; +import google.registry.model.reporting.HistoryEntry; import java.math.BigDecimal; import java.util.List; import org.joda.time.DateTime; @@ -95,7 +96,8 @@ public class TestExtraLogicManager implements RegistryExtraFlowLogic { String clientIdentifier, DateTime asOfDate, int years, - EppInput eppInput) throws EppException { + EppInput eppInput, + HistoryEntry historyEntry) throws EppException { FlagsCreateCommandExtension flags = eppInput.getSingleExtension(FlagsCreateCommandExtension.class); if (flags == null) { @@ -113,7 +115,8 @@ public class TestExtraLogicManager implements RegistryExtraFlowLogic { DomainResource domainResource, String clientIdentifier, DateTime asOfDate, - EppInput eppInput) throws EppException { + EppInput eppInput, + HistoryEntry historyEntry) throws EppException { messageToThrow = "deleted"; } @@ -138,7 +141,8 @@ public class TestExtraLogicManager implements RegistryExtraFlowLogic { String clientIdentifier, DateTime asOfDate, int years, - EppInput eppInput) throws EppException { + EppInput eppInput, + HistoryEntry historyEntry) throws EppException { messageToThrow = "renewed"; } @@ -151,7 +155,8 @@ public class TestExtraLogicManager implements RegistryExtraFlowLogic { DomainResource domainResource, String clientIdentifier, DateTime asOfDate, - EppInput eppInput) throws EppException { + EppInput eppInput, + HistoryEntry historyEntry) throws EppException { messageToThrow = "restored"; } @@ -165,7 +170,8 @@ public class TestExtraLogicManager implements RegistryExtraFlowLogic { String clientIdentifier, DateTime asOfDate, int years, - EppInput eppInput) throws EppException { + EppInput eppInput, + HistoryEntry historyEntry) throws EppException { FlagsTransferCommandExtension flags = eppInput.getSingleExtension(FlagsTransferCommandExtension.class); if (flags == null) { @@ -197,7 +203,8 @@ public class TestExtraLogicManager implements RegistryExtraFlowLogic { DomainResource domainResource, String clientIdentifier, DateTime asOfDate, - EppInput eppInput) throws EppException { + EppInput eppInput, + HistoryEntry historyEntry) throws EppException { FlagsUpdateCommandExtension flags = eppInput.getSingleExtension(FlagsUpdateCommandExtension.class); if (flags == null) {