Add data model entities for .app discounting

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=121580499
This commit is contained in:
mcilwain 2016-05-05 08:19:28 -07:00 committed by Justine Tunney
parent b435e20cbe
commit 3ec6aebe44
8 changed files with 43 additions and 904 deletions

View file

@ -139,8 +139,23 @@ public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedT
public static <V, T extends TimedTransition<V>> TimedTransitionProperty<V, T> forMapify(
ImmutableSortedMap<DateTime, V> valueMap,
Class<T> timedTransitionSubclass) {
return new TimedTransitionProperty<>(new TreeMap<>(
makeTransitionMap(valueMap, timedTransitionSubclass)));
return new TimedTransitionProperty<>(
new TreeMap<>(makeTransitionMap(valueMap, timedTransitionSubclass)));
}
/**
* Returns a new mutable {@code TimedTransitionProperty} representing the given value being set at
* start of time, constructed using the given {@code TimedTransition} subclass.
*
* <p>
* This method should only be used for initializing fields that are declared with the @Mapify
* annotation. The map for those fields must be mutable so that Objectify can load values from the
* datastore into the map, but clients should still never mutate the field's map directly.
*/
public static <V, T extends TimedTransition<V>> TimedTransitionProperty<V, T> forMapify(
V valueAtStartOfTime, Class<T> timedTransitionSubclass) {
return forMapify(
ImmutableSortedMap.of(START_OF_TIME, valueAtStartOfTime), timedTransitionSubclass);
}
/** The backing map of DateTime to TimedTransition subclass used to store the transitions. */

View file

@ -24,7 +24,6 @@ import static google.registry.model.ofy.Ofy.RECOMMENDED_MEMCACHE_EXPIRATION;
import static google.registry.model.registry.label.PremiumList.getPremiumPrice;
import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy;
import static google.registry.util.DateTimeUtils.END_OF_TIME;
import static google.registry.util.DateTimeUtils.START_OF_TIME;
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.joda.money.CurrencyUnit.USD;
@ -254,14 +253,12 @@ public class Registry extends ImmutableObject implements Buildable {
TldType tldType = TldType.REAL;
/**
* A property that transitions to different TldStates at different times. Stored as a list
* of TldStateTransition embedded objects using the @Mapify annotation.
* A property that transitions to different TldStates at different times. Stored as a list of
* TldStateTransition embedded objects using the @Mapify annotation.
*/
@Mapify(TimedTransitionProperty.TimeMapper.class)
TimedTransitionProperty<TldState, TldStateTransition> tldStateTransitions =
TimedTransitionProperty.forMapify(
ImmutableSortedMap.of(START_OF_TIME, DEFAULT_TLD_STATE),
TldStateTransition.class);
TimedTransitionProperty.forMapify(DEFAULT_TLD_STATE, TldStateTransition.class);
/** An automatically managed creation timestamp. */
CreateAutoTimestamp creationTime = CreateAutoTimestamp.create(null);
@ -326,7 +323,7 @@ public class Registry extends ImmutableObject implements Buildable {
Money serverStatusChangeBillingCost = DEFAULT_SERVER_STATUS_CHANGE_BILLING_COST;
/**
* A property that transitions to different renew billing costs at different times. Stored as a
* A property that transitions to different renew billing costs at different times. Stored as a
* list of BillingCostTransition embedded objects using the @Mapify annotation.
* <p>
* A given value of this property represents the per-year billing cost for renewing a domain name.
@ -335,9 +332,7 @@ public class Registry extends ImmutableObject implements Buildable {
*/
@Mapify(TimedTransitionProperty.TimeMapper.class)
TimedTransitionProperty<Money, BillingCostTransition> renewBillingCostTransitions =
TimedTransitionProperty.forMapify(
ImmutableSortedMap.of(START_OF_TIME, DEFAULT_RENEW_BILLING_COST),
BillingCostTransition.class);
TimedTransitionProperty.forMapify(DEFAULT_RENEW_BILLING_COST, BillingCostTransition.class);
String lordnUsername;

View file

@ -33,6 +33,7 @@ java_library(
"//third_party/java/junit",
"//third_party/java/mockito",
"//third_party/java/objectify:objectify-v4_1",
"//third_party/java/re2j",
"//third_party/java/servlet/servlet_api",
"//third_party/java/truth",
"//java/google/registry/bigquery",

View file

@ -19,10 +19,13 @@ import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.Resources;
import com.google.re2j.Pattern;
import com.googlecode.objectify.annotation.Entity;
@ -35,6 +38,8 @@ import org.junit.runners.JUnit4;
import java.net.URL;
import java.util.List;
import javax.annotation.Nullable;
/** Unit tests for {@link ExportConstants}. */
@RunWith(JUnit4.class)
public class ExportConstantsTest {
@ -56,8 +61,16 @@ public class ExportConstantsTest {
public void testBackupKinds_matchGoldenBackupKindsFile() throws Exception {
URL goldenBackupKindsResource =
getResource(ExportConstantsTest.class, GOLDEN_BACKUP_KINDS_FILENAME);
List<String> goldenKinds = Splitter.on('\n').splitToList(
Resources.toString(goldenBackupKindsResource, UTF_8).trim());
final Pattern stripComments = Pattern.compile("\\s*#.*$");
List<String> goldenKinds = FluentIterable
.from(Splitter.on('\n').split(
Resources.toString(goldenBackupKindsResource, UTF_8).trim()))
.transform(
new Function<String, String>() {
@Override @Nullable public String apply(@Nullable String line) {
return stripComments.matcher(line).replaceFirst("");
}})
.toList();
ImmutableSet<String> actualKinds = ExportConstants.getBackupKinds();
String updateInstructions = String.format(
UPDATE_INSTRUCTIONS_TEMPLATE,

View file

@ -1,3 +1,4 @@
Cancellation
ContactResource
DomainApplicationIndex

View file

@ -17,7 +17,6 @@ java_library(
"**/*.java",
]),
resources = [
"schema.txt",
] + glob(["**/testdata/*.xml"]),
deps = [
"//java/com/google/common/annotations",

View file

@ -15,6 +15,7 @@
package google.registry.model.common;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.common.TimedTransitionProperty.forMapify;
import static google.registry.util.DateTimeUtils.END_OF_TIME;
import static google.registry.util.DateTimeUtils.START_OF_TIME;
import static org.joda.time.DateTimeZone.UTC;
@ -109,8 +110,7 @@ public class TimedTransitionPropertyTest {
public void testSuccess_simulatedLoad() throws Exception {
// Just for testing, don't extract transitions from a TimedTransitionProperty in real code.
Set<Map.Entry<DateTime, StringTimedTransition>> transitions = timedString.entrySet();
timedString = TimedTransitionProperty.forMapify(
ImmutableSortedMap.of(START_OF_TIME, "0"), StringTimedTransition.class);
timedString = forMapify("0", StringTimedTransition.class);
// Simulate a load from datastore by clearing and then re-inserting the original transitions.
timedString.clear();
for (Map.Entry<DateTime, StringTimedTransition> transition : transitions) {
@ -152,8 +152,7 @@ public class TimedTransitionPropertyTest {
@Test
public void testFailure_noValuesAfterSimulatedEmptyLoad() throws Exception {
thrown.expect(IllegalStateException.class);
timedString = TimedTransitionProperty.forMapify(
ImmutableSortedMap.of(START_OF_TIME, "0"), StringTimedTransition.class);
timedString = forMapify("0", StringTimedTransition.class);
// Simulate a load from datastore by clearing, but don't insert any transitions.
timedString.clear();
timedString.checkValidity();
@ -164,8 +163,7 @@ public class TimedTransitionPropertyTest {
thrown.expect(IllegalStateException.class);
// Just for testing, don't extract transitions from a TimedTransitionProperty in real code.
StringTimedTransition transition1 = timedString.get(DATE_1);
timedString = TimedTransitionProperty.forMapify(
ImmutableSortedMap.of(START_OF_TIME, "0"), StringTimedTransition.class);
timedString = forMapify("0", StringTimedTransition.class);
// Simulate a load from datastore by clearing and inserting transitions, but deliberately
// omit a transition corresponding to START_OF_TIME.
timedString.clear();

View file

@ -1,883 +0,0 @@
enum com.google.common.collect.BoundType {
CLOSED;
OPEN;
}
class google.registry.model.CreateAutoTimestamp {
org.joda.time.DateTime timestamp;
}
class google.registry.model.UpdateAutoTimestamp {
org.joda.time.DateTime timestamp;
}
class google.registry.model.billing.BillingEvent$Cancellation {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$OneTime> refOneTime;
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$Recurring> refRecurring;
google.registry.model.billing.BillingEvent$Reason reason;
java.lang.String clientId;
java.lang.String targetId;
java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
org.joda.time.DateTime billingTime;
org.joda.time.DateTime eventTime;
}
enum google.registry.model.billing.BillingEvent$Flag {
ALLOCATION;
ANCHOR_TENANT;
AUTO_RENEW;
LANDRUSH;
SUNRISE;
SYNTHETIC;
}
class google.registry.model.billing.BillingEvent$Modification {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$OneTime> eventRef;
google.registry.model.billing.BillingEvent$Reason reason;
java.lang.String clientId;
java.lang.String description;
java.lang.String targetId;
java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
org.joda.money.Money cost;
org.joda.time.DateTime eventTime;
}
class google.registry.model.billing.BillingEvent$OneTime {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
google.registry.model.billing.BillingEvent$Reason reason;
java.lang.Integer periodYears;
java.lang.String clientId;
java.lang.String targetId;
java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
org.joda.money.Money cost;
org.joda.time.DateTime billingTime;
org.joda.time.DateTime eventTime;
}
enum google.registry.model.billing.BillingEvent$Reason {
AUTO_RENEW;
CREATE;
ERROR;
RENEW;
RESTORE;
SERVER_STATUS;
TRANSFER;
}
class google.registry.model.billing.BillingEvent$Recurring {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
google.registry.model.billing.BillingEvent$Reason reason;
google.registry.model.common.TimeOfYear recurrenceTimeOfYear;
java.lang.String clientId;
java.lang.String targetId;
java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
org.joda.time.DateTime eventTime;
org.joda.time.DateTime recurrenceEndTime;
}
class google.registry.model.billing.RegistrarBillingEntry {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.registrar.Registrar> parent;
java.lang.String description;
java.lang.String transactionId;
org.joda.money.CurrencyUnit currency;
org.joda.money.Money amount;
org.joda.money.Money balance;
org.joda.time.DateTime created;
}
class google.registry.model.billing.RegistrarCredit {
@Id long id;
@Parent com.googlecode.objectify.Ref<google.registry.model.registrar.Registrar> parent;
google.registry.model.billing.RegistrarCredit$CreditType type;
java.lang.String description;
java.lang.String tld;
org.joda.money.CurrencyUnit currency;
org.joda.time.DateTime creationTime;
}
enum google.registry.model.billing.RegistrarCredit$CreditType {
AUCTION;
PROMOTION;
}
class google.registry.model.billing.RegistrarCreditBalance {
@Id long id;
@Parent com.googlecode.objectify.Ref<google.registry.model.billing.RegistrarCredit> parent;
org.joda.money.Money amount;
org.joda.time.DateTime effectiveTime;
org.joda.time.DateTime writtenTime;
}
class google.registry.model.common.EntityGroupRoot {
@Id java.lang.String id;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
}
class google.registry.model.common.GaeUserIdConverter {
@Id long id;
com.google.appengine.api.users.User user;
}
class google.registry.model.common.PersistedRangeLong {
com.google.common.collect.BoundType lowerBoundType;
com.google.common.collect.BoundType upperBoundType;
java.lang.Long lowerBound;
java.lang.Long upperBound;
}
class google.registry.model.common.TimeOfYear {
java.lang.String timeString;
}
class google.registry.model.contact.ContactAddress {
java.lang.String city;
java.lang.String countryCode;
java.lang.String state;
java.lang.String zip;
java.util.List<java.lang.String> street;
}
class google.registry.model.contact.ContactAuthInfo {
google.registry.model.eppcommon.AuthInfo$PasswordAuth pw;
}
class google.registry.model.contact.ContactPhoneNumber {
java.lang.String extension;
java.lang.String phoneNumber;
}
class google.registry.model.contact.ContactResource {
@Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Ref<google.registry.model.ofy.CommitLogManifest>> revisions;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
google.registry.model.contact.ContactAuthInfo authInfo;
google.registry.model.contact.ContactPhoneNumber fax;
google.registry.model.contact.ContactPhoneNumber voice;
google.registry.model.contact.Disclose disclose;
google.registry.model.contact.PostalInfo internationalizedPostalInfo;
google.registry.model.contact.PostalInfo localizedPostalInfo;
google.registry.model.transfer.TransferData transferData;
java.lang.String contactId;
java.lang.String creationClientId;
java.lang.String currentSponsorClientId;
java.lang.String email;
java.lang.String lastEppUpdateClientId;
java.util.Set<google.registry.model.eppcommon.StatusValue> status;
org.joda.time.DateTime deletionTime;
org.joda.time.DateTime lastEppUpdateTime;
org.joda.time.DateTime lastTransferTime;
}
class google.registry.model.contact.Disclose {
google.registry.model.eppcommon.PresenceMarker email;
google.registry.model.eppcommon.PresenceMarker fax;
google.registry.model.eppcommon.PresenceMarker voice;
java.lang.Boolean flag;
java.util.List<google.registry.model.contact.Disclose$PostalInfoChoice> addr;
java.util.List<google.registry.model.contact.Disclose$PostalInfoChoice> name;
java.util.List<google.registry.model.contact.Disclose$PostalInfoChoice> org;
}
class google.registry.model.contact.Disclose$PostalInfoChoice {
google.registry.model.contact.PostalInfo$Type type;
}
class google.registry.model.contact.PostalInfo {
google.registry.model.contact.ContactAddress address;
google.registry.model.contact.PostalInfo$Type type;
java.lang.String name;
java.lang.String org;
}
enum google.registry.model.contact.PostalInfo$Type {
INTERNATIONALIZED;
LOCALIZED;
}
class google.registry.model.domain.DesignatedContact {
google.registry.model.domain.DesignatedContact$Type type;
google.registry.model.domain.ReferenceUnion<google.registry.model.contact.ContactResource> contactId;
}
enum google.registry.model.domain.DesignatedContact$Type {
ADMIN;
BILLING;
REGISTRANT;
TECH;
}
class google.registry.model.domain.DomainApplication {
@Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Ref<google.registry.model.ofy.CommitLogManifest>> revisions;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
google.registry.model.domain.DomainAuthInfo authInfo;
google.registry.model.domain.launch.ApplicationStatus applicationStatus;
google.registry.model.domain.launch.LaunchNotice launchNotice;
google.registry.model.domain.launch.LaunchPhase phase;
google.registry.model.eppcommon.Trid creationTrid;
google.registry.model.transfer.TransferData transferData;
java.lang.String creationClientId;
java.lang.String currentSponsorClientId;
java.lang.String fullyQualifiedDomainName;
java.lang.String idnTableName;
java.lang.String lastEppUpdateClientId;
java.lang.String tld;
java.util.List<google.registry.model.smd.EncodedSignedMark> encodedSignedMarks;
java.util.Set<google.registry.model.domain.DesignatedContact> allContacts;
java.util.Set<google.registry.model.domain.ReferenceUnion<google.registry.model.host.HostResource>> nameservers;
java.util.Set<google.registry.model.domain.secdns.DelegationSignerData> dsData;
java.util.Set<google.registry.model.eppcommon.StatusValue> status;
org.joda.money.Money auctionPrice;
org.joda.time.DateTime deletionTime;
org.joda.time.DateTime lastEppUpdateTime;
org.joda.time.DateTime lastTransferTime;
}
class google.registry.model.domain.DomainAuthInfo {
google.registry.model.eppcommon.AuthInfo$PasswordAuth pw;
}
class google.registry.model.domain.DomainBase {
@Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Ref<google.registry.model.ofy.CommitLogManifest>> revisions;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
google.registry.model.domain.DomainAuthInfo authInfo;
google.registry.model.domain.launch.LaunchNotice launchNotice;
google.registry.model.transfer.TransferData transferData;
java.lang.String creationClientId;
java.lang.String currentSponsorClientId;
java.lang.String fullyQualifiedDomainName;
java.lang.String idnTableName;
java.lang.String lastEppUpdateClientId;
java.lang.String tld;
java.util.Set<google.registry.model.domain.DesignatedContact> allContacts;
java.util.Set<google.registry.model.domain.ReferenceUnion<google.registry.model.host.HostResource>> nameservers;
java.util.Set<google.registry.model.domain.secdns.DelegationSignerData> dsData;
java.util.Set<google.registry.model.eppcommon.StatusValue> status;
org.joda.time.DateTime deletionTime;
org.joda.time.DateTime lastEppUpdateTime;
org.joda.time.DateTime lastTransferTime;
}
class google.registry.model.domain.DomainResource {
@Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Ref<google.registry.model.ofy.CommitLogManifest>> revisions;
com.googlecode.objectify.Key<google.registry.model.poll.PollMessage$OneTime> deletePollMessage;
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$Recurring> autorenewBillingEvent;
com.googlecode.objectify.Ref<google.registry.model.domain.DomainApplication> application;
com.googlecode.objectify.Ref<google.registry.model.poll.PollMessage$Autorenew> autorenewPollMessage;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
google.registry.model.domain.DomainAuthInfo authInfo;
google.registry.model.domain.launch.LaunchNotice launchNotice;
google.registry.model.transfer.TransferData transferData;
java.lang.String creationClientId;
java.lang.String currentSponsorClientId;
java.lang.String fullyQualifiedDomainName;
java.lang.String idnTableName;
java.lang.String lastEppUpdateClientId;
java.lang.String smdId;
java.lang.String tld;
java.util.Set<google.registry.model.domain.DesignatedContact> allContacts;
java.util.Set<google.registry.model.domain.GracePeriod> gracePeriods;
java.util.Set<google.registry.model.domain.ReferenceUnion<google.registry.model.host.HostResource>> nameservers;
java.util.Set<google.registry.model.domain.secdns.DelegationSignerData> dsData;
java.util.Set<google.registry.model.eppcommon.StatusValue> status;
java.util.Set<java.lang.String> subordinateHosts;
org.joda.time.DateTime applicationTime;
org.joda.time.DateTime deletionTime;
org.joda.time.DateTime lastEppUpdateTime;
org.joda.time.DateTime lastTransferTime;
org.joda.time.DateTime registrationExpirationTime;
}
class google.registry.model.domain.GracePeriod {
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$OneTime> billingEventOneTime;
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$Recurring> billingEventRecurring;
google.registry.model.domain.rgp.GracePeriodStatus type;
java.lang.String clientId;
org.joda.time.DateTime expirationTime;
}
class google.registry.model.domain.Period {
google.registry.model.domain.Period$Unit unit;
java.lang.Integer value;
}
enum google.registry.model.domain.Period$Unit {
MONTHS;
YEARS;
}
class google.registry.model.domain.ReferenceUnion {
com.googlecode.objectify.Ref<T> linked;
}
enum google.registry.model.domain.launch.ApplicationStatus {
ALLOCATED;
INVALID;
PENDING_ALLOCATION;
PENDING_VALIDATION;
REJECTED;
VALIDATED;
}
class google.registry.model.domain.launch.LaunchInfoResponseExtension {
google.registry.model.domain.launch.ApplicationStatus applicationStatus;
google.registry.model.domain.launch.LaunchPhase phase;
java.lang.String applicationId;
java.util.List<google.registry.model.mark.Mark> marks;
}
class google.registry.model.domain.launch.LaunchNotice {
google.registry.model.domain.launch.LaunchNotice$NoticeIdType noticeId;
org.joda.time.DateTime acceptedTime;
org.joda.time.DateTime expirationTime;
}
class google.registry.model.domain.launch.LaunchNotice$NoticeIdType {
java.lang.String tcnId;
java.lang.String validatorId;
}
class google.registry.model.domain.launch.LaunchPhase {
java.lang.String phase;
java.lang.String subphase;
}
enum google.registry.model.domain.rgp.GracePeriodStatus {
ADD;
AUTO_RENEW;
PENDING_DELETE;
PENDING_RESTORE;
REDEMPTION;
RENEW;
SUNRUSH_ADD;
TRANSFER;
}
class google.registry.model.domain.secdns.DelegationSignerData {
byte[] digest;
int algorithm;
int digestType;
int keyTag;
}
class google.registry.model.eppcommon.AuthInfo$PasswordAuth {
java.lang.String repoId;
java.lang.String value;
}
class google.registry.model.eppcommon.PresenceMarker {
boolean marked;
}
enum google.registry.model.eppcommon.StatusValue {
CLIENT_DELETE_PROHIBITED;
CLIENT_HOLD;
CLIENT_RENEW_PROHIBITED;
CLIENT_TRANSFER_PROHIBITED;
CLIENT_UPDATE_PROHIBITED;
INACTIVE;
LINKED;
OK;
PENDING_CREATE;
PENDING_DELETE;
PENDING_TRANSFER;
PENDING_UPDATE;
SERVER_DELETE_PROHIBITED;
SERVER_HOLD;
SERVER_RENEW_PROHIBITED;
SERVER_TRANSFER_PROHIBITED;
SERVER_UPDATE_PROHIBITED;
}
class google.registry.model.eppcommon.Trid {
java.lang.String clientTransactionId;
java.lang.String serverTransactionId;
}
class google.registry.model.export.LogsExportCursor {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
java.util.List<java.lang.String> filesPendingImport;
java.util.Set<google.registry.model.common.PersistedRangeLong> exportedRanges;
}
class google.registry.model.host.HostResource {
@Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Ref<google.registry.model.ofy.CommitLogManifest>> revisions;
com.googlecode.objectify.Ref<google.registry.model.domain.DomainResource> superordinateDomain;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
google.registry.model.transfer.TransferData transferData;
java.lang.String creationClientId;
java.lang.String currentSponsorClientId;
java.lang.String fullyQualifiedHostName;
java.lang.String lastEppUpdateClientId;
java.util.Set<google.registry.model.eppcommon.StatusValue> status;
java.util.Set<java.net.InetAddress> inetAddresses;
org.joda.time.DateTime deletionTime;
org.joda.time.DateTime lastEppUpdateTime;
org.joda.time.DateTime lastSuperordinateChange;
org.joda.time.DateTime lastTransferTime;
}
class google.registry.model.index.DomainApplicationIndex {
@Id java.lang.String fullyQualifiedDomainName;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
java.util.Set<com.googlecode.objectify.Ref<google.registry.model.domain.DomainApplication>> references;
}
class google.registry.model.index.EppResourceIndex {
@Id java.lang.String id;
@Parent com.googlecode.objectify.Key<google.registry.model.index.EppResourceIndexBucket> bucket;
com.googlecode.objectify.Ref<? extends google.registry.model.EppResource> reference;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
java.lang.String kind;
}
class google.registry.model.index.EppResourceIndexBucket {
@Id long bucketId;
}
class google.registry.model.index.ForeignKeyIndex$ForeignKeyContactIndex {
@Id java.lang.String foreignKey;
com.googlecode.objectify.Ref<E> topReference;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
org.joda.time.DateTime deletionTime;
}
class google.registry.model.index.ForeignKeyIndex$ForeignKeyDomainIndex {
@Id java.lang.String foreignKey;
com.googlecode.objectify.Ref<E> topReference;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
org.joda.time.DateTime deletionTime;
}
class google.registry.model.index.ForeignKeyIndex$ForeignKeyHostIndex {
@Id java.lang.String foreignKey;
com.googlecode.objectify.Ref<E> topReference;
google.registry.model.UpdateAutoTimestamp updateTimestamp;
org.joda.time.DateTime deletionTime;
}
class google.registry.model.mark.CourtMark {
java.lang.String countryCode;
java.lang.String courtName;
java.lang.String goodsAndServices;
java.lang.String id;
java.lang.String markName;
java.lang.String referenceNumber;
java.util.List<google.registry.model.mark.MarkContact> contacts;
java.util.List<google.registry.model.mark.MarkHolder> markHolders;
java.util.List<java.lang.String> labels;
java.util.List<java.lang.String> regions;
org.joda.time.DateTime protectionDate;
}
class google.registry.model.mark.Mark {
java.util.List<google.registry.model.mark.CourtMark> courtMarks;
java.util.List<google.registry.model.mark.Trademark> trademarks;
java.util.List<google.registry.model.mark.TreatyOrStatuteMark> treatyOrStatuteMarks;
}
class google.registry.model.mark.MarkAddress {
java.lang.String city;
java.lang.String countryCode;
java.lang.String state;
java.lang.String zip;
java.util.List<java.lang.String> street;
}
class google.registry.model.mark.MarkContact {
google.registry.model.mark.MarkAddress address;
google.registry.model.mark.MarkContact$ContactType type;
google.registry.model.mark.MarkPhoneNumber fax;
google.registry.model.mark.MarkPhoneNumber voice;
java.lang.String email;
java.lang.String name;
java.lang.String organization;
}
enum google.registry.model.mark.MarkContact$ContactType {
AGENT;
OWNER;
THIRD_PARTY;
}
class google.registry.model.mark.MarkHolder {
google.registry.model.mark.MarkAddress address;
google.registry.model.mark.MarkHolder$EntitlementType entitlement;
google.registry.model.mark.MarkPhoneNumber fax;
google.registry.model.mark.MarkPhoneNumber voice;
java.lang.String email;
java.lang.String name;
java.lang.String organization;
}
enum google.registry.model.mark.MarkHolder$EntitlementType {
ASSIGNEE;
LICENSEE;
OWNER;
}
class google.registry.model.mark.MarkPhoneNumber {
java.lang.String extension;
java.lang.String phoneNumber;
}
class google.registry.model.mark.MarkProtection {
java.lang.String countryCode;
java.lang.String region;
java.util.List<java.lang.String> rulingCountryCodes;
}
class google.registry.model.mark.Trademark {
java.lang.String applicationId;
java.lang.String goodsAndServices;
java.lang.String id;
java.lang.String jurisdiction;
java.lang.String markName;
java.lang.String registrationNumber;
java.util.List<google.registry.model.mark.MarkContact> contacts;
java.util.List<google.registry.model.mark.MarkHolder> markHolders;
java.util.List<java.lang.Long> markClasses;
java.util.List<java.lang.String> labels;
org.joda.time.DateTime applicationDate;
org.joda.time.DateTime expirationDate;
org.joda.time.DateTime registrationDate;
}
class google.registry.model.mark.TreatyOrStatuteMark {
java.lang.String goodsAndServices;
java.lang.String id;
java.lang.String markName;
java.lang.String referenceNumber;
java.lang.String title;
java.util.List<google.registry.model.mark.MarkContact> contacts;
java.util.List<google.registry.model.mark.MarkHolder> markHolders;
java.util.List<google.registry.model.mark.MarkProtection> markProtections;
java.util.List<java.lang.String> labels;
org.joda.time.DateTime executionDate;
org.joda.time.DateTime protectionDate;
}
class google.registry.model.ofy.CommitLogBucket {
@Id long bucketNum;
org.joda.time.DateTime lastWrittenTime;
}
class google.registry.model.ofy.CommitLogCheckpoint {
@Id long checkpointTime;
@Parent com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogCheckpointRoot> parent;
java.util.List<org.joda.time.DateTime> bucketTimestamps;
}
class google.registry.model.ofy.CommitLogCheckpointRoot {
@Id long id;
org.joda.time.DateTime lastWrittenTime;
}
class google.registry.model.ofy.CommitLogManifest {
@Id long commitTime;
@Parent com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogBucket> parent;
java.util.Set<com.googlecode.objectify.Key<?>> deletions;
}
class google.registry.model.ofy.CommitLogMutation {
@Id java.lang.String entityKey;
@Parent com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest> parent;
byte[] entityProtoBytes;
}
class google.registry.model.poll.PendingActionNotificationResponse$ContactPendingActionNotificationResponse {
google.registry.model.eppcommon.Trid trid;
google.registry.model.poll.PendingActionNotificationResponse$NameOrId nameOrId;
org.joda.time.DateTime processedDate;
}
class google.registry.model.poll.PendingActionNotificationResponse$DomainPendingActionNotificationResponse {
google.registry.model.eppcommon.Trid trid;
google.registry.model.poll.PendingActionNotificationResponse$NameOrId nameOrId;
org.joda.time.DateTime processedDate;
}
class google.registry.model.poll.PendingActionNotificationResponse$NameOrId {
boolean actionResult;
java.lang.String value;
}
class google.registry.model.poll.PollMessage {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
java.lang.String clientId;
java.lang.String msg;
org.joda.time.DateTime eventTime;
}
class google.registry.model.poll.PollMessage$Autorenew {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
java.lang.String clientId;
java.lang.String msg;
java.lang.String targetId;
org.joda.time.DateTime autorenewEndTime;
org.joda.time.DateTime eventTime;
}
class google.registry.model.poll.PollMessage$OneTime {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
google.registry.model.domain.launch.LaunchInfoResponseExtension launchInfoResponseExtension;
java.lang.String clientId;
java.lang.String msg;
java.util.List<google.registry.model.poll.PendingActionNotificationResponse$ContactPendingActionNotificationResponse> contactPendingActionNotificationResponses;
java.util.List<google.registry.model.poll.PendingActionNotificationResponse$DomainPendingActionNotificationResponse> domainPendingActionNotificationResponses;
java.util.List<google.registry.model.transfer.TransferResponse$ContactTransferResponse> contactTransferResponses;
java.util.List<google.registry.model.transfer.TransferResponse$DomainTransferResponse> domainTransferResponses;
org.joda.time.DateTime eventTime;
}
class google.registry.model.rde.RdeRevision {
@Id java.lang.String id;
int revision;
}
class google.registry.model.registrar.Registrar {
@Id java.lang.String clientIdentifier;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
boolean blockPremiumNames;
boolean contactsRequireSyncing;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.UpdateAutoTimestamp lastUpdateTime;
google.registry.model.registrar.Registrar$BillingMethod billingMethod;
google.registry.model.registrar.Registrar$State state;
google.registry.model.registrar.Registrar$Type type;
google.registry.model.registrar.RegistrarAddress internationalizedAddress;
google.registry.model.registrar.RegistrarAddress localizedAddress;
java.lang.Long billingIdentifier;
java.lang.Long ianaIdentifier;
java.lang.String clientCertificate;
java.lang.String clientCertificateHash;
java.lang.String driveFolderId;
java.lang.String emailAddress;
java.lang.String failoverClientCertificate;
java.lang.String failoverClientCertificateHash;
java.lang.String faxNumber;
java.lang.String icannReferralEmail;
java.lang.String passwordHash;
java.lang.String phoneNumber;
java.lang.String phonePasscode;
java.lang.String referralUrl;
java.lang.String registrarName;
java.lang.String salt;
java.lang.String url;
java.lang.String whoisServer;
java.util.List<google.registry.util.CidrAddressBlock> ipAddressWhitelist;
java.util.Set<java.lang.String> allowedTlds;
org.joda.time.DateTime lastCertificateUpdateTime;
}
enum google.registry.model.registrar.Registrar$BillingMethod {
BRAINTREE;
EXTERNAL;
}
enum google.registry.model.registrar.Registrar$State {
ACTIVE;
PENDING;
SUSPENDED;
}
enum google.registry.model.registrar.Registrar$Type {
EXTERNAL_MONITORING;
INTERNAL;
MONITORING;
OTE;
PDT;
REAL;
TEST;
}
class google.registry.model.registrar.RegistrarAddress {
java.lang.String city;
java.lang.String countryCode;
java.lang.String state;
java.lang.String zip;
java.util.List<java.lang.String> street;
}
class google.registry.model.registrar.RegistrarContact {
@Id java.lang.String emailAddress;
@Parent com.googlecode.objectify.Key<google.registry.model.registrar.Registrar> parent;
boolean visibleInWhoisAsAdmin;
boolean visibleInWhoisAsTech;
java.lang.String faxNumber;
java.lang.String gaeUserId;
java.lang.String name;
java.lang.String phoneNumber;
java.util.Set<google.registry.model.registrar.RegistrarContact$Type> types;
}
enum google.registry.model.registrar.RegistrarContact$Type {
ABUSE;
ADMIN;
BILLING;
LEGAL;
MARKETING;
TECH;
WHOIS;
}
class google.registry.model.registry.Registry {
@Id java.lang.String tldStrId;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
boolean dnsPaused;
boolean escrowEnabled;
boolean premiumPriceAckRequired;
com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList> premiumList;
google.registry.model.CreateAutoTimestamp creationTime;
google.registry.model.common.TimedTransitionProperty<google.registry.model.registry.Registry$TldState, google.registry.model.registry.Registry$TldStateTransition> tldStateTransitions;
google.registry.model.common.TimedTransitionProperty<org.joda.money.Money, google.registry.model.registry.Registry$BillingCostTransition> renewBillingCostTransitions;
google.registry.model.registry.Registry$TldType tldType;
java.lang.String driveFolderId;
java.lang.String lordnUsername;
java.lang.String roidSuffix;
java.lang.String tldStr;
java.lang.String tldUnicode;
java.util.Set<com.googlecode.objectify.Key<google.registry.model.registry.label.ReservedList>> reservedLists;
java.util.Set<java.lang.String> allowedFullyQualifiedHostNames;
java.util.Set<java.lang.String> allowedRegistrantContactIds;
org.joda.money.CurrencyUnit currency;
org.joda.money.Money createBillingCost;
org.joda.money.Money restoreBillingCost;
org.joda.money.Money serverStatusChangeBillingCost;
org.joda.time.DateTime claimsPeriodEnd;
org.joda.time.Duration addGracePeriodLength;
org.joda.time.Duration anchorTenantAddGracePeriodLength;
org.joda.time.Duration autoRenewGracePeriodLength;
org.joda.time.Duration automaticTransferLength;
org.joda.time.Duration pendingDeleteLength;
org.joda.time.Duration redemptionGracePeriodLength;
org.joda.time.Duration renewGracePeriodLength;
org.joda.time.Duration sunrushAddGracePeriodLength;
org.joda.time.Duration transferGracePeriodLength;
}
class google.registry.model.registry.Registry$BillingCostTransition {
org.joda.money.Money billingCost;
org.joda.time.DateTime transitionTime;
}
enum google.registry.model.registry.Registry$TldState {
GENERAL_AVAILABILITY;
LANDRUSH;
PDT;
PREDELEGATION;
QUIET_PERIOD;
SUNRISE;
SUNRUSH;
}
class google.registry.model.registry.Registry$TldStateTransition {
google.registry.model.registry.Registry$TldState tldState;
org.joda.time.DateTime transitionTime;
}
enum google.registry.model.registry.Registry$TldType {
REAL;
TEST;
}
class google.registry.model.registry.RegistryCursor {
@Id java.lang.String cursorType;
@Parent com.googlecode.objectify.Key<google.registry.model.registry.Registry> registry;
org.joda.time.DateTime date;
}
class google.registry.model.registry.label.PremiumList {
@Id java.lang.String name;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList$PremiumListRevision> revisionKey;
java.lang.String description;
org.joda.time.DateTime creationTime;
org.joda.time.DateTime lastUpdateTime;
}
class google.registry.model.registry.label.PremiumList$PremiumListEntry {
@Id java.lang.String label;
@Parent com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList$PremiumListRevision> parent;
java.lang.String comment;
org.joda.money.Money price;
}
class google.registry.model.registry.label.PremiumList$PremiumListRevision {
@Id long revisionId;
@Parent com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList> parent;
}
enum google.registry.model.registry.label.ReservationType {
ALLOWED_IN_SUNRISE;
FULLY_BLOCKED;
MISTAKEN_PREMIUM;
NAME_COLLISION;
RESERVED_FOR_ANCHOR_TENANT;
UNRESERVED;
}
class google.registry.model.registry.label.ReservedList {
@Id java.lang.String name;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
boolean shouldPublish;
java.lang.String description;
java.util.Map<java.lang.String, google.registry.model.registry.label.ReservedList$ReservedListEntry> reservedListMap;
org.joda.time.DateTime creationTime;
org.joda.time.DateTime lastUpdateTime;
}
class google.registry.model.registry.label.ReservedList$ReservedListEntry {
@Id java.lang.String label;
google.registry.model.registry.label.ReservationType reservationType;
java.lang.String authCode;
java.lang.String comment;
}
class google.registry.model.reporting.HistoryEntry {
@Id long id;
@Parent com.googlecode.objectify.Ref<? extends google.registry.model.EppResource> parent;
boolean bySuperuser;
byte[] xmlBytes;
google.registry.model.domain.Period period;
google.registry.model.eppcommon.Trid trid;
google.registry.model.reporting.HistoryEntry$Type type;
java.lang.Boolean requestedByRegistrar;
java.lang.String clientId;
java.lang.String reason;
org.joda.time.DateTime modificationTime;
}
enum google.registry.model.reporting.HistoryEntry$Type {
CONTACT_CREATE;
CONTACT_DELETE;
CONTACT_DELETE_FAILURE;
CONTACT_PENDING_DELETE;
CONTACT_TRANSFER_APPROVE;
CONTACT_TRANSFER_CANCEL;
CONTACT_TRANSFER_REJECT;
CONTACT_TRANSFER_REQUEST;
CONTACT_UPDATE;
DOMAIN_ALLOCATE;
DOMAIN_APPLICATION_CREATE;
DOMAIN_APPLICATION_DELETE;
DOMAIN_APPLICATION_STATUS_UPDATE;
DOMAIN_APPLICATION_UPDATE;
DOMAIN_CREATE;
DOMAIN_DELETE;
DOMAIN_RENEW;
DOMAIN_RESTORE;
DOMAIN_TRANSFER_APPROVE;
DOMAIN_TRANSFER_CANCEL;
DOMAIN_TRANSFER_REJECT;
DOMAIN_TRANSFER_REQUEST;
DOMAIN_UPDATE;
HOST_CREATE;
HOST_DELETE;
HOST_DELETE_FAILURE;
HOST_PENDING_DELETE;
HOST_UPDATE;
SYNTHETIC;
}
class google.registry.model.server.Lock {
@Id java.lang.String lockId;
java.util.LinkedHashSet<java.lang.String> queue;
org.joda.time.DateTime expirationTime;
}
class google.registry.model.server.ServerSecret {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
long leastSignificant;
long mostSignificant;
}
class google.registry.model.smd.EncodedSignedMark {
com.google.appengine.api.datastore.Text encodedData;
java.lang.String encoding;
}
class google.registry.model.smd.SignedMarkRevocationList {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
java.util.Map<java.lang.String, org.joda.time.DateTime> revokes;
org.joda.time.DateTime creationTime;
}
class google.registry.model.tmch.ClaimsListShard {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.tmch.ClaimsListShard$ClaimsListRevision> parent;
java.util.Map<java.lang.String, java.lang.String> labelsToKeys;
org.joda.time.DateTime creationTime;
}
class google.registry.model.tmch.ClaimsListShard$ClaimsListRevision {
@Id long versionId;
@Parent com.googlecode.objectify.Key<google.registry.model.tmch.ClaimsListShard$ClaimsListSingleton> parent;
}
class google.registry.model.tmch.ClaimsListShard$ClaimsListSingleton {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
com.googlecode.objectify.Key<google.registry.model.tmch.ClaimsListShard$ClaimsListRevision> activeRevision;
}
class google.registry.model.tmch.TmchCrl {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
java.lang.String crl;
org.joda.time.DateTime updated;
}
class google.registry.model.transfer.TransferData {
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$OneTime> serverApproveBillingEvent;
com.googlecode.objectify.Ref<google.registry.model.billing.BillingEvent$Recurring> serverApproveAutorenewEvent;
com.googlecode.objectify.Ref<google.registry.model.poll.PollMessage$Autorenew> serverApproveAutorenewPollMessage;
google.registry.model.eppcommon.Trid transferRequestTrid;
google.registry.model.transfer.TransferStatus transferStatus;
java.lang.Integer extendedRegistrationYears;
java.lang.String gainingClientId;
java.lang.String losingClientId;
java.util.Set<com.googlecode.objectify.Key<? extends google.registry.model.transfer.TransferData$TransferServerApproveEntity>> serverApproveEntities;
org.joda.time.DateTime pendingTransferExpirationTime;
org.joda.time.DateTime transferRequestTime;
}
class google.registry.model.transfer.TransferResponse$ContactTransferResponse {
google.registry.model.transfer.TransferStatus transferStatus;
java.lang.String contactId;
java.lang.String gainingClientId;
java.lang.String losingClientId;
org.joda.time.DateTime pendingTransferExpirationTime;
org.joda.time.DateTime transferRequestTime;
}
class google.registry.model.transfer.TransferResponse$DomainTransferResponse {
google.registry.model.transfer.TransferStatus transferStatus;
java.lang.String fullyQualifiedDomainName;
java.lang.String gainingClientId;
java.lang.String losingClientId;
org.joda.time.DateTime extendedRegistrationExpirationTime;
org.joda.time.DateTime pendingTransferExpirationTime;
org.joda.time.DateTime transferRequestTime;
}
enum google.registry.model.transfer.TransferStatus {
CLIENT_APPROVED;
CLIENT_CANCELLED;
CLIENT_REJECTED;
PENDING;
SERVER_APPROVED;
SERVER_CANCELLED;
}