From 33221cc9f8ee0db831c7836bc1602a6f3d1b68bc Mon Sep 17 00:00:00 2001 From: Ben McIlwain Date: Tue, 29 Jun 2021 09:05:12 -0400 Subject: [PATCH] Set HistoryEntry modification time in FlowModule (#1222) * Set HistoryEntry modification time in FlowModule Rather than having to set it individually to now (the current transaction time) in every transactional flow, just do it once at the beginning when the HistoryEntry.Builder is first being provided. This is also safer, as just doing it in one place gives us stronger guarantees that it always corresponds to the execution time of the flow, rather than leaving the potential open that in one flow it's unintentionally set to the wrong thing. --- .../main/java/google/registry/flows/FlowModule.java | 2 ++ .../registry/flows/contact/ContactCreateFlow.java | 1 - .../registry/flows/contact/ContactDeleteFlow.java | 6 +----- .../flows/contact/ContactTransferApproveFlow.java | 8 ++------ .../flows/contact/ContactTransferCancelFlow.java | 8 ++------ .../flows/contact/ContactTransferRejectFlow.java | 8 ++------ .../flows/contact/ContactTransferRequestFlow.java | 7 ++----- .../registry/flows/contact/ContactUpdateFlow.java | 5 ++--- .../registry/flows/domain/DomainCreateFlow.java | 8 ++------ .../registry/flows/domain/DomainDeleteFlow.java | 8 ++------ .../registry/flows/domain/DomainRenewFlow.java | 5 ++--- .../flows/domain/DomainRestoreRequestFlow.java | 5 ++--- .../flows/domain/DomainTransferApproveFlow.java | 5 ++--- .../flows/domain/DomainTransferCancelFlow.java | 5 ++--- .../flows/domain/DomainTransferRejectFlow.java | 5 ++--- .../flows/domain/DomainTransferRequestFlow.java | 5 ++--- .../registry/flows/domain/DomainUpdateFlow.java | 13 +++---------- .../google/registry/flows/host/HostCreateFlow.java | 4 ++-- .../google/registry/flows/host/HostDeleteFlow.java | 2 +- .../google/registry/flows/host/HostUpdateFlow.java | 9 ++------- 20 files changed, 37 insertions(+), 82 deletions(-) diff --git a/core/src/main/java/google/registry/flows/FlowModule.java b/core/src/main/java/google/registry/flows/FlowModule.java index bbabbfb80..aae0a55e0 100644 --- a/core/src/main/java/google/registry/flows/FlowModule.java +++ b/core/src/main/java/google/registry/flows/FlowModule.java @@ -15,6 +15,7 @@ package google.registry.flows; import static com.google.common.base.Preconditions.checkState; +import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.base.Strings; import dagger.Module; @@ -222,6 +223,7 @@ public class FlowModule { String clientId, EppInput eppInput) { builder + .setModificationTime(tm().getTransactionTime()) .setTrid(trid) .setXmlBytes(inputXmlBytes) .setBySuperuser(isSuperuser) diff --git a/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java b/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java index aa270bbcb..10d13a4c4 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java @@ -93,7 +93,6 @@ public final class ContactCreateFlow implements TransactionalFlow { validateContactAgainstPolicy(newContact); historyBuilder .setType(HistoryEntry.Type.CONTACT_CREATE) - .setModificationTime(now) .setXmlBytes(null) // We don't want to store contact details in the history entry. .setContact(newContact); tm().insertAll( diff --git a/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java b/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java index 83170854b..c0764e576 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java @@ -122,11 +122,7 @@ public final class ContactDeleteFlow implements TransactionalFlow { resultCode = SUCCESS; } ContactHistory contactHistory = - historyBuilder - .setType(historyEntryType) - .setModificationTime(now) - .setContact(newContact) - .build(); + historyBuilder.setType(historyEntryType).setContact(newContact).build(); if (!tm().isOfy()) { handlePendingTransferOnDelete(existingContact, newContact, now, contactHistory); } diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java index 3e7fd21fc..437c23ac8 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java @@ -22,6 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; import static google.registry.flows.contact.ContactFlowUtils.createGainingTransferPollMessage; import static google.registry.flows.contact.ContactFlowUtils.createTransferResponse; import static google.registry.model.ResourceTransferUtils.approvePendingTransfer; +import static google.registry.model.reporting.HistoryEntry.Type.CONTACT_TRANSFER_APPROVE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableSet; @@ -39,7 +40,6 @@ import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.EppResponse; import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.TransferStatus; import java.util.Optional; @@ -88,11 +88,7 @@ public final class ContactTransferApproveFlow implements TransactionalFlow { ContactResource newContact = approvePendingTransfer(existingContact, TransferStatus.CLIENT_APPROVED, now); ContactHistory contactHistory = - historyBuilder - .setType(HistoryEntry.Type.CONTACT_TRANSFER_APPROVE) - .setModificationTime(now) - .setContact(newContact) - .build(); + historyBuilder.setType(CONTACT_TRANSFER_APPROVE).setContact(newContact).build(); // Create a poll message for the gaining client. PollMessage gainingPollMessage = createGainingTransferPollMessage( diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java index b1424c82f..c6ceb6049 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java @@ -22,6 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyTransferInitiator; import static google.registry.flows.contact.ContactFlowUtils.createLosingTransferPollMessage; import static google.registry.flows.contact.ContactFlowUtils.createTransferResponse; import static google.registry.model.ResourceTransferUtils.denyPendingTransfer; +import static google.registry.model.reporting.HistoryEntry.Type.CONTACT_TRANSFER_CANCEL; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableSet; @@ -39,7 +40,6 @@ import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.EppResponse; import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.TransferStatus; import java.util.Optional; @@ -84,11 +84,7 @@ public final class ContactTransferCancelFlow implements TransactionalFlow { ContactResource newContact = denyPendingTransfer(existingContact, TransferStatus.CLIENT_CANCELLED, now, clientId); ContactHistory contactHistory = - historyBuilder - .setType(HistoryEntry.Type.CONTACT_TRANSFER_CANCEL) - .setModificationTime(now) - .setContact(newContact) - .build(); + historyBuilder.setType(CONTACT_TRANSFER_CANCEL).setContact(newContact).build(); // Create a poll message for the losing client. PollMessage losingPollMessage = createLosingTransferPollMessage( diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java index 34bb7c1c2..6789e791f 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java @@ -22,6 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; import static google.registry.flows.contact.ContactFlowUtils.createGainingTransferPollMessage; import static google.registry.flows.contact.ContactFlowUtils.createTransferResponse; import static google.registry.model.ResourceTransferUtils.denyPendingTransfer; +import static google.registry.model.reporting.HistoryEntry.Type.CONTACT_TRANSFER_REJECT; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableSet; @@ -38,7 +39,6 @@ import google.registry.model.domain.metadata.MetadataExtension; import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppoutput.EppResponse; import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.TransferStatus; import java.util.Optional; @@ -82,11 +82,7 @@ public final class ContactTransferRejectFlow implements TransactionalFlow { ContactResource newContact = denyPendingTransfer(existingContact, TransferStatus.CLIENT_REJECTED, now, clientId); ContactHistory contactHistory = - historyBuilder - .setType(HistoryEntry.Type.CONTACT_TRANSFER_REJECT) - .setModificationTime(now) - .setContact(newContact) - .build(); + historyBuilder.setType(CONTACT_TRANSFER_REJECT).setContact(newContact).build(); PollMessage gainingPollMessage = createGainingTransferPollMessage( targetId, newContact.getTransferData(), now, Key.create(contactHistory)); diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java index 473927ac0..29b075849 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java @@ -24,6 +24,7 @@ import static google.registry.flows.contact.ContactFlowUtils.createGainingTransf import static google.registry.flows.contact.ContactFlowUtils.createLosingTransferPollMessage; import static google.registry.flows.contact.ContactFlowUtils.createTransferResponse; import static google.registry.model.eppoutput.Result.Code.SUCCESS_WITH_ACTION_PENDING; +import static google.registry.model.reporting.HistoryEntry.Type.CONTACT_TRANSFER_REQUEST; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableSet; @@ -45,7 +46,6 @@ import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppcommon.Trid; import google.registry.model.eppoutput.EppResponse; import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.ContactTransferData; import google.registry.model.transfer.TransferStatus; @@ -120,10 +120,7 @@ public final class ContactTransferRequestFlow implements TransactionalFlow { .setTransferStatus(TransferStatus.SERVER_APPROVED) .build(); Key contactHistoryKey = createHistoryKey(existingContact, ContactHistory.class); - historyBuilder - .setId(contactHistoryKey.getId()) - .setType(HistoryEntry.Type.CONTACT_TRANSFER_REQUEST) - .setModificationTime(now); + historyBuilder.setId(contactHistoryKey.getId()).setType(CONTACT_TRANSFER_REQUEST); // If the transfer is server approved, this message will be sent to the losing registrar. */ PollMessage serverApproveLosingPollMessage = createLosingTransferPollMessage(targetId, serverApproveTransferData, contactHistoryKey); diff --git a/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java b/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java index e8128c17f..bfca805d6 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java @@ -24,6 +24,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyOptionalAuthInfo; import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; import static google.registry.flows.contact.ContactFlowUtils.validateAsciiPostalInfo; import static google.registry.flows.contact.ContactFlowUtils.validateContactAgainstPolicy; +import static google.registry.model.reporting.HistoryEntry.Type.CONTACT_UPDATE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableSet; @@ -45,7 +46,6 @@ import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.EppResponse; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import java.util.Optional; import javax.annotation.Nullable; @@ -146,8 +146,7 @@ public final class ContactUpdateFlow implements TransactionalFlow { validateAsciiPostalInfo(newContact.getInternationalizedPostalInfo()); validateContactAgainstPolicy(newContact); historyBuilder - .setType(HistoryEntry.Type.CONTACT_UPDATE) - .setModificationTime(now) + .setType(CONTACT_UPDATE) .setXmlBytes(null) // We don't want to store contact details in the history entry. .setContact(newContact); tm().insert(historyBuilder.build()); diff --git a/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java b/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java index c450504c9..0c7221702 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java @@ -48,6 +48,7 @@ import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABIL import static google.registry.model.registry.Registry.TldState.QUIET_PERIOD; import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.model.registry.label.ReservationType.NAME_COLLISION; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_CREATE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.DateTimeUtils.END_OF_TIME; import static google.registry.util.DateTimeUtils.leapSafeAddYears; @@ -495,12 +496,7 @@ public class DomainCreateFlow implements TransactionalFlow { TransactionReportField.netAddsFieldFromYears(period.getValue()), 1))); } - return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_CREATE) - .setPeriod(period) - .setModificationTime(now) - .setDomain(domain) - .build(); + return historyBuilder.setType(DOMAIN_CREATE).setPeriod(period).setDomain(domain).build(); } private BillingEvent.OneTime createOneTimeBillingEvent( diff --git a/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java b/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java index a0a89811d..379a3df86 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java @@ -34,6 +34,7 @@ import static google.registry.model.eppoutput.Result.Code.SUCCESS; import static google.registry.model.eppoutput.Result.Code.SUCCESS_WITH_ACTION_PENDING; import static google.registry.model.reporting.DomainTransactionRecord.TransactionReportField.ADD_FIELDS; import static google.registry.model.reporting.DomainTransactionRecord.TransactionReportField.RENEW_FIELDS; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_DELETE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.pricing.PricingEngineProxy.getDomainRenewCost; import static google.registry.util.CollectionUtils.nullToEmpty; @@ -88,7 +89,6 @@ import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldType; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.TransferStatus; import java.util.Collections; @@ -331,11 +331,7 @@ public final class DomainDeleteFlow implements TransactionalFlow { : TransactionReportField.DELETED_DOMAINS_NOGRACE, 1))); } - return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_DELETE) - .setModificationTime(now) - .setDomain(domain) - .build(); + return historyBuilder.setType(DOMAIN_DELETE).setDomain(domain).build(); } private PollMessage.OneTime createDeletePollMessage( diff --git a/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java b/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java index 05a909e44..a18cc7732 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java @@ -29,6 +29,7 @@ import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge; import static google.registry.flows.domain.DomainFlowUtils.validateRegistrationPeriod; import static google.registry.flows.domain.DomainFlowUtils.verifyRegistrarIsActive; import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_RENEW; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.DateTimeUtils.leapSafeAddYears; @@ -73,7 +74,6 @@ import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import java.util.Optional; import javax.inject.Inject; @@ -230,9 +230,8 @@ public final class DomainRenewFlow implements TransactionalFlow { private DomainHistory buildDomainHistory( DomainBase newDomain, DateTime now, Period period, Duration renewGracePeriod) { return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_RENEW) + .setType(DOMAIN_RENEW) .setPeriod(period) - .setModificationTime(now) .setDomain(newDomain) .setDomainTransactionRecords( ImmutableSet.of( diff --git a/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java b/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java index ddc4de010..bd4016f46 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java @@ -27,6 +27,7 @@ import static google.registry.flows.domain.DomainFlowUtils.verifyNotReserved; import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked; import static google.registry.flows.domain.DomainFlowUtils.verifyRegistrarIsActive; import static google.registry.model.ResourceTransferUtils.updateForeignKeyIndexDeletionTime; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_RESTORE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.DateTimeUtils.END_OF_TIME; @@ -66,7 +67,6 @@ import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import java.util.Optional; import javax.inject.Inject; @@ -188,8 +188,7 @@ public final class DomainRestoreRequestFlow implements TransactionalFlow { private DomainHistory buildDomainHistory(DomainBase newDomain, DateTime now) { return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_RESTORE) - .setModificationTime(now) + .setType(DOMAIN_RESTORE) .setDomain(newDomain) .setDomainTransactionRecords( ImmutableSet.of( diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java index b9fad6717..1d69e892e 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java @@ -29,6 +29,7 @@ import static google.registry.flows.domain.DomainTransferUtils.createGainingTran import static google.registry.flows.domain.DomainTransferUtils.createTransferResponse; import static google.registry.model.ResourceTransferUtils.approvePendingTransfer; import static google.registry.model.reporting.DomainTransactionRecord.TransactionReportField.TRANSFER_SUCCESSFUL; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_TRANSFER_APPROVE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.pricing.PricingEngineProxy.getDomainRenewCost; import static google.registry.util.CollectionUtils.union; @@ -58,7 +59,6 @@ import google.registry.model.eppoutput.EppResponse; import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.DomainTransferData; import google.registry.model.transfer.TransferStatus; @@ -240,8 +240,7 @@ public final class DomainTransferApproveFlow implements TransactionalFlow { registry.getAutomaticTransferLength().plus(registry.getTransferGracePeriodLength()), ImmutableSet.of(TRANSFER_SUCCESSFUL)); return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_TRANSFER_APPROVE) - .setModificationTime(now) + .setType(DOMAIN_TRANSFER_APPROVE) .setOtherClientId(gainingClientId) .setDomain(newDomain) .setDomainTransactionRecords( diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java index 625d3da1e..22115af42 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java @@ -27,6 +27,7 @@ import static google.registry.flows.domain.DomainTransferUtils.createLosingTrans import static google.registry.flows.domain.DomainTransferUtils.createTransferResponse; import static google.registry.model.ResourceTransferUtils.denyPendingTransfer; import static google.registry.model.reporting.DomainTransactionRecord.TransactionReportField.TRANSFER_SUCCESSFUL; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_TRANSFER_CANCEL; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.DateTimeUtils.END_OF_TIME; @@ -46,7 +47,6 @@ import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppoutput.EppResponse; import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.TransferStatus; import java.util.Optional; @@ -130,8 +130,7 @@ public final class DomainTransferCancelFlow implements TransactionalFlow { registry.getAutomaticTransferLength().plus(registry.getTransferGracePeriodLength()), ImmutableSet.of(TRANSFER_SUCCESSFUL)); return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_TRANSFER_CANCEL) - .setModificationTime(now) + .setType(DOMAIN_TRANSFER_CANCEL) .setDomain(newDomain) .setDomainTransactionRecords(cancelingRecords) .build(); diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java index 0160288d8..84f5d7355 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java @@ -28,6 +28,7 @@ import static google.registry.flows.domain.DomainTransferUtils.createTransferRes import static google.registry.model.ResourceTransferUtils.denyPendingTransfer; import static google.registry.model.reporting.DomainTransactionRecord.TransactionReportField.TRANSFER_NACKED; import static google.registry.model.reporting.DomainTransactionRecord.TransactionReportField.TRANSFER_SUCCESSFUL; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_TRANSFER_REJECT; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.CollectionUtils.union; import static google.registry.util.DateTimeUtils.END_OF_TIME; @@ -48,7 +49,6 @@ import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppoutput.EppResponse; import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.TransferStatus; import java.util.Optional; @@ -131,8 +131,7 @@ public final class DomainTransferRejectFlow implements TransactionalFlow { registry.getAutomaticTransferLength().plus(registry.getTransferGracePeriodLength()), ImmutableSet.of(TRANSFER_SUCCESSFUL)); return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_TRANSFER_REJECT) - .setModificationTime(now) + .setType(DOMAIN_TRANSFER_REJECT) .setDomainTransactionRecords( union( cancelingRecords, diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java index 87c4e5792..ef083b927 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java @@ -32,6 +32,7 @@ import static google.registry.flows.domain.DomainTransferUtils.createPendingTran import static google.registry.flows.domain.DomainTransferUtils.createTransferResponse; import static google.registry.flows.domain.DomainTransferUtils.createTransferServerApproveEntities; import static google.registry.model.eppoutput.Result.Code.SUCCESS_WITH_ACTION_PENDING; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_TRANSFER_REQUEST; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableList; @@ -68,7 +69,6 @@ import google.registry.model.poll.PollMessage; import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.transfer.DomainTransferData; import google.registry.model.transfer.TransferData.TransferServerApproveEntity; @@ -315,9 +315,8 @@ public final class DomainTransferRequestFlow implements TransactionalFlow { private DomainHistory buildDomainHistory( DomainBase newDomain, Registry registry, DateTime now, Period period) { return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_TRANSFER_REQUEST) + .setType(DOMAIN_TRANSFER_REQUEST) .setPeriod(period) - .setModificationTime(now) .setDomain(newDomain) .setDomainTransactionRecords( ImmutableSet.of( diff --git a/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java b/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java index 311577ece..03b260243 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java @@ -39,6 +39,7 @@ import static google.registry.flows.domain.DomainFlowUtils.validateRegistrantAll import static google.registry.flows.domain.DomainFlowUtils.validateRequiredContactsPresent; import static google.registry.flows.domain.DomainFlowUtils.verifyClientUpdateNotProhibited; import static google.registry.flows.domain.DomainFlowUtils.verifyNotInPendingDelete; +import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_UPDATE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import com.google.common.collect.ImmutableSet; @@ -76,7 +77,6 @@ import google.registry.model.eppinput.EppInput; import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.EppResponse; import google.registry.model.registry.Registry; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import java.util.Optional; import javax.inject.Inject; @@ -166,7 +166,8 @@ public final class DomainUpdateFlow implements TransactionalFlow { flowCustomLogic.afterValidation( AfterValidationParameters.newBuilder().setExistingDomain(existingDomain).build()); DomainBase newDomain = performUpdate(command, existingDomain, now); - DomainHistory domainHistory = buildDomainHistory(newDomain, now); + DomainHistory domainHistory = + historyBuilder.setType(DOMAIN_UPDATE).setDomain(newDomain).build(); validateNewState(newDomain); dnsQueue.addDomainRefreshTask(targetId); ImmutableSet.Builder entitiesToSave = new ImmutableSet.Builder<>(); @@ -217,14 +218,6 @@ public final class DomainUpdateFlow implements TransactionalFlow { tld, add.getNameserverFullyQualifiedHostNames()); } - private DomainHistory buildDomainHistory(DomainBase newDomain, DateTime now) { - return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_UPDATE) - .setModificationTime(now) - .setDomain(newDomain) - .build(); - } - private DomainBase performUpdate(Update command, DomainBase domain, DateTime now) throws EppException { AddRemove add = command.getInnerAdd(); diff --git a/core/src/main/java/google/registry/flows/host/HostCreateFlow.java b/core/src/main/java/google/registry/flows/host/HostCreateFlow.java index 75fc2ab1e..199159dc6 100644 --- a/core/src/main/java/google/registry/flows/host/HostCreateFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostCreateFlow.java @@ -22,6 +22,7 @@ import static google.registry.flows.host.HostFlowUtils.verifySuperordinateDomain import static google.registry.flows.host.HostFlowUtils.verifySuperordinateDomainOwnership; import static google.registry.model.EppResourceUtils.createRepoId; import static google.registry.model.IdService.allocateId; +import static google.registry.model.reporting.HistoryEntry.Type.HOST_CREATE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.CollectionUtils.isNullOrEmpty; @@ -50,7 +51,6 @@ import google.registry.model.host.HostHistory; import google.registry.model.host.HostResource; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.ForeignKeyIndex; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import java.util.Optional; import javax.inject.Inject; @@ -129,7 +129,7 @@ public final class HostCreateFlow implements TransactionalFlow { .setRepoId(createRepoId(allocateId(), roidSuffix)) .setSuperordinateDomain(superordinateDomain.map(DomainBase::createVKey).orElse(null)) .build(); - historyBuilder.setType(HistoryEntry.Type.HOST_CREATE).setModificationTime(now).setHost(newHost); + historyBuilder.setType(HOST_CREATE).setHost(newHost); ImmutableSet entitiesToSave = ImmutableSet.of( newHost, diff --git a/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java b/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java index 1456e6ce3..ddf4aaa68 100644 --- a/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java @@ -130,7 +130,7 @@ public final class HostDeleteFlow implements TransactionalFlow { historyEntryType = Type.HOST_DELETE; resultCode = SUCCESS; } - historyBuilder.setType(historyEntryType).setModificationTime(now).setHost(newHost); + historyBuilder.setType(historyEntryType).setHost(newHost); tm().insert(historyBuilder.build()); tm().update(newHost); return responseBuilder.setResultFromCode(resultCode).build(); diff --git a/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java b/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java index e8395b3c3..3d2f3d774 100644 --- a/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java @@ -27,6 +27,7 @@ import static google.registry.flows.host.HostFlowUtils.validateHostName; import static google.registry.flows.host.HostFlowUtils.verifySuperordinateDomainNotInPendingDelete; import static google.registry.flows.host.HostFlowUtils.verifySuperordinateDomainOwnership; import static google.registry.model.index.ForeignKeyIndex.loadAndGetKey; +import static google.registry.model.reporting.HistoryEntry.Type.HOST_UPDATE; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.util.CollectionUtils.isNullOrEmpty; @@ -57,7 +58,6 @@ import google.registry.model.host.HostCommand.Update.Change; import google.registry.model.host.HostHistory; import google.registry.model.host.HostResource; import google.registry.model.index.ForeignKeyIndex; -import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.persistence.VKey; import java.util.Objects; @@ -201,12 +201,7 @@ public final class HostUpdateFlow implements TransactionalFlow { updateSuperordinateDomains(existingHost, newHost); } enqueueTasks(existingHost, newHost); - entitiesToInsert.add( - historyBuilder - .setType(HistoryEntry.Type.HOST_UPDATE) - .setModificationTime(now) - .setHost(newHost) - .build()); + entitiesToInsert.add(historyBuilder.setType(HOST_UPDATE).setHost(newHost).build()); tm().updateAll(entitiesToUpdate.build()); tm().insertAll(entitiesToInsert.build()); return responseBuilder.build();