mirror of
https://github.com/google/nomulus.git
synced 2025-06-29 07:43:37 +02:00
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:
parent
f9a2415954
commit
97581e519d
12 changed files with 175 additions and 188 deletions
|
@ -32,7 +32,6 @@ import static google.registry.model.EppResourceUtils.createDomainRepoId;
|
||||||
import static google.registry.model.EppResourceUtils.loadDomainApplication;
|
import static google.registry.model.EppResourceUtils.loadDomainApplication;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||||
import static google.registry.model.registry.label.ReservedList.matchesAnchorTenantReservation;
|
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.pricing.PricingEngineProxy.getDomainCreateCost;
|
||||||
import static google.registry.util.CollectionUtils.isNullOrEmpty;
|
import static google.registry.util.CollectionUtils.isNullOrEmpty;
|
||||||
import static google.registry.util.DateTimeUtils.END_OF_TIME;
|
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.Registry;
|
||||||
import google.registry.model.registry.label.ReservationType;
|
import google.registry.model.registry.label.ReservationType;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
||||||
import google.registry.tmch.LordnTask;
|
import google.registry.tmch.LordnTask;
|
||||||
|
@ -241,11 +240,13 @@ public class DomainAllocateFlow implements TransactionalFlow {
|
||||||
.setPeriod(period)
|
.setPeriod(period)
|
||||||
.setModificationTime(now)
|
.setModificationTime(now)
|
||||||
.setParent(Key.create(DomainResource.class, repoId))
|
.setParent(Key.create(DomainResource.class, repoId))
|
||||||
.setDomainTransactionRecord(
|
.setDomainTransactionRecords(
|
||||||
|
ImmutableSet.of(
|
||||||
DomainTransactionRecord.create(
|
DomainTransactionRecord.create(
|
||||||
tld,
|
tld,
|
||||||
now.plus(addGracePeriod),
|
now.plus(addGracePeriod),
|
||||||
TransactionFieldAmount.create(netAddsFieldFromYears(period.getValue()), 1)))
|
TransactionReportField.netAddsFieldFromYears(period.getValue()),
|
||||||
|
1)))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.index.DomainApplicationIndex.loadActiveApplicationsByDomainName;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||||
import static google.registry.model.registry.label.ReservedList.matchesAnchorTenantReservation;
|
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.END_OF_TIME;
|
||||||
import static google.registry.util.DateTimeUtils.leapSafeAddYears;
|
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;
|
||||||
import google.registry.model.registry.Registry.TldState;
|
import google.registry.model.registry.Registry.TldState;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
||||||
import google.registry.tmch.LordnTask;
|
import google.registry.tmch.LordnTask;
|
||||||
|
@ -372,11 +371,13 @@ public class DomainCreateFlow implements TransactionalFlow {
|
||||||
.setPeriod(period)
|
.setPeriod(period)
|
||||||
.setModificationTime(now)
|
.setModificationTime(now)
|
||||||
.setParent(Key.create(DomainResource.class, repoId))
|
.setParent(Key.create(DomainResource.class, repoId))
|
||||||
.setDomainTransactionRecord(
|
.setDomainTransactionRecords(
|
||||||
|
ImmutableSet.of(
|
||||||
DomainTransactionRecord.create(
|
DomainTransactionRecord.create(
|
||||||
tld,
|
tld,
|
||||||
now.plus(addGracePeriod),
|
now.plus(addGracePeriod),
|
||||||
TransactionFieldAmount.create(netAddsFieldFromYears(period.getValue()), 1)))
|
TransactionReportField.netAddsFieldFromYears(period.getValue()),
|
||||||
|
1)))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.validateRegistrationPeriod;
|
||||||
import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears;
|
import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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 static google.registry.util.DateTimeUtils.leapSafeAddYears;
|
||||||
|
|
||||||
import com.google.common.base.Optional;
|
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.poll.PollMessage;
|
||||||
import google.registry.model.registry.Registry;
|
import google.registry.model.registry.Registry;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
@ -220,11 +219,13 @@ public final class DomainRenewFlow implements TransactionalFlow {
|
||||||
.setPeriod(period)
|
.setPeriod(period)
|
||||||
.setModificationTime(now)
|
.setModificationTime(now)
|
||||||
.setParent(Key.create(existingDomain))
|
.setParent(Key.create(existingDomain))
|
||||||
.setDomainTransactionRecord(
|
.setDomainTransactionRecords(
|
||||||
|
ImmutableSet.of(
|
||||||
DomainTransactionRecord.create(
|
DomainTransactionRecord.create(
|
||||||
existingDomain.getTld(),
|
existingDomain.getTld(),
|
||||||
now.plus(renewGracePeriod),
|
now.plus(renewGracePeriod),
|
||||||
TransactionFieldAmount.create(netRenewsFieldFromYears(period.getValue()), 1)))
|
TransactionReportField.netRenewsFieldFromYears(period.getValue()),
|
||||||
|
1)))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.verifyNotReserved;
|
||||||
import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked;
|
import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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 static google.registry.util.DateTimeUtils.END_OF_TIME;
|
||||||
|
|
||||||
import com.google.common.base.Optional;
|
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.poll.PollMessage;
|
||||||
import google.registry.model.registry.Registry;
|
import google.registry.model.registry.Registry;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
@ -177,9 +176,10 @@ public final class DomainRestoreRequestFlow implements TransactionalFlow {
|
||||||
.setType(HistoryEntry.Type.DOMAIN_RESTORE)
|
.setType(HistoryEntry.Type.DOMAIN_RESTORE)
|
||||||
.setModificationTime(now)
|
.setModificationTime(now)
|
||||||
.setParent(Key.create(existingDomain))
|
.setParent(Key.create(existingDomain))
|
||||||
.setDomainTransactionRecord(
|
.setDomainTransactionRecords(
|
||||||
|
ImmutableSet.of(
|
||||||
DomainTransactionRecord.create(
|
DomainTransactionRecord.create(
|
||||||
existingDomain.getTld(), now, TransactionFieldAmount.create(RESTORED_DOMAINS, 1)))
|
existingDomain.getTld(), now, TransactionReportField.RESTORED_DOMAINS, 1)))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,9 @@ package google.registry.model.reporting;
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
|
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import com.googlecode.objectify.annotation.Embed;
|
import com.googlecode.objectify.annotation.Embed;
|
||||||
import google.registry.model.Buildable;
|
import google.registry.model.Buildable;
|
||||||
import google.registry.model.ImmutableObject;
|
import google.registry.model.ImmutableObject;
|
||||||
import java.util.Set;
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,6 +35,9 @@ import org.joda.time.DateTime;
|
||||||
@Embed
|
@Embed
|
||||||
public class DomainTransactionRecord extends ImmutableObject implements Buildable {
|
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).
|
* 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;
|
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. */
|
/** The transaction report field we add reportAmount to for this registrar. */
|
||||||
TransactionReportField reportField;
|
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
|
* 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.
|
* 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.
|
* The field added to by reportAmount within the transaction report.
|
||||||
|
@ -142,7 +125,6 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public DateTime getReportingTime() {
|
public DateTime getReportingTime() {
|
||||||
return reportingTime;
|
return reportingTime;
|
||||||
|
@ -152,20 +134,26 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
|
||||||
return tld;
|
return tld;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<TransactionFieldAmount> getTransactionFieldAmounts() {
|
public TransactionReportField getReportField() {
|
||||||
return transactionFieldAmounts;
|
return reportField;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getReportAmount() {
|
||||||
|
return reportAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** An alternative construction method when the builder is not necessary. */
|
/** An alternative construction method when the builder is not necessary. */
|
||||||
public static DomainTransactionRecord create(
|
public static DomainTransactionRecord create(
|
||||||
String tld,
|
String tld,
|
||||||
DateTime reportingTime,
|
DateTime reportingTime,
|
||||||
TransactionFieldAmount... transactionFieldAmounts) {
|
TransactionReportField transactionReportField,
|
||||||
|
int reportAmount) {
|
||||||
return new DomainTransactionRecord.Builder()
|
return new DomainTransactionRecord.Builder()
|
||||||
.setTld(tld)
|
.setTld(tld)
|
||||||
// We report this event when the grace period ends, if applicable
|
// We report this event when the grace period ends, if applicable
|
||||||
.setReportingTime(reportingTime)
|
.setReportingTime(reportingTime)
|
||||||
.setTransactionFieldAmounts(ImmutableSet.copyOf(transactionFieldAmounts))
|
.setReportField(transactionReportField)
|
||||||
|
.setReportAmount(reportAmount)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,30 +172,37 @@ public class DomainTransactionRecord extends ImmutableObject implements Buildabl
|
||||||
checkArgumentNotNull(instance, "DomainTransactionRecord instance must not be null");
|
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) {
|
public Builder setTld(String tld) {
|
||||||
checkArgumentNotNull(tld, "tld must not be null");
|
checkArgumentNotNull(tld, "tld must not be null");
|
||||||
getInstance().tld = tld;
|
getInstance().tld = tld;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setTransactionFieldAmounts(
|
public Builder setReportingTime(DateTime reportingTime) {
|
||||||
ImmutableSet<TransactionFieldAmount> transactionFieldAmounts) {
|
checkArgumentNotNull(reportingTime, "reportingTime must not be mull");
|
||||||
getInstance().transactionFieldAmounts = transactionFieldAmounts;
|
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;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DomainTransactionRecord build() {
|
public DomainTransactionRecord build() {
|
||||||
checkArgumentNotNull(getInstance().reportingTime, "reportingTime must not be null");
|
checkArgumentNotNull(getInstance().reportingTime, "reportingTime must be set");
|
||||||
checkArgumentNotNull(getInstance().tld, "tld must not be null");
|
checkArgumentNotNull(getInstance().tld, "tld must be set");
|
||||||
checkArgumentNotNull(
|
checkArgumentNotNull(
|
||||||
getInstance().transactionFieldAmounts, "transactionFieldAmounts must not be null");
|
getInstance().reportField, "reportField must be set");
|
||||||
|
checkArgumentNotNull(getInstance().reportAmount, "reportAmount must be set");
|
||||||
return super.build();
|
return super.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
|
|
||||||
package google.registry.model.reporting;
|
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.Key;
|
||||||
import com.googlecode.objectify.annotation.Entity;
|
import com.googlecode.objectify.annotation.Entity;
|
||||||
import com.googlecode.objectify.annotation.Id;
|
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.annotations.ReportedOn;
|
||||||
import google.registry.model.domain.Period;
|
import google.registry.model.domain.Period;
|
||||||
import google.registry.model.eppcommon.Trid;
|
import google.registry.model.eppcommon.Trid;
|
||||||
import javax.annotation.Nullable;
|
import java.util.Set;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
/** A record of an EPP command that mutated a resource. */
|
/** 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.
|
* Logging field for transaction reporting.
|
||||||
*
|
*
|
||||||
* <p>This will be null for any HistoryEntry generated before this field was added. This will
|
* <p>This will be empty 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
|
* also be empty if the HistoryEntry refers to an EPP mutation that does not affect domain
|
||||||
* transaction counts (such as contact or host mutations).
|
* transaction counts (such as contact or host mutations).
|
||||||
*/
|
*/
|
||||||
@Nullable
|
Set<DomainTransactionRecord> domainTransactionRecords;
|
||||||
DomainTransactionRecord domainTransactionRecord;
|
|
||||||
|
|
||||||
public Key<? extends EppResource> getParent() {
|
public Key<? extends EppResource> getParent() {
|
||||||
return parent;
|
return parent;
|
||||||
|
@ -179,9 +181,8 @@ public class HistoryEntry extends ImmutableObject implements Buildable {
|
||||||
return requestedByRegistrar;
|
return requestedByRegistrar;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
public ImmutableSet<DomainTransactionRecord> getDomainTransactionRecords() {
|
||||||
public DomainTransactionRecord getDomainTransactionRecord() {
|
return nullToEmptyImmutableCopy(domainTransactionRecords);
|
||||||
return domainTransactionRecord;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -257,8 +258,9 @@ public class HistoryEntry extends ImmutableObject implements Buildable {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setDomainTransactionRecord(DomainTransactionRecord domainTransactionRecord) {
|
public Builder setDomainTransactionRecords(
|
||||||
getInstance().domainTransactionRecord = domainTransactionRecord;
|
ImmutableSet<DomainTransactionRecord> domainTransactionRecords) {
|
||||||
|
getInstance().domainTransactionRecords = domainTransactionRecords;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ import static com.google.common.io.BaseEncoding.base16;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.model.EppResourceUtils.loadDomainApplication;
|
import static google.registry.model.EppResourceUtils.loadDomainApplication;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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.assertBillingEvents;
|
||||||
import static google.registry.testing.DatastoreHelper.createTld;
|
import static google.registry.testing.DatastoreHelper.createTld;
|
||||||
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
|
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;
|
||||||
import google.registry.model.registry.Registry.TldState;
|
import google.registry.model.registry.Registry.TldState;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import google.registry.model.smd.EncodedSignedMark;
|
import google.registry.model.smd.EncodedSignedMark;
|
||||||
import google.registry.testing.TaskQueueHelper.TaskMatcher;
|
import google.registry.testing.TaskQueueHelper.TaskMatcher;
|
||||||
|
@ -675,12 +674,11 @@ public class DomainAllocateFlowTest
|
||||||
DomainResource domain = reloadResourceByForeignKey();
|
DomainResource domain = reloadResourceByForeignKey();
|
||||||
HistoryEntry historyEntry =
|
HistoryEntry historyEntry =
|
||||||
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_ALLOCATE);
|
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_ALLOCATE);
|
||||||
DomainTransactionRecord transactionRecord = historyEntry.getDomainTransactionRecord();
|
assertThat(historyEntry.getDomainTransactionRecords()).containsExactly(
|
||||||
|
DomainTransactionRecord.create(
|
||||||
assertThat(transactionRecord.getTld()).isEqualTo("tld");
|
"tld",
|
||||||
assertThat(transactionRecord.getReportingTime())
|
historyEntry.getModificationTime().plusMinutes(9),
|
||||||
.isEqualTo(historyEntry.getModificationTime().plusMinutes(9));
|
TransactionReportField.netAddsFieldFromYears(2),
|
||||||
assertThat(transactionRecord.getTransactionFieldAmounts())
|
1));
|
||||||
.containsExactly(TransactionFieldAmount.create(netAddsFieldFromYears(2), 1));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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_TRANSFER_PROHIBITED;
|
||||||
import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBITED;
|
import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBITED;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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.pricing.PricingEngineProxy.isDomainPremium;
|
||||||
import static google.registry.testing.DatastoreHelper.assertBillingEvents;
|
import static google.registry.testing.DatastoreHelper.assertBillingEvents;
|
||||||
import static google.registry.testing.DatastoreHelper.assertPollMessagesForResource;
|
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;
|
||||||
import google.registry.model.registry.Registry.TldState;
|
import google.registry.model.registry.Registry.TldState;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import google.registry.monitoring.whitebox.EppMetric;
|
import google.registry.monitoring.whitebox.EppMetric;
|
||||||
import google.registry.testing.DatastoreHelper;
|
import google.registry.testing.DatastoreHelper;
|
||||||
|
@ -2003,14 +2002,12 @@ public class DomainCreateFlowTest extends ResourceFlowTestCase<DomainCreateFlow,
|
||||||
runFlow();
|
runFlow();
|
||||||
DomainResource domain = reloadResourceByForeignKey();
|
DomainResource domain = reloadResourceByForeignKey();
|
||||||
HistoryEntry historyEntry = getHistoryEntries(domain).get(0);
|
HistoryEntry historyEntry = getHistoryEntries(domain).get(0);
|
||||||
DomainTransactionRecord transactionRecord =
|
assertThat(historyEntry.getDomainTransactionRecords()).containsExactly(
|
||||||
historyEntry.getDomainTransactionRecord();
|
DomainTransactionRecord.create(
|
||||||
|
"tld",
|
||||||
assertThat(transactionRecord.getTld()).isEqualTo("tld");
|
historyEntry.getModificationTime().plusMinutes(9),
|
||||||
assertThat(transactionRecord.getReportingTime())
|
TransactionReportField.netAddsFieldFromYears(2),
|
||||||
.isEqualTo(historyEntry.getModificationTime().plusMinutes(9));
|
1));
|
||||||
assertThat(transactionRecord.getTransactionFieldAmounts())
|
|
||||||
.containsExactly(TransactionFieldAmount.create(netAddsFieldFromYears(2), 1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -17,7 +17,6 @@ package google.registry.flows.domain;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.flows.domain.DomainTransferFlowTestCase.persistWithPendingTransfer;
|
import static google.registry.flows.domain.DomainTransferFlowTestCase.persistWithPendingTransfer;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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.assertBillingEvents;
|
||||||
import static google.registry.testing.DatastoreHelper.createTld;
|
import static google.registry.testing.DatastoreHelper.createTld;
|
||||||
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
|
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.poll.PollMessage;
|
||||||
import google.registry.model.registry.Registry;
|
import google.registry.model.registry.Registry;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.joda.money.Money;
|
import org.joda.money.Money;
|
||||||
|
@ -677,12 +676,11 @@ public class DomainRenewFlowTest extends ResourceFlowTestCase<DomainRenewFlow, D
|
||||||
DomainResource domain = reloadResourceByForeignKey();
|
DomainResource domain = reloadResourceByForeignKey();
|
||||||
HistoryEntry historyEntry =
|
HistoryEntry historyEntry =
|
||||||
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RENEW);
|
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RENEW);
|
||||||
DomainTransactionRecord transactionRecord = historyEntry.getDomainTransactionRecord();
|
assertThat(historyEntry.getDomainTransactionRecords()).containsExactly(
|
||||||
|
DomainTransactionRecord.create(
|
||||||
assertThat(transactionRecord.getTld()).isEqualTo("tld");
|
"tld",
|
||||||
assertThat(transactionRecord.getReportingTime())
|
historyEntry.getModificationTime().plusMinutes(9),
|
||||||
.isEqualTo(historyEntry.getModificationTime().plusMinutes(9));
|
TransactionReportField.netRenewsFieldFromYears(5),
|
||||||
assertThat(transactionRecord.getTransactionFieldAmounts())
|
1));
|
||||||
.containsExactly(TransactionFieldAmount.create(netRenewsFieldFromYears(5), 1));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ package google.registry.flows.domain;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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.assertBillingEvents;
|
||||||
import static google.registry.testing.DatastoreHelper.createTld;
|
import static google.registry.testing.DatastoreHelper.createTld;
|
||||||
import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType;
|
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.poll.PollMessage;
|
||||||
import google.registry.model.registry.Registry;
|
import google.registry.model.registry.Registry;
|
||||||
import google.registry.model.reporting.DomainTransactionRecord;
|
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.HistoryEntry;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.joda.money.Money;
|
import org.joda.money.Money;
|
||||||
|
@ -579,13 +578,12 @@ public class DomainRestoreRequestFlowTest extends
|
||||||
DomainResource domain = reloadResourceByForeignKey();
|
DomainResource domain = reloadResourceByForeignKey();
|
||||||
HistoryEntry historyEntryDomainRestore =
|
HistoryEntry historyEntryDomainRestore =
|
||||||
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RESTORE);
|
getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_RESTORE);
|
||||||
DomainTransactionRecord transactionRecord =
|
assertThat(historyEntryDomainRestore.getDomainTransactionRecords())
|
||||||
historyEntryDomainRestore.getDomainTransactionRecord();
|
.containsExactly(
|
||||||
|
DomainTransactionRecord.create(
|
||||||
assertThat(transactionRecord.getTld()).isEqualTo("tld");
|
"tld",
|
||||||
assertThat(transactionRecord.getReportingTime())
|
historyEntryDomainRestore.getModificationTime(),
|
||||||
.isEqualTo(historyEntryDomainRestore.getModificationTime());
|
TransactionReportField.RESTORED_DOMAINS,
|
||||||
assertThat(transactionRecord.getTransactionFieldAmounts())
|
1));
|
||||||
.containsExactly(TransactionFieldAmount.create(RESTORED_DOMAINS, 1));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ package google.registry.model.reporting;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
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.createTld;
|
||||||
import static google.registry.testing.DatastoreHelper.newDomainResource;
|
import static google.registry.testing.DatastoreHelper.newDomainResource;
|
||||||
import static google.registry.testing.DatastoreHelper.persistResource;
|
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.EntityTestCase;
|
||||||
import google.registry.model.domain.Period;
|
import google.registry.model.domain.Period;
|
||||||
import google.registry.model.eppcommon.Trid;
|
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.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -42,8 +41,8 @@ public class HistoryEntryTest extends EntityTestCase {
|
||||||
new DomainTransactionRecord.Builder()
|
new DomainTransactionRecord.Builder()
|
||||||
.setTld("foobar")
|
.setTld("foobar")
|
||||||
.setReportingTime(clock.nowUtc())
|
.setReportingTime(clock.nowUtc())
|
||||||
.setTransactionFieldAmounts(
|
.setReportField(TransactionReportField.NET_ADDS_1_YR)
|
||||||
ImmutableSet.of(TransactionFieldAmount.create(NET_ADDS_1_YR, 1)))
|
.setReportAmount(1)
|
||||||
.build();
|
.build();
|
||||||
// Set up a new persisted HistoryEntry entity.
|
// Set up a new persisted HistoryEntry entity.
|
||||||
historyEntry =
|
historyEntry =
|
||||||
|
@ -59,7 +58,7 @@ public class HistoryEntryTest extends EntityTestCase {
|
||||||
.setBySuperuser(false)
|
.setBySuperuser(false)
|
||||||
.setReason("reason")
|
.setReason("reason")
|
||||||
.setRequestedByRegistrar(false)
|
.setRequestedByRegistrar(false)
|
||||||
.setDomainTransactionRecord(transactionRecord)
|
.setDomainTransactionRecords(ImmutableSet.of(transactionRecord))
|
||||||
.build();
|
.build();
|
||||||
persistResource(historyEntry);
|
persistResource(historyEntry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -782,15 +782,12 @@ class google.registry.model.registry.label.ReservedList$ReservedListEntry {
|
||||||
java.lang.String comment;
|
java.lang.String comment;
|
||||||
}
|
}
|
||||||
class google.registry.model.reporting.DomainTransactionRecord {
|
class google.registry.model.reporting.DomainTransactionRecord {
|
||||||
|
google.registry.model.reporting.DomainTransactionRecord$TransactionReportField reportField;
|
||||||
|
int reportAmount;
|
||||||
java.lang.String tld;
|
java.lang.String tld;
|
||||||
java.util.Set<google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount> transactionFieldAmounts;
|
|
||||||
org.joda.time.DateTime reportingTime;
|
org.joda.time.DateTime reportingTime;
|
||||||
}
|
}
|
||||||
class google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount {
|
enum google.registry.model.reporting.DomainTransactionRecord$TransactionReportField {
|
||||||
google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount$TransactionReportField reportField;
|
|
||||||
int reportAmount;
|
|
||||||
}
|
|
||||||
enum google.registry.model.reporting.DomainTransactionRecord$TransactionFieldAmount$TransactionReportField {
|
|
||||||
DELETED_DOMAINS_GRACE;
|
DELETED_DOMAINS_GRACE;
|
||||||
DELETED_DOMAINS_NOGRACE;
|
DELETED_DOMAINS_NOGRACE;
|
||||||
NET_ADDS_10_YR;
|
NET_ADDS_10_YR;
|
||||||
|
@ -826,12 +823,12 @@ class google.registry.model.reporting.HistoryEntry {
|
||||||
byte[] xmlBytes;
|
byte[] xmlBytes;
|
||||||
google.registry.model.domain.Period period;
|
google.registry.model.domain.Period period;
|
||||||
google.registry.model.eppcommon.Trid trid;
|
google.registry.model.eppcommon.Trid trid;
|
||||||
google.registry.model.reporting.DomainTransactionRecord domainTransactionRecord;
|
|
||||||
google.registry.model.reporting.HistoryEntry$Type type;
|
google.registry.model.reporting.HistoryEntry$Type type;
|
||||||
java.lang.Boolean requestedByRegistrar;
|
java.lang.Boolean requestedByRegistrar;
|
||||||
java.lang.String clientId;
|
java.lang.String clientId;
|
||||||
java.lang.String otherClientId;
|
java.lang.String otherClientId;
|
||||||
java.lang.String reason;
|
java.lang.String reason;
|
||||||
|
java.util.Set<google.registry.model.reporting.DomainTransactionRecord> domainTransactionRecords;
|
||||||
org.joda.time.DateTime modificationTime;
|
org.joda.time.DateTime modificationTime;
|
||||||
}
|
}
|
||||||
enum google.registry.model.reporting.HistoryEntry$Type {
|
enum google.registry.model.reporting.HistoryEntry$Type {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue