mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 07:57:13 +02:00
Streamline transfer resolving helpers in ResourceFlowUtils
In the great flow flattening, ResourceFlowUtils grew a couple nice helpers for rebuilding transferrable resources (Domains and Contacts) upon the resolution of a transfer - approvePendingTransfer() and denyPendingTransfer(). Most transfer-resolving callsites use one of these two helpers, but for legacy reasons the deletion flows (DomainDeleteFlow and DeleteContactsAndHostsAction) were instead using the "manual" resolvePendingTransfer() method or its even more low-level createResolvedTransferData() helper instead of denyPendingTransfer(). It's simpler to just have two options - approve and deny - so this CL inlines createResolvedTransferData() into resolvePendingTransfer() and makes the latter a private helper for the approve/denyPendingTransfer() public helpers. This CL also adds sanity checks that approve/denyPendingTransfer() are called only with the logically appropriate values of TransferStatus. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=170819358
This commit is contained in:
parent
a5c931a152
commit
fd62f4a74e
4 changed files with 37 additions and 34 deletions
|
@ -206,25 +206,6 @@ public final class ResourceFlowUtils {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link TransferData} object representing a resolved transfer.
|
||||
*
|
||||
* <p>This clears all the server-approve fields on the {@link TransferData}, sets the status
|
||||
* field, and sets the expiration time of the last pending transfer to now.
|
||||
*/
|
||||
public static TransferData createResolvedTransferData(
|
||||
TransferData oldTransferData, TransferStatus transferStatus, DateTime now) {
|
||||
checkArgument(!oldTransferData.equals(TransferData.EMPTY), "No old transfer to resolve.");
|
||||
return oldTransferData.asBuilder()
|
||||
.setServerApproveEntities(null)
|
||||
.setServerApproveBillingEvent(null)
|
||||
.setServerApproveAutorenewEvent(null)
|
||||
.setServerApproveAutorenewPollMessage(null)
|
||||
.setTransferStatus(transferStatus)
|
||||
.setPendingTransferExpirationTime(checkNotNull(now))
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn a resource into a builder with its pending transfer resolved.
|
||||
*
|
||||
|
@ -232,18 +213,29 @@ public final class ResourceFlowUtils {
|
|||
* TransferStatus}, clears all the server-approve fields on the {@link TransferData}, and sets the
|
||||
* expiration time of the last pending transfer to now.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <
|
||||
private static <
|
||||
R extends EppResource & ResourceWithTransferData,
|
||||
B extends EppResource.Builder<R, B> & BuilderWithTransferData<B>>
|
||||
B resolvePendingTransfer(R resource, TransferStatus transferStatus, DateTime now) {
|
||||
checkState(
|
||||
checkArgument(
|
||||
resource.getStatusValues().contains(StatusValue.PENDING_TRANSFER),
|
||||
"Resource is not in pending transfer status.");
|
||||
return ((B) resource.asBuilder())
|
||||
checkArgument(
|
||||
!TransferData.EMPTY.equals(resource.getTransferData()),
|
||||
"No old transfer data to resolve.");
|
||||
@SuppressWarnings("unchecked")
|
||||
B builder = (B) resource.asBuilder();
|
||||
return builder
|
||||
.removeStatusValue(StatusValue.PENDING_TRANSFER)
|
||||
.setTransferData(
|
||||
createResolvedTransferData(resource.getTransferData(), transferStatus, now));
|
||||
resource.getTransferData().asBuilder()
|
||||
.setServerApproveEntities(null)
|
||||
.setServerApproveBillingEvent(null)
|
||||
.setServerApproveAutorenewEvent(null)
|
||||
.setServerApproveAutorenewPollMessage(null)
|
||||
.setTransferStatus(transferStatus)
|
||||
.setPendingTransferExpirationTime(checkNotNull(now))
|
||||
.build());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -258,6 +250,7 @@ public final class ResourceFlowUtils {
|
|||
R extends EppResource & ResourceWithTransferData,
|
||||
B extends Builder<R, B> & BuilderWithTransferData<B>>
|
||||
R approvePendingTransfer(R resource, TransferStatus transferStatus, DateTime now) {
|
||||
checkArgument(transferStatus.isApproved(), "Not an approval transfer status");
|
||||
B builder = ResourceFlowUtils.<R, B>resolvePendingTransfer(resource, transferStatus, now);
|
||||
return builder
|
||||
.setLastTransferTime(now)
|
||||
|
@ -274,6 +267,7 @@ public final class ResourceFlowUtils {
|
|||
*/
|
||||
public static <R extends EppResource & ResourceWithTransferData> R denyPendingTransfer(
|
||||
R resource, TransferStatus transferStatus, DateTime now) {
|
||||
checkArgument(transferStatus.isDenied(), "Not a denial transfer status");
|
||||
return resolvePendingTransfer(resource, transferStatus, now).build();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue