Unnest transactionFieldAmount from DomainTransactionRecord

After working further with domain deletes, I realized we'll need to record multiple reportingTimes under a single historyEntry when issuing a -1 counter to cancel grace-period adds. Since the TLD would be the only shared component within a record, we'll just duplicate it across all records to save an unnecessary layer of hierarchy.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=166261413
This commit is contained in:
larryruili 2017-08-23 15:09:46 -07:00 committed by Ben McIlwain
parent f9a2415954
commit 97581e519d
12 changed files with 175 additions and 188 deletions

View file

@ -32,7 +32,6 @@ import static google.registry.model.EppResourceUtils.createDomainRepoId;
import static google.registry.model.EppResourceUtils.loadDomainApplication;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.registry.label.ReservedList.matchesAnchorTenantReservation;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.netAddsFieldFromYears;
import static google.registry.pricing.PricingEngineProxy.getDomainCreateCost;
import static google.registry.util.CollectionUtils.isNullOrEmpty;
import static google.registry.util.DateTimeUtils.END_OF_TIME;
@ -87,7 +86,7 @@ import google.registry.model.poll.PollMessage;
import google.registry.model.registry.Registry;
import google.registry.model.registry.label.ReservationType;
import google.registry.model.reporting.DomainTransactionRecord;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
import google.registry.tmch.LordnTask;
@ -241,11 +240,13 @@ public class DomainAllocateFlow implements TransactionalFlow {
.setPeriod(period)
.setModificationTime(now)
.setParent(Key.create(DomainResource.class, repoId))
.setDomainTransactionRecord(
.setDomainTransactionRecords(
ImmutableSet.of(
DomainTransactionRecord.create(
tld,
now.plus(addGracePeriod),
TransactionFieldAmount.create(netAddsFieldFromYears(period.getValue()), 1)))
TransactionReportField.netAddsFieldFromYears(period.getValue()),
1)))
.build();
}

View file

@ -42,7 +42,6 @@ import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBIT
import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.registry.label.ReservedList.matchesAnchorTenantReservation;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.netAddsFieldFromYears;
import static google.registry.util.DateTimeUtils.END_OF_TIME;
import static google.registry.util.DateTimeUtils.leapSafeAddYears;
@ -100,7 +99,7 @@ import google.registry.model.poll.PollMessage.Autorenew;
import google.registry.model.registry.Registry;
import google.registry.model.registry.Registry.TldState;
import google.registry.model.reporting.DomainTransactionRecord;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
import google.registry.tmch.LordnTask;
@ -372,11 +371,13 @@ public class DomainCreateFlow implements TransactionalFlow {
.setPeriod(period)
.setModificationTime(now)
.setParent(Key.create(DomainResource.class, repoId))
.setDomainTransactionRecord(
.setDomainTransactionRecords(
ImmutableSet.of(
DomainTransactionRecord.create(
tld,
now.plus(addGracePeriod),
TransactionFieldAmount.create(netAddsFieldFromYears(period.getValue()), 1)))
TransactionReportField.netAddsFieldFromYears(period.getValue()),
1)))
.build();
}

View file

@ -28,7 +28,6 @@ import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge;
import static google.registry.flows.domain.DomainFlowUtils.validateRegistrationPeriod;
import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.netRenewsFieldFromYears;
import static google.registry.util.DateTimeUtils.leapSafeAddYears;
import com.google.common.base.Optional;
@ -72,7 +71,7 @@ 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.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
import javax.inject.Inject;
@ -220,11 +219,13 @@ public final class DomainRenewFlow implements TransactionalFlow {
.setPeriod(period)
.setModificationTime(now)
.setParent(Key.create(existingDomain))
.setDomainTransactionRecord(
.setDomainTransactionRecords(
ImmutableSet.of(
DomainTransactionRecord.create(
existingDomain.getTld(),
now.plus(renewGracePeriod),
TransactionFieldAmount.create(netRenewsFieldFromYears(period.getValue()), 1)))
TransactionReportField.netRenewsFieldFromYears(period.getValue()),
1)))
.build();
}

View file

@ -26,7 +26,6 @@ import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge;
import static google.registry.flows.domain.DomainFlowUtils.verifyNotReserved;
import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.RESTORED_DOMAINS;
import static google.registry.util.DateTimeUtils.END_OF_TIME;
import com.google.common.base.Optional;
@ -65,7 +64,7 @@ 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.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
import javax.inject.Inject;
@ -177,9 +176,10 @@ public final class DomainRestoreRequestFlow implements TransactionalFlow {
.setType(HistoryEntry.Type.DOMAIN_RESTORE)
.setModificationTime(now)
.setParent(Key.create(existingDomain))
.setDomainTransactionRecord(
.setDomainTransactionRecords(
ImmutableSet.of(
DomainTransactionRecord.create(
existingDomain.getTld(), now, TransactionFieldAmount.create(RESTORED_DOMAINS, 1)))
existingDomain.getTld(), now, TransactionReportField.RESTORED_DOMAINS, 1)))
.build();
}

View file

@ -17,11 +17,9 @@ package google.registry.model.reporting;
import static com.google.common.base.Preconditions.checkArgument;
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import com.google.common.collect.ImmutableSet;
import com.googlecode.objectify.annotation.Embed;
import google.registry.model.Buildable;
import google.registry.model.ImmutableObject;
import java.util.Set;
import org.joda.time.DateTime;
/**
@ -37,6 +35,9 @@ import org.joda.time.DateTime;
@Embed
public class DomainTransactionRecord extends ImmutableObject implements Buildable {
/** The TLD this record operates on. */
String tld;
/**
* The time this Transaction takes effect (counting grace periods and other nuances).
*
@ -50,24 +51,6 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
*/
DateTime reportingTime;
/** The TLD this record operates on. */
String tld;
/** The fields affected by this transaction, and the amounts they're affected by. */
Set<TransactionFieldAmount> transactionFieldAmounts;
/** A tuple that encapsulates an amount to add to a specified field in the report. */
@Embed
public static class TransactionFieldAmount extends ImmutableObject {
public static TransactionFieldAmount create(
TransactionReportField reportField, int reportAmount) {
TransactionFieldAmount instance = new TransactionFieldAmount();
instance.reportField = reportField;
instance.reportAmount = reportAmount;
return instance;
}
/** The transaction report field we add reportAmount to for this registrar. */
TransactionReportField reportField;
@ -83,7 +66,7 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
* original SUCCESSFUL transfer counters. Finally, if we explicitly allow a transfer, the report
* amount is 0, as we've already counted the transfer in the original request.
*/
int reportAmount;
Integer reportAmount;
/**
* The field added to by reportAmount within the transaction report.
@ -142,7 +125,6 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
}
}
}
}
public DateTime getReportingTime() {
return reportingTime;
@ -152,20 +134,26 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
return tld;
}
public Set<TransactionFieldAmount> getTransactionFieldAmounts() {
return transactionFieldAmounts;
public TransactionReportField getReportField() {
return reportField;
}
public int getReportAmount() {
return reportAmount;
}
/** An alternative construction method when the builder is not necessary. */
public static DomainTransactionRecord create(
String tld,
DateTime reportingTime,
TransactionFieldAmount... transactionFieldAmounts) {
TransactionReportField transactionReportField,
int reportAmount) {
return new DomainTransactionRecord.Builder()
.setTld(tld)
// We report this event when the grace period ends, if applicable
.setReportingTime(reportingTime)
.setTransactionFieldAmounts(ImmutableSet.copyOf(transactionFieldAmounts))
.setReportField(transactionReportField)
.setReportAmount(reportAmount)
.build();
}
@ -184,30 +172,37 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
checkArgumentNotNull(instance, "DomainTransactionRecord instance must not be null");
}
public Builder setReportingTime(DateTime reportingTime) {
checkArgumentNotNull(reportingTime, "reportingTime must not be mull");
getInstance().reportingTime = reportingTime;
return this;
}
public Builder setTld(String tld) {
checkArgumentNotNull(tld, "tld must not be null");
getInstance().tld = tld;
return this;
}
public Builder setTransactionFieldAmounts(
ImmutableSet<TransactionFieldAmount> transactionFieldAmounts) {
getInstance().transactionFieldAmounts = transactionFieldAmounts;
public Builder setReportingTime(DateTime reportingTime) {
checkArgumentNotNull(reportingTime, "reportingTime must not be mull");
getInstance().reportingTime = reportingTime;
return this;
}
public Builder setReportField(TransactionReportField reportField) {
checkArgumentNotNull(reportField, "reportField must not be null");
getInstance().reportField = reportField;
return this;
}
public Builder setReportAmount(Integer reportAmount) {
checkArgumentNotNull(reportAmount, "reportAmount must not be null");
getInstance().reportAmount = reportAmount;
return this;
}
@Override
public DomainTransactionRecord build() {
checkArgumentNotNull(getInstance().reportingTime, "reportingTime must not be null");
checkArgumentNotNull(getInstance().tld, "tld must not be null");
checkArgumentNotNull(getInstance().reportingTime, "reportingTime must be set");
checkArgumentNotNull(getInstance().tld, "tld must be set");
checkArgumentNotNull(
getInstance().transactionFieldAmounts, "transactionFieldAmounts must not be null");
getInstance().reportField, "reportField must be set");
checkArgumentNotNull(getInstance().reportAmount, "reportAmount must be set");
return super.build();
}
}

View file

@ -14,6 +14,9 @@
package google.registry.model.reporting;
import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy;
import com.google.common.collect.ImmutableSet;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
@ -27,7 +30,7 @@ import google.registry.model.ImmutableObject;
import google.registry.model.annotations.ReportedOn;
import google.registry.model.domain.Period;
import google.registry.model.eppcommon.Trid;
import javax.annotation.Nullable;
import java.util.Set;
import org.joda.time.DateTime;
/** A record of an EPP command that mutated a resource. */
@ -128,12 +131,11 @@ public class HistoryEntry extends ImmutableObject implements Buildable {
/**
* Logging field for transaction reporting.
*
* <p>This will be null for any HistoryEntry generated before this field was added. This will
* also be null if the HistoryEntry refers to an EPP mutation that does not affect domain
* <p>This will be empty for any HistoryEntry generated before this field was added. This will
* also be empty if the HistoryEntry refers to an EPP mutation that does not affect domain
* transaction counts (such as contact or host mutations).
*/
@Nullable
DomainTransactionRecord domainTransactionRecord;
Set<DomainTransactionRecord> domainTransactionRecords;
public Key<? extends EppResource> getParent() {
return parent;
@ -179,9 +181,8 @@ public class HistoryEntry extends ImmutableObject implements Buildable {
return requestedByRegistrar;
}
@Nullable
public DomainTransactionRecord getDomainTransactionRecord() {
return domainTransactionRecord;
public ImmutableSet<DomainTransactionRecord> getDomainTransactionRecords() {
return nullToEmptyImmutableCopy(domainTransactionRecords);
}
@Override
@ -257,8 +258,9 @@ public class HistoryEntry extends ImmutableObject implements Buildable {
return this;
}
public Builder setDomainTransactionRecord(DomainTransactionRecord domainTransactionRecord) {
getInstance().domainTransactionRecord = domainTransactionRecord;
public Builder setDomainTransactionRecords(
ImmutableSet<DomainTransactionRecord> domainTransactionRecords) {
getInstance().domainTransactionRecords = domainTransactionRecords;
return this;
}
}

View file

@ -18,7 +18,6 @@ import static com.google.common.io.BaseEncoding.base16;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.EppResourceUtils.loadDomainApplication;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.netAddsFieldFromYears;
import static google.registry.testing.DatastoreHelper.assertBillingEvents;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
@ -73,7 +72,7 @@ import google.registry.model.poll.PollMessage;
import google.registry.model.registry.Registry;
import google.registry.model.registry.Registry.TldState;
import google.registry.model.reporting.DomainTransactionRecord;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.smd.EncodedSignedMark;
import google.registry.testing.TaskQueueHelper.TaskMatcher;
@ -675,12 +674,11 @@ public class DomainAllocateFlowTest
DomainResource domain = reloadResourceByForeignKey();
HistoryEntry historyEntry =
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_ALLOCATE);
DomainTransactionRecord transactionRecord = historyEntry.getDomainTransactionRecord();
assertThat(transactionRecord.getTld()).isEqualTo("tld");
assertThat(transactionRecord.getReportingTime())
.isEqualTo(historyEntry.getModificationTime().plusMinutes(9));
assertThat(transactionRecord.getTransactionFieldAmounts())
.containsExactly(TransactionFieldAmount.create(netAddsFieldFromYears(2), 1));
assertThat(historyEntry.getDomainTransactionRecords()).containsExactly(
DomainTransactionRecord.create(
"tld",
historyEntry.getModificationTime().plusMinutes(9),
TransactionReportField.netAddsFieldFromYears(2),
1));
}
}

View file

@ -22,7 +22,6 @@ import static google.registry.model.eppcommon.StatusValue.OK;
import static google.registry.model.eppcommon.StatusValue.SERVER_TRANSFER_PROHIBITED;
import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBITED;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.netAddsFieldFromYears;
import static google.registry.pricing.PricingEngineProxy.isDomainPremium;
import static google.registry.testing.DatastoreHelper.assertBillingEvents;
import static google.registry.testing.DatastoreHelper.assertPollMessagesForResource;
@ -129,7 +128,7 @@ import google.registry.model.poll.PollMessage;
import google.registry.model.registry.Registry;
import google.registry.model.registry.Registry.TldState;
import google.registry.model.reporting.DomainTransactionRecord;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import google.registry.monitoring.whitebox.EppMetric;
import google.registry.testing.DatastoreHelper;
@ -2003,14 +2002,12 @@ public class DomainCreateFlowTest extends ResourceFlowTestCase<DomainCreateFlow,
runFlow();
DomainResource domain = reloadResourceByForeignKey();
HistoryEntry historyEntry = getHistoryEntries(domain).get(0);
DomainTransactionRecord transactionRecord =
historyEntry.getDomainTransactionRecord();
assertThat(transactionRecord.getTld()).isEqualTo("tld");
assertThat(transactionRecord.getReportingTime())
.isEqualTo(historyEntry.getModificationTime().plusMinutes(9));
assertThat(transactionRecord.getTransactionFieldAmounts())
.containsExactly(TransactionFieldAmount.create(netAddsFieldFromYears(2), 1));
assertThat(historyEntry.getDomainTransactionRecords()).containsExactly(
DomainTransactionRecord.create(
"tld",
historyEntry.getModificationTime().plusMinutes(9),
TransactionReportField.netAddsFieldFromYears(2),
1));
}
@Test

View file

@ -17,7 +17,6 @@ package google.registry.flows.domain;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.flows.domain.DomainTransferFlowTestCase.persistWithPendingTransfer;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.netRenewsFieldFromYears;
import static google.registry.testing.DatastoreHelper.assertBillingEvents;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
@ -60,7 +59,7 @@ import google.registry.model.eppcommon.StatusValue;
import google.registry.model.poll.PollMessage;
import google.registry.model.registry.Registry;
import google.registry.model.reporting.DomainTransactionRecord;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import java.util.Map;
import org.joda.money.Money;
@ -677,12 +676,11 @@ public class DomainRenewFlowTest extends ResourceFlowTestCase<DomainRenewFlow, D
DomainResource domain = reloadResourceByForeignKey();
HistoryEntry historyEntry =
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RENEW);
DomainTransactionRecord transactionRecord = historyEntry.getDomainTransactionRecord();
assertThat(transactionRecord.getTld()).isEqualTo("tld");
assertThat(transactionRecord.getReportingTime())
.isEqualTo(historyEntry.getModificationTime().plusMinutes(9));
assertThat(transactionRecord.getTransactionFieldAmounts())
.containsExactly(TransactionFieldAmount.create(netRenewsFieldFromYears(5), 1));
assertThat(historyEntry.getDomainTransactionRecords()).containsExactly(
DomainTransactionRecord.create(
"tld",
historyEntry.getModificationTime().plusMinutes(9),
TransactionReportField.netRenewsFieldFromYears(5),
1));
}
}

View file

@ -16,7 +16,6 @@ package google.registry.flows.domain;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.RESTORED_DOMAINS;
import static google.registry.testing.DatastoreHelper.assertBillingEvents;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
@ -62,7 +61,7 @@ import google.registry.model.eppcommon.StatusValue;
import google.registry.model.poll.PollMessage;
import google.registry.model.registry.Registry;
import google.registry.model.reporting.DomainTransactionRecord;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import google.registry.model.reporting.HistoryEntry;
import java.util.Map;
import org.joda.money.Money;
@ -579,13 +578,12 @@ public class DomainRestoreRequestFlowTest extends
DomainResource domain = reloadResourceByForeignKey();
HistoryEntry historyEntryDomainRestore =
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RESTORE);
DomainTransactionRecord transactionRecord =
historyEntryDomainRestore.getDomainTransactionRecord();
assertThat(transactionRecord.getTld()).isEqualTo("tld");
assertThat(transactionRecord.getReportingTime())
.isEqualTo(historyEntryDomainRestore.getModificationTime());
assertThat(transactionRecord.getTransactionFieldAmounts())
.containsExactly(TransactionFieldAmount.create(RESTORED_DOMAINS, 1));
assertThat(historyEntryDomainRestore.getDomainTransactionRecords())
.containsExactly(
DomainTransactionRecord.create(
"tld",
historyEntryDomainRestore.getModificationTime(),
TransactionReportField.RESTORED_DOMAINS,
1));
}
}

View file

@ -16,7 +16,6 @@ package google.registry.model.reporting;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount.TransactionReportField.NET_ADDS_1_YR;
import static google.registry.testing.DatastoreHelper.createTld;
import static google.registry.testing.DatastoreHelper.newDomainResource;
import static google.registry.testing.DatastoreHelper.persistResource;
@ -26,7 +25,7 @@ import com.google.common.collect.ImmutableSet;
import google.registry.model.EntityTestCase;
import google.registry.model.domain.Period;
import google.registry.model.eppcommon.Trid;
import google.registry.model.reporting.DomainTransactionRecord.TransactionFieldAmount;
import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField;
import org.junit.Before;
import org.junit.Test;
@ -42,8 +41,8 @@ public class HistoryEntryTest extends EntityTestCase {
new DomainTransactionRecord.Builder()
.setTld("foobar")
.setReportingTime(clock.nowUtc())
.setTransactionFieldAmounts(
ImmutableSet.of(TransactionFieldAmount.create(NET_ADDS_1_YR, 1)))
.setReportField(TransactionReportField.NET_ADDS_1_YR)
.setReportAmount(1)
.build();
// Set up a new persisted HistoryEntry entity.
historyEntry =
@ -59,7 +58,7 @@ public class HistoryEntryTest extends EntityTestCase {
.setBySuperuser(false)
.setReason("reason")
.setRequestedByRegistrar(false)
.setDomainTransactionRecord(transactionRecord)
.setDomainTransactionRecords(ImmutableSet.of(transactionRecord))
.build();
persistResource(historyEntry);
}

View file

@ -782,15 +782,12 @@ class google.registry.model.registry.label.ReservedList$ReservedListEntry {
java.lang.String comment;
}
class google.registry.model.reporting.DomainTransactionRecord {
google.registry.model.reporting.DomainTransactionRecord$TransactionReportField reportField;
int reportAmount;
java.lang.String tld;
java.util.Set<google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount> transactionFieldAmounts;
org.joda.time.DateTime reportingTime;
}
class google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount {
google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount$TransactionReportField reportField;
int reportAmount;
}
enum google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount$TransactionReportField {
enum google.registry.model.reporting.DomainTransactionRecord$TransactionReportField {
DELETED_DOMAINS_GRACE;
DELETED_DOMAINS_NOGRACE;
NET_ADDS_10_YR;
@ -826,12 +823,12 @@ class google.registry.model.reporting.HistoryEntry {
byte[] xmlBytes;
google.registry.model.domain.Period period;
google.registry.model.eppcommon.Trid trid;
google.registry.model.reporting.DomainTransactionRecord domainTransactionRecord;
google.registry.model.reporting.HistoryEntry$Type type;
java.lang.Boolean requestedByRegistrar;
java.lang.String clientId;
java.lang.String otherClientId;
java.lang.String reason;
java.util.Set<google.registry.model.reporting.DomainTransactionRecord> domainTransactionRecords;
org.joda.time.DateTime modificationTime;
}
enum google.registry.model.reporting.HistoryEntry$Type {