mirror of
https://github.com/google/nomulus.git
synced 2025-05-02 13:07:50 +02:00
This CL adds transferredRegistrationExpirationTime as a TransferData field persisted to Datastore. It's only relevant for domains, and it represents the registration expiration time resulting from the approval of the most recent transfer request. For pending transfers, we assume the transfer will be server-approved, and thus in DomainTransferRequestFlow we set this field to the existing computed value serverApproveNewExpirationTime, which is what we use for setting up the server-approve autorenew billing event and poll message. In DomainTransferApproveFlow we overwrite this field with the freshly computed newExpirationTime, whereas in DomainTransferCancel/RejectFlow (and in the implicit cancel of DomainDeleteFlow during a pending transfer) we null it out. There are two key benefits to having this field, which are described in more detail in b/36405140. 1) b/25084229 - it allows storage of a frozen value to back the "exDate" field of DomainTransferResponse, which we can use to fix various errors with how exDate display currently works. 2) b/36354434 - it allows DomainResource.cloneProjectedAtTime() to just directly set the registrationExpirationTime to this value, without computing it de novo, which reduces duplicated logic and ensures that the new expiration time matches the autorenew child objects. This CL only starts writing the field on TransferData as persisted directly on the DomainResource itself. We'll then want to backfill the field for at least pending transfers, whether expired or not (so we can do (2) above), but I think we might as well backfill it for all pending and approved transfers so that we also fix (1) even for historical transfers. And then we can start actually reading the field for both purposes. (Note that for (1), this will only fix synchronous transfer responses served via DomainTransferQueryFlow, not async transfer responses served via poll messages, since these have already been persisted with a potentially bad exDate, but I don't think it's worth a backfill for those). One last naming note: I chose the verbose transferredRegistrationExpirationTime rather than the extendedRegistrationExpirationTime of DomainTransferResponse because (as is the case in autorenew grace, or for a superuser transfer) the new registration time isn't necessarily extended at all; it may be the same as the pre-transfer expiration time. Also, including "registration" helps clarify w.r.t. pendingTransferExpirationTime which refers confusingly to the expiry of the transfer itself, rather than the domain registration. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=171858083 |
||
---|---|---|
.. | ||
BaseTransferObject.java | ||
package-info.java | ||
TransferData.java | ||
TransferResponse.java | ||
TransferStatus.java |