diff --git a/java/google/registry/model/common/TimedTransitionProperty.java b/java/google/registry/model/common/TimedTransitionProperty.java index 72cdb40c9..578c66bf3 100644 --- a/java/google/registry/model/common/TimedTransitionProperty.java +++ b/java/google/registry/model/common/TimedTransitionProperty.java @@ -139,8 +139,23 @@ public class TimedTransitionProperty> TimedTransitionProperty forMapify( ImmutableSortedMap valueMap, Class 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. + * + *

+ * 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 > TimedTransitionProperty forMapify( + V valueAtStartOfTime, Class timedTransitionSubclass) { + return forMapify( + ImmutableSortedMap.of(START_OF_TIME, valueAtStartOfTime), timedTransitionSubclass); } /** The backing map of DateTime to TimedTransition subclass used to store the transitions. */ diff --git a/java/google/registry/model/registry/Registry.java b/java/google/registry/model/registry/Registry.java index 8fd7e7d09..1fc262c4a 100644 --- a/java/google/registry/model/registry/Registry.java +++ b/java/google/registry/model/registry/Registry.java @@ -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 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. *

* 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 renewBillingCostTransitions = - TimedTransitionProperty.forMapify( - ImmutableSortedMap.of(START_OF_TIME, DEFAULT_RENEW_BILLING_COST), - BillingCostTransition.class); + TimedTransitionProperty.forMapify(DEFAULT_RENEW_BILLING_COST, BillingCostTransition.class); String lordnUsername; diff --git a/javatests/google/registry/export/BUILD b/javatests/google/registry/export/BUILD index 8c56bf4c0..57578edd0 100644 --- a/javatests/google/registry/export/BUILD +++ b/javatests/google/registry/export/BUILD @@ -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", diff --git a/javatests/google/registry/export/ExportConstantsTest.java b/javatests/google/registry/export/ExportConstantsTest.java index f678ab8aa..7e84fad4b 100644 --- a/javatests/google/registry/export/ExportConstantsTest.java +++ b/javatests/google/registry/export/ExportConstantsTest.java @@ -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 goldenKinds = Splitter.on('\n').splitToList( - Resources.toString(goldenBackupKindsResource, UTF_8).trim()); + final Pattern stripComments = Pattern.compile("\\s*#.*$"); + List goldenKinds = FluentIterable + .from(Splitter.on('\n').split( + Resources.toString(goldenBackupKindsResource, UTF_8).trim())) + .transform( + new Function() { + @Override @Nullable public String apply(@Nullable String line) { + return stripComments.matcher(line).replaceFirst(""); + }}) + .toList(); ImmutableSet actualKinds = ExportConstants.getBackupKinds(); String updateInstructions = String.format( UPDATE_INSTRUCTIONS_TEMPLATE, diff --git a/javatests/google/registry/export/backup_kinds.txt b/javatests/google/registry/export/backup_kinds.txt index 6c04c6c2e..dc4dcc59a 100644 --- a/javatests/google/registry/export/backup_kinds.txt +++ b/javatests/google/registry/export/backup_kinds.txt @@ -1,3 +1,4 @@ + Cancellation ContactResource DomainApplicationIndex diff --git a/javatests/google/registry/model/BUILD b/javatests/google/registry/model/BUILD index 29b3fc1e4..031f4c56b 100644 --- a/javatests/google/registry/model/BUILD +++ b/javatests/google/registry/model/BUILD @@ -17,7 +17,6 @@ java_library( "**/*.java", ]), resources = [ - "schema.txt", ] + glob(["**/testdata/*.xml"]), deps = [ "//java/com/google/common/annotations", diff --git a/javatests/google/registry/model/common/TimedTransitionPropertyTest.java b/javatests/google/registry/model/common/TimedTransitionPropertyTest.java index 5ced9b81d..7cbb37c61 100644 --- a/javatests/google/registry/model/common/TimedTransitionPropertyTest.java +++ b/javatests/google/registry/model/common/TimedTransitionPropertyTest.java @@ -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> 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 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(); diff --git a/javatests/google/registry/model/schema.txt b/javatests/google/registry/model/schema.txt deleted file mode 100644 index 65c3b9a9c..000000000 --- a/javatests/google/registry/model/schema.txt +++ /dev/null @@ -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 parent; - com.googlecode.objectify.Ref refOneTime; - com.googlecode.objectify.Ref refRecurring; - google.registry.model.billing.BillingEvent$Reason reason; - java.lang.String clientId; - java.lang.String targetId; - java.util.Set 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 parent; - com.googlecode.objectify.Ref eventRef; - google.registry.model.billing.BillingEvent$Reason reason; - java.lang.String clientId; - java.lang.String description; - java.lang.String targetId; - java.util.Set 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 parent; - google.registry.model.billing.BillingEvent$Reason reason; - java.lang.Integer periodYears; - java.lang.String clientId; - java.lang.String targetId; - java.util.Set 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 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 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 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 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 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 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> 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 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 addr; - java.util.List name; - java.util.List 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 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> 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 encodedSignedMarks; - java.util.Set allContacts; - java.util.Set> nameservers; - java.util.Set dsData; - java.util.Set 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> 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 allContacts; - java.util.Set> nameservers; - java.util.Set dsData; - java.util.Set 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> revisions; - com.googlecode.objectify.Key deletePollMessage; - com.googlecode.objectify.Ref autorenewBillingEvent; - com.googlecode.objectify.Ref application; - com.googlecode.objectify.Ref 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 allContacts; - java.util.Set gracePeriods; - java.util.Set> nameservers; - java.util.Set dsData; - java.util.Set status; - java.util.Set 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 billingEventOneTime; - com.googlecode.objectify.Ref 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 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 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 parent; - java.util.List filesPendingImport; - java.util.Set exportedRanges; -} -class google.registry.model.host.HostResource { - @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; - com.googlecode.objectify.Ref 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 status; - java.util.Set 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> references; -} -class google.registry.model.index.EppResourceIndex { - @Id java.lang.String id; - @Parent com.googlecode.objectify.Key bucket; - com.googlecode.objectify.Ref 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 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 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 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 contacts; - java.util.List markHolders; - java.util.List labels; - java.util.List regions; - org.joda.time.DateTime protectionDate; -} -class google.registry.model.mark.Mark { - java.util.List courtMarks; - java.util.List trademarks; - java.util.List 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 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 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 contacts; - java.util.List markHolders; - java.util.List markClasses; - java.util.List 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 contacts; - java.util.List markHolders; - java.util.List markProtections; - java.util.List 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 parent; - java.util.List 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 parent; - java.util.Set> deletions; -} -class google.registry.model.ofy.CommitLogMutation { - @Id java.lang.String entityKey; - @Parent com.googlecode.objectify.Key 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 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 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 parent; - google.registry.model.domain.launch.LaunchInfoResponseExtension launchInfoResponseExtension; - java.lang.String clientId; - java.lang.String msg; - java.util.List contactPendingActionNotificationResponses; - java.util.List domainPendingActionNotificationResponses; - java.util.List contactTransferResponses; - java.util.List 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 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 ipAddressWhitelist; - java.util.Set 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 street; -} -class google.registry.model.registrar.RegistrarContact { - @Id java.lang.String emailAddress; - @Parent com.googlecode.objectify.Key parent; - boolean visibleInWhoisAsAdmin; - boolean visibleInWhoisAsTech; - java.lang.String faxNumber; - java.lang.String gaeUserId; - java.lang.String name; - java.lang.String phoneNumber; - java.util.Set 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 parent; - boolean dnsPaused; - boolean escrowEnabled; - boolean premiumPriceAckRequired; - com.googlecode.objectify.Key premiumList; - google.registry.model.CreateAutoTimestamp creationTime; - google.registry.model.common.TimedTransitionProperty tldStateTransitions; - google.registry.model.common.TimedTransitionProperty 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> reservedLists; - java.util.Set allowedFullyQualifiedHostNames; - java.util.Set 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 registry; - org.joda.time.DateTime date; -} -class google.registry.model.registry.label.PremiumList { - @Id java.lang.String name; - @Parent com.googlecode.objectify.Key parent; - com.googlecode.objectify.Key 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 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 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 parent; - boolean shouldPublish; - java.lang.String description; - java.util.Map 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 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 queue; - org.joda.time.DateTime expirationTime; -} -class google.registry.model.server.ServerSecret { - @Id long id; - @Parent com.googlecode.objectify.Key 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 parent; - java.util.Map revokes; - org.joda.time.DateTime creationTime; -} -class google.registry.model.tmch.ClaimsListShard { - @Id long id; - @Parent com.googlecode.objectify.Key parent; - java.util.Map labelsToKeys; - org.joda.time.DateTime creationTime; -} -class google.registry.model.tmch.ClaimsListShard$ClaimsListRevision { - @Id long versionId; - @Parent com.googlecode.objectify.Key parent; -} -class google.registry.model.tmch.ClaimsListShard$ClaimsListSingleton { - @Id long id; - @Parent com.googlecode.objectify.Key parent; - com.googlecode.objectify.Key activeRevision; -} -class google.registry.model.tmch.TmchCrl { - @Id long id; - @Parent com.googlecode.objectify.Key parent; - java.lang.String crl; - org.joda.time.DateTime updated; -} -class google.registry.model.transfer.TransferData { - com.googlecode.objectify.Ref serverApproveBillingEvent; - com.googlecode.objectify.Ref serverApproveAutorenewEvent; - com.googlecode.objectify.Ref 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> 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; -}