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) {