mirror of
https://github.com/google/nomulus.git
synced 2025-06-29 07:43:37 +02:00
Make javadoc <p> style guide compliant
This led to confusion for an open source contributor about how to format code. We don't want to be like, "do as I say, not as I do." https://google.github.io/styleguide/javaguide.html#s7.1.2-javadoc-paragraphs ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=122589700
This commit is contained in:
parent
4854f875b0
commit
6f4b059cc9
79 changed files with 395 additions and 386 deletions
|
@ -18,8 +18,8 @@ import java.lang.reflect.Field;
|
|||
|
||||
/**
|
||||
* A helper that exposes package-private fields in this package for reflective lookup.
|
||||
* <p>
|
||||
* By adding a subclass of this to every package in the model, we can write generic code that can
|
||||
*
|
||||
* <p>By adding a subclass of this to every package in the model, we can write generic code that can
|
||||
* access fields with package private access. The other alternative is to call
|
||||
* {@link Field#setAccessible} with {@code true} on any such Field objects, but that does not work
|
||||
* reliably in Google App Engine cross-package because of its custom security manager
|
||||
|
|
|
@ -32,8 +32,8 @@ public interface Buildable {
|
|||
|
||||
/**
|
||||
* Boilerplate for immutable builders.
|
||||
* <p>
|
||||
* This can be used without implementing {@link Buildable}.
|
||||
*
|
||||
* <p>This can be used without implementing {@link Buildable}.
|
||||
*/
|
||||
public abstract static class Builder<S> {
|
||||
|
||||
|
@ -95,8 +95,8 @@ public interface Buildable {
|
|||
/**
|
||||
* Interface for objects that can produce an "overlay", which means a copy where non-null fields
|
||||
* from another object are copied over, but null fields on the source are not.
|
||||
* <p>
|
||||
* Warning: Do not use {@code emptyToNull} methods in the getters of an {@link Overlayable}! We
|
||||
*
|
||||
* <p>Warning: Do not use {@code emptyToNull} methods in the getters of an {@link Overlayable}! We
|
||||
* use null to mean "skip this field" whereas empty means "set this field to empty", so they are
|
||||
* semantically different.
|
||||
*
|
||||
|
|
|
@ -139,9 +139,9 @@ public final class EppResourceUtils {
|
|||
|
||||
/**
|
||||
* Checks multiple {@link EppResource} objects from the datastore by unique ids.
|
||||
* <p>
|
||||
* There are currently no resources that support checks and do not use foreign keys. If we need to
|
||||
* support that case in the future, we can loosen the type to allow any {@link EppResource} and
|
||||
*
|
||||
* <p>There are currently no resources that support checks and do not use foreign keys. If we need
|
||||
* to support that case in the future, we can loosen the type to allow any {@link EppResource} and
|
||||
* add code to do the lookup by id directly.
|
||||
*
|
||||
* @param clazz the resource type to load
|
||||
|
|
|
@ -213,10 +213,10 @@ public class ModelUtils {
|
|||
|
||||
/**
|
||||
* Returns a map from field names (including non-public and inherited fields) to values.
|
||||
* <p>
|
||||
* This turns arrays into {@link List} objects so that ImmutableObject can more easily use the
|
||||
* returned map in its implementation of {@link ImmutableObject#toString} and
|
||||
* {@link ImmutableObject#equals}, which work by comparing and printing these maps.
|
||||
*
|
||||
* <p>This turns arrays into {@link List} objects so that ImmutableObject can more easily use the
|
||||
* returned map in its implementation of {@link ImmutableObject#toString} and {@link
|
||||
* ImmutableObject#equals}, which work by comparing and printing these maps.
|
||||
*/
|
||||
static Map<String, Object> getFieldValues(Object instance) {
|
||||
// Don't make this ImmutableMap because field values can be null.
|
||||
|
|
|
@ -319,8 +319,8 @@ public abstract class BillingEvent extends ImmutableObject
|
|||
|
||||
/**
|
||||
* A recurring billable event.
|
||||
* <p>
|
||||
* Unlike {@link OneTime} events, these do not store an explicit cost, since the cost of the
|
||||
*
|
||||
* <p>Unlike {@link OneTime} events, these do not store an explicit cost, since the cost of the
|
||||
* recurring event might change and each time we bill for it we need to bill at the current cost,
|
||||
* not the value that was in use at the time the recurrence was created.
|
||||
*/
|
||||
|
@ -346,15 +346,15 @@ public abstract class BillingEvent extends ImmutableObject
|
|||
/**
|
||||
* The eventTime recurs every year on this [month, day, time] between {@link #eventTime} and
|
||||
* {@link #recurrenceEndTime}, inclusive of the start but not of the end.
|
||||
* <p>
|
||||
* This field is denormalized from {@link #eventTime} to allow for an efficient index, but it
|
||||
*
|
||||
* <p>This field is denormalized from {@link #eventTime} to allow for an efficient index, but it
|
||||
* always has the same data as that field.
|
||||
* <p>
|
||||
* Note that this is a recurrence of the event time, not the billing time. The billing time can
|
||||
* be calculated by adding the relevant grace period length to this date. The reason for this
|
||||
* requirement is that the event time recurs on a {@link org.joda.time.Period} schedule (same
|
||||
* day of year, which can be 365 or 366 days later) which is what {@link TimeOfYear} can model,
|
||||
* whereas the billing time is a fixed {@link org.joda.time.Duration} later.
|
||||
*
|
||||
* <p>Note that this is a recurrence of the event time, not the billing time. The billing time
|
||||
* can be calculated by adding the relevant grace period length to this date. The reason for
|
||||
* this requirement is that the event time recurs on a {@link org.joda.time.Period} schedule
|
||||
* (same day of year, which can be 365 or 366 days later) which is what {@link TimeOfYear} can
|
||||
* model, whereas the billing time is a fixed {@link org.joda.time.Duration} later.
|
||||
*/
|
||||
@Index
|
||||
TimeOfYear recurrenceTimeOfYear;
|
||||
|
@ -401,9 +401,9 @@ public abstract class BillingEvent extends ImmutableObject
|
|||
|
||||
/**
|
||||
* An event representing a cancellation of one of the other two billable event types.
|
||||
* <p>
|
||||
* This is implemented as a separate event rather than a bit on BillingEvent in order to preserve
|
||||
* the immutability of billing events.
|
||||
*
|
||||
* <p>This is implemented as a separate event rather than a bit on BillingEvent in order to
|
||||
* preserve the immutability of billing events.
|
||||
*/
|
||||
@Entity
|
||||
public static class Cancellation extends BillingEvent {
|
||||
|
|
|
@ -32,14 +32,14 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
* A time of year (month, day, millis of day) that can be stored in a sort-friendly format.
|
||||
* <p>
|
||||
* This is conceptually similar to {@code MonthDay} in Joda or more generally to Joda's
|
||||
*
|
||||
* <p>This is conceptually similar to {@code MonthDay} in Joda or more generally to Joda's
|
||||
* {@code Partial}, but the parts we need are too simple to justify a full implementation of
|
||||
* {@code Partial}.
|
||||
* <p>
|
||||
* For simplicity, the native representation of this class's data is its stored format. This allows
|
||||
* it to be embeddable with no translation needed and also delays parsing of the string on load
|
||||
* until it's actually needed.
|
||||
*
|
||||
* <p>For simplicity, the native representation of this class's data is its stored format. This
|
||||
* allows it to be embeddable with no translation needed and also delays parsing of the string on
|
||||
* load until it's actually needed.
|
||||
*/
|
||||
@Embed
|
||||
public class TimeOfYear extends ImmutableObject {
|
||||
|
@ -53,8 +53,8 @@ public class TimeOfYear extends ImmutableObject {
|
|||
|
||||
/**
|
||||
* Constructs a {@link TimeOfYear} from a {@link DateTime}.
|
||||
* <p>
|
||||
* This handles leap years in an intentionally peculiar way by always treating February 29 as
|
||||
*
|
||||
* <p>This handles leap years in an intentionally peculiar way by always treating February 29 as
|
||||
* February 28. It is impossible to construct a {@link TimeOfYear} for February 29th.
|
||||
*/
|
||||
public static TimeOfYear fromDateTime(DateTime dateTime) {
|
||||
|
|
|
@ -40,17 +40,17 @@ import java.util.TreeMap;
|
|||
* at a corresponding instant, and remains active until the next transition occurs. At least one
|
||||
* "start of time" value (corresponding to START_OF_TIME, i.e. the Unix epoch) must be provided
|
||||
* so that the property will have a value for all possible times.
|
||||
* <p>
|
||||
* This concept is naturally represented by a sorted map of {@code DateTime} to {@code V}, but
|
||||
* the AppEngine datastore cannot natively represent a map keyed on non-strings. Instead, we
|
||||
* store an ordered list of transitions and use Objectify's @Mapify annotation to automatically
|
||||
* recreate the sorted map on load from the datastore, which is used as a backing map for this
|
||||
* property; the property itself also implements Map by way of extending ForwardingMap, so that
|
||||
* this property can stored directly as the @Mapify field in the entity.
|
||||
* <p>
|
||||
* The type parameter {@code T} specifies a user-defined subclass of {@code TimedTransition<V>} to
|
||||
* use for storing the list of transitions. The user is given this choice of subclass so that the
|
||||
* field of the value type stored in the transition can be given a customized name.
|
||||
*
|
||||
* <p>This concept is naturally represented by a sorted map of {@code DateTime} to {@code V}, but
|
||||
* the AppEngine datastore cannot natively represent a map keyed on non-strings. Instead, we store
|
||||
* an ordered list of transitions and use Objectify's @Mapify annotation to automatically recreate
|
||||
* the sorted map on load from the datastore, which is used as a backing map for this property; the
|
||||
* property itself also implements Map by way of extending ForwardingMap, so that this property can
|
||||
* stored directly as the @Mapify field in the entity.
|
||||
*
|
||||
* <p>The type parameter {@code T} specifies a user-defined subclass of {@code TimedTransition<V>}
|
||||
* to use for storing the list of transitions. The user is given this choice of subclass so that
|
||||
* the field of the value type stored in the transition can be given a customized name.
|
||||
*/
|
||||
public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedTransition<V>>
|
||||
extends ForwardingMap<DateTime, T> {
|
||||
|
@ -61,11 +61,11 @@ public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedT
|
|||
* and implementations of the abstract getter and setter methods to access that field. This design
|
||||
* is so that subclasses tagged with @Embed can define a custom field name for their value, for
|
||||
* the purpose of backwards compatibility and better readability of the datastore representation.
|
||||
* <p>
|
||||
* The public visibility of this class exists only so that it can be subclassed; clients should
|
||||
* never call any methods on this class or attempt to access its members, but should instead
|
||||
* treat it as a customizable implementation detail of {@code TimedTransitionProperty}. However,
|
||||
* note that subclasses must also have public visibility so that they can be instantiated via
|
||||
*
|
||||
* <p>The public visibility of this class exists only so that it can be subclassed; clients should
|
||||
* never call any methods on this class or attempt to access its members, but should instead treat
|
||||
* it as a customizable implementation detail of {@code TimedTransitionProperty}. However, note
|
||||
* that subclasses must also have public visibility so that they can be instantiated via
|
||||
* reflection in a call to {@code fromValueMap}.
|
||||
*/
|
||||
public abstract static class TimedTransition<V> extends ImmutableObject {
|
||||
|
@ -79,7 +79,7 @@ public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedT
|
|||
protected abstract void setValue(V value);
|
||||
}
|
||||
|
||||
/** Mapper for use with @Mapify; extracts the time from a TimedTransition to use it as a key. */
|
||||
/** Mapper used with @Mapify extracting time from TimedTransition to use as key. */
|
||||
public static class TimeMapper implements Mapper<DateTime, TimedTransition<?>> {
|
||||
@Override
|
||||
public DateTime getKey(TimedTransition<?> transition) {
|
||||
|
@ -118,8 +118,8 @@ public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedT
|
|||
/**
|
||||
* Returns a new immutable {@code TimedTransitionProperty} representing the given map of DateTime
|
||||
* to value, with transitions constructed using the given {@code TimedTransition} subclass.
|
||||
* <p>
|
||||
* This method should be the normal method for constructing a {@TimedTransitionProperty}.
|
||||
*
|
||||
* <p>This method should be the normal method for constructing a {@link TimedTransitionProperty}.
|
||||
*/
|
||||
public static <V, T extends TimedTransition<V>> TimedTransitionProperty<V, T> fromValueMap(
|
||||
ImmutableSortedMap<DateTime, V> valueMap,
|
||||
|
@ -131,10 +131,11 @@ public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedT
|
|||
/**
|
||||
* Returns a new mutable {@code TimedTransitionProperty} representing the given map of DateTime
|
||||
* to value, with transitions 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.
|
||||
*
|
||||
* <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(
|
||||
ImmutableSortedMap<DateTime, V> valueMap,
|
||||
|
@ -147,10 +148,10 @@ public class TimedTransitionProperty<V, T extends TimedTransitionProperty.TimedT
|
|||
* 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.
|
||||
* <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) {
|
||||
|
|
|
@ -20,12 +20,13 @@ import google.registry.model.eppcommon.Address;
|
|||
|
||||
/**
|
||||
* EPP Contact Address
|
||||
* <p>
|
||||
* This class is embedded inside the {@link PostalInfo} of an EPP contact to hold its address. The
|
||||
* fields are all defined in parent class {@link Address}, but the subclass is still necessary to
|
||||
* pick up the contact namespace.
|
||||
* <p>
|
||||
* This does not implement {@code Overlayable} because it is intended to be bulk replaced on update.
|
||||
*
|
||||
* <p>This class is embedded inside the {@link PostalInfo} of an EPP contact to hold its
|
||||
* address. The fields are all defined in parent class {@link Address}, but the subclass is still
|
||||
* necessary to pick up the contact namespace.
|
||||
*
|
||||
* <p>This does not implement {@code Overlayable} because it is intended to be bulk replaced on
|
||||
* update.
|
||||
*
|
||||
* @see PostalInfo
|
||||
*/
|
||||
|
|
|
@ -120,10 +120,10 @@ public class ContactCommand {
|
|||
implements SingleResourceCommand, ResourceCreateOrChange<ContactResource.Builder> {
|
||||
/**
|
||||
* Unique identifier for this contact.
|
||||
* <p>
|
||||
* This is only unique in the sense that for any given lifetime specified as the time range from
|
||||
* (creationTime, deletionTime) there can only be one contact in the datastore with this id.
|
||||
* However, there can be many contacts with the same id and non-overlapping lifetimes.
|
||||
*
|
||||
* <p>This is only unique in the sense that for any given lifetime specified as the time range
|
||||
* from (creationTime, deletionTime) there can only be one contact in the datastore with this
|
||||
* id. However, there can be many contacts with the same id and non-overlapping lifetimes.
|
||||
*/
|
||||
@XmlElement(name = "id")
|
||||
String contactId;
|
||||
|
|
|
@ -20,10 +20,10 @@ import google.registry.model.eppcommon.PhoneNumber;
|
|||
|
||||
/**
|
||||
* EPP Contact Phone Number
|
||||
* <p>
|
||||
* This class is embedded inside a {@link ContactResource} hold the phone number of an EPP contact.
|
||||
* The fields are all defined in the parent class {@link PhoneNumber}, but the subclass is still
|
||||
* necessary to pick up the contact namespace.
|
||||
*
|
||||
* <p>This class is embedded inside a {@link ContactResource} hold the phone number of an EPP
|
||||
* contact. The fields are all defined in the parent class {@link PhoneNumber}, but the subclass is
|
||||
* still necessary to pick up the contact namespace.
|
||||
*
|
||||
* @see ContactResource
|
||||
*/
|
||||
|
|
|
@ -69,9 +69,9 @@ public class ContactResource extends EppResource implements ForeignKeyedEppResou
|
|||
|
||||
/**
|
||||
* Unique identifier for this contact.
|
||||
* <p>
|
||||
* This is only unique in the sense that for any given lifetime specified as the time range from
|
||||
* (creationTime, deletionTime) there can only be one contact in the datastore with this id.
|
||||
*
|
||||
* <p>This is only unique in the sense that for any given lifetime specified as the time range
|
||||
* from (creationTime, deletionTime) there can only be one contact in the datastore with this id.
|
||||
* However, there can be many contacts with the same id and non-overlapping lifetimes.
|
||||
*/
|
||||
@XmlTransient
|
||||
|
@ -153,8 +153,8 @@ public class ContactResource extends EppResource implements ForeignKeyedEppResou
|
|||
|
||||
/**
|
||||
* Postal info for the contact.
|
||||
* <p>
|
||||
* The XML marshalling expects the {@link PostalInfo} objects in a list, but we can't actually
|
||||
*
|
||||
* <p>The XML marshalling expects the {@link PostalInfo} objects in a list, but we can't actually
|
||||
* persist them to datastore that way because Objectify can't handle collections of embedded
|
||||
* objects that themselves contain collections, and there's a list of streets inside. This method
|
||||
* transforms the persisted format to the XML format for marshalling.
|
||||
|
|
|
@ -59,9 +59,9 @@ public abstract class DomainBase extends EppResource {
|
|||
|
||||
/**
|
||||
* Fully qualified domain name (puny-coded), which serves as the foreign key for this domain.
|
||||
* <p>
|
||||
* This is only unique in the sense that for any given lifetime specified as the time range from
|
||||
* (creationTime, deletionTime) there can only be one domain in the datastore with this name.
|
||||
*
|
||||
* <p>This is only unique in the sense that for any given lifetime specified as the time range
|
||||
* from (creationTime, deletionTime) there can only be one domain in the datastore with this name.
|
||||
* However, there can be many domains with the same name and non-overlapping lifetimes.
|
||||
*
|
||||
* @invariant fullyQualifiedDomainName == fullyQualifiedDomainName.toLowerCase()
|
||||
|
@ -83,8 +83,8 @@ public abstract class DomainBase extends EppResource {
|
|||
|
||||
/**
|
||||
* Associated contacts for the domain (other than registrant).
|
||||
* <p>
|
||||
* This field is marked with {@literal @}Ignore so that {@link DomainBase} subclasses won't
|
||||
*
|
||||
* <p>This field is marked with {@literal @}Ignore so that {@link DomainBase} subclasses won't
|
||||
* persist it. Instead, the data in this field and in the {@link #registrant} are both stored in
|
||||
* {@link DomainBase#allContacts} to allow for more efficient queries.
|
||||
*/
|
||||
|
@ -101,10 +101,10 @@ public abstract class DomainBase extends EppResource {
|
|||
|
||||
/**
|
||||
* A reference to the registrant who registered this domain.
|
||||
* <p>
|
||||
* This field is marked with {@literal @}Ignore so that {@link DomainBase} subclasses won't
|
||||
* persist it. Instead, the data in this field and in the {@link DomainBase#contacts} are
|
||||
* both stored in {@link DomainBase#allContacts} to allow for more efficient queries.
|
||||
*
|
||||
* <p>This field is marked with {@literal @}Ignore so that {@link DomainBase} subclasses won't
|
||||
* persist it. Instead, the data in this field and in the {@link DomainBase#contacts} are both
|
||||
* stored in {@link DomainBase#allContacts} to allow for more efficient queries.
|
||||
*/
|
||||
@Ignore
|
||||
//TODO(b/28713909): Make this a Ref<ContactResource>.
|
||||
|
@ -115,8 +115,8 @@ public abstract class DomainBase extends EppResource {
|
|||
|
||||
/**
|
||||
* Data used to construct DS records for this domain.
|
||||
* <p>
|
||||
* This is {@literal @}XmlTransient because it needs to be returned under the "extension" tag
|
||||
*
|
||||
* <p>This is {@literal @}XmlTransient because it needs to be returned under the "extension" tag
|
||||
* of an info response rather than inside the "infData" tag.
|
||||
*/
|
||||
@XmlTransient
|
||||
|
|
|
@ -445,9 +445,9 @@ public class DomainCommand {
|
|||
|
||||
/**
|
||||
* Creates a copy of this {@link Update} with hard links to hosts and contacts.
|
||||
* <p>
|
||||
* As a side effect, this will turn null innerAdd/innerRemove/innerChange into empty versions of
|
||||
* those classes, which is harmless because the getters do that anyways.
|
||||
*
|
||||
* <p>As a side effect, this will turn null innerAdd/innerRemove/innerChange into empty versions
|
||||
* of those classes, which is harmless because the getters do that anyways.
|
||||
*/
|
||||
@Override
|
||||
public Update cloneAndLinkReferences(DateTime now) throws InvalidReferencesException {
|
||||
|
|
|
@ -100,8 +100,8 @@ public class DomainResource extends DomainBase implements ForeignKeyedEppResourc
|
|||
|
||||
/**
|
||||
* The poll message associated with this domain being deleted.
|
||||
* <p>
|
||||
* This field should be null if the domain is not in pending delete. If it is, the field should
|
||||
*
|
||||
* <p>This field should be null if the domain is not in pending delete. If it is, the field should
|
||||
* refer to a {@link PollMessage} timed to when the domain is fully deleted. If the domain is
|
||||
* restored, the message should be deleted.
|
||||
*/
|
||||
|
@ -110,9 +110,9 @@ public class DomainResource extends DomainBase implements ForeignKeyedEppResourc
|
|||
|
||||
/**
|
||||
* The recurring billing event associated with this domain's autorenewals.
|
||||
* <p>
|
||||
* The recurrence should be open ended unless the domain is in pending delete or fully deleted, in
|
||||
* which case it should be closed at the time the delete was requested. Whenever the domain's
|
||||
*
|
||||
* <p>The recurrence should be open ended unless the domain is in pending delete or fully deleted,
|
||||
* in which case it should be closed at the time the delete was requested. Whenever the domain's
|
||||
* {@link #registrationExpirationTime} is changed the recurrence should be closed, a new one
|
||||
* should be created, and this field should be updated to point to the new one.
|
||||
*/
|
||||
|
@ -121,9 +121,9 @@ public class DomainResource extends DomainBase implements ForeignKeyedEppResourc
|
|||
|
||||
/**
|
||||
* The recurring poll message associated with this domain's autorenewals.
|
||||
* <p>
|
||||
* The recurrence should be open ended unless the domain is in pending delete or fully deleted, in
|
||||
* which case it should be closed at the time the delete was requested. Whenever the domain's
|
||||
*
|
||||
* <p>The recurrence should be open ended unless the domain is in pending delete or fully deleted,
|
||||
* in which case it should be closed at the time the delete was requested. Whenever the domain's
|
||||
* {@link #registrationExpirationTime} is changed the recurrence should be closed, a new one
|
||||
* should be created, and this field should be updated to point to the new one.
|
||||
*/
|
||||
|
@ -206,8 +206,8 @@ public class DomainResource extends DomainBase implements ForeignKeyedEppResourc
|
|||
|
||||
/**
|
||||
* Returns the Registry Grace Period Statuses for this domain.
|
||||
* <p>
|
||||
* This collects all statuses from the domain's {@link GracePeriod}s and also adds the
|
||||
*
|
||||
* <p>This collects all statuses from the domain's {@link GracePeriod} entries and also adds the
|
||||
* PENDING_DELETE status if needed.
|
||||
*/
|
||||
public ImmutableSet<GracePeriodStatus> getGracePeriodStatuses() {
|
||||
|
|
|
@ -30,9 +30,9 @@ import javax.annotation.Nullable;
|
|||
|
||||
/**
|
||||
* A domain grace period with an expiration time.
|
||||
* <p>
|
||||
* When a grace period expires, it is lazily removed from the {@link DomainResource} the next time
|
||||
* the resource is loaded from the datastore.
|
||||
*
|
||||
* <p>When a grace period expires, it is lazily removed from the {@link DomainResource} the next
|
||||
* time the resource is loaded from the datastore.
|
||||
*/
|
||||
@Embed
|
||||
public class GracePeriod extends ImmutableObject {
|
||||
|
|
|
@ -28,8 +28,8 @@ import javax.xml.bind.annotation.adapters.XmlAdapter;
|
|||
/**
|
||||
* Legacy shell of a "union" type to represent referenced objects as either a foreign key or as a
|
||||
* link to another object in the datastore. In its current form it merely wraps a {@link Ref}.
|
||||
* <p>
|
||||
* This type always marshals as the "foreign key". We no longer use this type for unmarshalling.
|
||||
*
|
||||
* <p>This type always marshals as the "foreign key". We no longer use this type for unmarshalling.
|
||||
*
|
||||
* @param <T> the type being referenced
|
||||
*/
|
||||
|
|
|
@ -25,9 +25,9 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
/**
|
||||
* An XML data object that represents an allocate extension that will be present on EPP commands to
|
||||
* allocate a domain from an application.
|
||||
* <p>
|
||||
* This object holds XML data which JAXB will unmarshal from an EPP domain create command extension.
|
||||
* The XML will have the following enclosing structure:
|
||||
*
|
||||
* <p>This object holds XML data which JAXB will unmarshal from an EPP domain create command
|
||||
* extension. The XML will have the following enclosing structure:
|
||||
*
|
||||
* <pre> {@code
|
||||
* <epp>
|
||||
|
|
|
@ -32,8 +32,8 @@ public class BaseFeeCommand extends ImmutableObject {
|
|||
|
||||
/**
|
||||
* The magnitude of the fee, in the specified units, with an optional description.
|
||||
* <p>
|
||||
* This is a list because a single operation can involve multiple fees.
|
||||
*
|
||||
* <p>This is a list because a single operation can involve multiple fees.
|
||||
*/
|
||||
@XmlElement(name = "fee")
|
||||
List<Fee> fees;
|
||||
|
|
|
@ -34,8 +34,8 @@ public class BaseFeeCommandResponse extends ImmutableObject {
|
|||
|
||||
/**
|
||||
* The magnitude of the fee, in the specified units, with an optional description.
|
||||
* <p>
|
||||
* This is a list because a single operation can involve multiple fees.
|
||||
*
|
||||
* <p>This is a list because a single operation can involve multiple fees.
|
||||
*/
|
||||
List<Fee> fee;
|
||||
|
||||
|
|
|
@ -43,15 +43,15 @@ public class BaseFeeResponse extends ImmutableObject {
|
|||
|
||||
/**
|
||||
* The magnitude of the fee, in the specified units, with an optional description.
|
||||
* <p>
|
||||
* This is a list because a single operation can involve multiple fees.
|
||||
*
|
||||
* <p>This is a list because a single operation can involve multiple fees.
|
||||
*/
|
||||
List<Fee> fee;
|
||||
|
||||
/**
|
||||
* The type of the fee.
|
||||
* <p>
|
||||
* We will use "premium" for fees on premium names, and omit the field otherwise.
|
||||
*
|
||||
* <p>We will use "premium" for fees on premium names, and omit the field otherwise.
|
||||
*/
|
||||
@XmlElement(name = "class")
|
||||
String feeClass;
|
||||
|
|
|
@ -39,8 +39,8 @@ public class FeeDeleteResponseExtension extends ImmutableObject implements Respo
|
|||
|
||||
/**
|
||||
* The magnitude of the credit(s), in the specified units, with an optional description.
|
||||
* <p>
|
||||
* This is a list because a single delete can receive multiple credits.
|
||||
*
|
||||
* <p>This is a list because a single delete can receive multiple credits.
|
||||
*/
|
||||
@XmlElement(name = "credit")
|
||||
List<Credit> credits;
|
||||
|
|
|
@ -24,13 +24,13 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|||
|
||||
/**
|
||||
* Represents the EPP application status.
|
||||
* <p>
|
||||
* These values are never read from a command and only used in responses, so, we don't need to model
|
||||
* anything we don't output. We don't model the CUSTOM status because we don't use it. This allows
|
||||
* us to also avoid modeling the "name" attribute which is only used with CUSTOM. We don't model the
|
||||
* "lang" attribute because we only support English and that's the default.
|
||||
* <p>
|
||||
* Given all of this, we can use {@link EnumToAttributeAdapter} to make this code very simple.
|
||||
*
|
||||
* <p>These values are never read from a command and only used in responses, so, we don't need to
|
||||
* model anything we don't output. We don't model the CUSTOM status because we don't use it. This
|
||||
* allows us to also avoid modeling the "name" attribute which is only used with CUSTOM. We don't
|
||||
* model the "lang" attribute because we only support English and that's the default.
|
||||
*
|
||||
* <p>Given all of this, we can use {@link EnumToAttributeAdapter} to make this code very simple.
|
||||
*
|
||||
* @see "http://tools.ietf.org/html/draft-tan-epp-launchphase-11#section-2.3"
|
||||
*/
|
||||
|
|
|
@ -26,9 +26,9 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
/**
|
||||
* An XML data object that represents a launch extension that may be present on EPP domain check
|
||||
* commands.
|
||||
* <p>
|
||||
* This object holds XML data which JAXB will unmarshal from an EPP domain check command extension.
|
||||
* The XML will have the following enclosing structure:
|
||||
*
|
||||
* <p>This object holds XML data which JAXB will unmarshal from an EPP domain check command
|
||||
* extension. The XML will have the following enclosing structure:
|
||||
*
|
||||
* <pre> {@code
|
||||
* <epp>
|
||||
|
|
|
@ -34,9 +34,9 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
/**
|
||||
* An XML data object that represents a launch extension that may be present on EPP domain create
|
||||
* commands.
|
||||
* <p>
|
||||
* This object holds XML data which JAXB will unmarshal from an EPP domain create command extension.
|
||||
* The XML will have the following enclosing structure:
|
||||
*
|
||||
* <p>This object holds XML data which JAXB will unmarshal from an EPP domain create command
|
||||
* extension. The XML will have the following enclosing structure:
|
||||
*
|
||||
* <pre> {@code
|
||||
* <epp>
|
||||
|
|
|
@ -34,8 +34,8 @@ import javax.xml.bind.annotation.XmlValue;
|
|||
|
||||
/**
|
||||
* The launch phase of the TLD being addressed by this command.
|
||||
* <p>
|
||||
* The launch phase refers to the various stages that a TLD goes through before entering general
|
||||
*
|
||||
* <p>The launch phase refers to the various stages that a TLD goes through before entering general
|
||||
* availability. The various phases are described below (in order that they usually occur).
|
||||
*/
|
||||
@Embed
|
||||
|
|
|
@ -32,8 +32,9 @@ import javax.xml.bind.annotation.XmlType;
|
|||
public class SecDnsCreateExtension extends ImmutableObject implements CommandExtension {
|
||||
/**
|
||||
* Time in seconds until the signature should expire.
|
||||
* <p>
|
||||
* We do not support expirations, but we need this field to be able to return appropriate errors.
|
||||
*
|
||||
* <p>We do not support expirations, but we need this field to be able to return appropriate
|
||||
* errors.
|
||||
*/
|
||||
Long maxSigLife;
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@ public class SecDnsUpdateExtension extends ImmutableObject implements CommandExt
|
|||
|
||||
/**
|
||||
* Specifies whether this update is urgent.
|
||||
* <p>
|
||||
* We don't support urgent updates but we need this to be present to provide appropriate error
|
||||
*
|
||||
* <p>We don't support urgent updates but we need this to be present to provide appropriate error
|
||||
* messages if a client requests it.
|
||||
*/
|
||||
@XmlAttribute
|
||||
|
@ -98,8 +98,8 @@ public class SecDnsUpdateExtension extends ImmutableObject implements CommandExt
|
|||
public static class Change extends ImmutableObject {
|
||||
/**
|
||||
* Time in seconds until the signature should expire.
|
||||
* <p>
|
||||
* We do not support expirations, but we need this field to be able to return appropriate
|
||||
*
|
||||
* <p>We do not support expirations, but we need this field to be able to return appropriate
|
||||
* errors.
|
||||
*/
|
||||
Long maxSigLife;
|
||||
|
|
|
@ -36,8 +36,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|||
|
||||
/**
|
||||
* Container for generic street address.
|
||||
* <p>
|
||||
* This is the "addrType" type from {@link "http://tools.ietf.org/html/rfc5733"}. It also matches
|
||||
*
|
||||
* <p>This is the "addrType" type from {@link "http://tools.ietf.org/html/rfc5733"}. It also matches
|
||||
* the "addrType" type from {@link "http://tools.ietf.org/html/draft-lozano-tmch-smd"}.
|
||||
*
|
||||
* @see google.registry.model.contact.ContactAddress
|
||||
|
|
|
@ -29,8 +29,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|||
|
||||
/**
|
||||
* The "authInfoType" complex type.
|
||||
* <p>
|
||||
* RFCs 5731 and 5732 define this almost identically up to the namespace.
|
||||
*
|
||||
* <p>RFCs 5731 and 5732 define this almost identically up to the namespace.
|
||||
*/
|
||||
@XmlTransient
|
||||
public abstract class AuthInfo extends ImmutableObject {
|
||||
|
|
|
@ -29,12 +29,12 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|||
|
||||
/**
|
||||
* Container for generic E164 phone number.
|
||||
* <p>
|
||||
* This is the "e164" type from {@link "http://tools.ietf.org/html/rfc5733"}. It also matches the
|
||||
*
|
||||
* <p>This is the "e164" type from {@link "http://tools.ietf.org/html/rfc5733"}. It also matches the
|
||||
* "e164Type" type from {@link "http://tools.ietf.org/html/draft-lozano-tmch-smd"}.
|
||||
*
|
||||
* <blockquote><p>
|
||||
* "Contact telephone number structure is derived from structures defined in [ITU.E164.2005].
|
||||
* <blockquote>
|
||||
* <p>"Contact telephone number structure is derived from structures defined in [ITU.E164.2005].
|
||||
* Telephone numbers described in this mapping are character strings that MUST begin with a plus
|
||||
* sign ("+", ASCII value 0x002B), followed by a country code defined in [ITU.E164.2005], followed
|
||||
* by a dot (".", ASCII value 0x002E), followed by a sequence of digits representing the telephone
|
||||
|
|
|
@ -24,8 +24,8 @@ import javax.xml.bind.annotation.XmlTransient;
|
|||
|
||||
/**
|
||||
* Used as the value of a tag that is present in the XML but has no children or value.
|
||||
* <p>
|
||||
* When placed in a field "foo", this will correctly unmarshal from both {@code <foo/>} and
|
||||
*
|
||||
* <p>When placed in a field "foo", this will correctly unmarshal from both {@code <foo/>} and
|
||||
* {@code <foo></foo>}, and will unmarshal always to {@code <foo/>}.
|
||||
*/
|
||||
@Embed
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
|
||||
/**
|
||||
* Domain Registry datastore model common/shared classes.
|
||||
* <p>
|
||||
* This package is intended to hold classes which are shared across multiple XML namespaces. As
|
||||
*
|
||||
* <p>This package is intended to hold classes which are shared across multiple XML namespaces. As
|
||||
* such, no default namespace is declared in this package, and all objects in this package should be
|
||||
* declared XmlTransient.
|
||||
*/
|
||||
|
|
|
@ -40,11 +40,11 @@ public interface ResourceCommand {
|
|||
|
||||
/**
|
||||
* A command for a single {@link EppResource}.
|
||||
* <p>
|
||||
* In general commands should extend {@link AbstractSingleResourceCommand} instead of
|
||||
* implementing this directly, but "Create" commands can't do that since they need to inherit
|
||||
* from a base class that gives them all of the resource's fields. The domain "Info" command
|
||||
* also can't do that since it's "name" field is overloaded with a "hosts" attribute.
|
||||
*
|
||||
* <p>In general commands should extend {@link AbstractSingleResourceCommand} instead of
|
||||
* implementing this directly, but "Create" commands can't do that since they need to inherit from
|
||||
* a base class that gives them all of the resource's fields. The domain "Info" command also can't
|
||||
* do that since it's "name" field is overloaded with a "hosts" attribute.
|
||||
*/
|
||||
public interface SingleResourceCommand extends ResourceCommand {
|
||||
String getTargetId();
|
||||
|
|
|
@ -71,9 +71,9 @@ public abstract class CheckData extends ImmutableObject implements ResponseData
|
|||
|
||||
/**
|
||||
* The "checkNameType" and "checkIDType" types.
|
||||
* <p>
|
||||
* Although these are specified in the Epp extension RFCs and not in RFC 5730, which implies that
|
||||
* they should be implemented per-extension, all of RFCs 5731, 5732 and 5733 define them
|
||||
*
|
||||
* <p>Although these are specified in the Epp extension RFCs and not in RFC 5730, which implies
|
||||
* that they should be implemented per-extension, all of RFCs 5731, 5732 and 5733 define them
|
||||
* identically except for the namespace and some slightly renamed fields, allowing us to share
|
||||
* some code between the different extensions.
|
||||
*/
|
||||
|
|
|
@ -30,8 +30,9 @@ import javax.xml.bind.annotation.XmlElementWrapper;
|
|||
|
||||
/**
|
||||
* A greeting, defined in {@link "http://tools.ietf.org/html/rfc5730"}.
|
||||
* <p>
|
||||
* It would be nice to make this a singleton, but we need the {@link #svDate} field to stay current.
|
||||
*
|
||||
* <p>It would be nice to make this a singleton, but we need the {@link #svDate} field to stay
|
||||
* current.
|
||||
*/
|
||||
public class Greeting extends ImmutableObject implements ResponseOrGreeting {
|
||||
|
||||
|
|
|
@ -79,16 +79,16 @@ public class Response extends ImmutableObject implements ResponseOrGreeting {
|
|||
|
||||
/**
|
||||
* The time the command that created this response was executed.
|
||||
* <p>
|
||||
* This is for logging purposes only and is not returned to the user.
|
||||
*
|
||||
* <p>This is for logging purposes only and is not returned to the user.
|
||||
*/
|
||||
@XmlTransient
|
||||
DateTime executionTime;
|
||||
|
||||
/**
|
||||
* The repository id of a new object if this is a create response, or null.
|
||||
* <p>
|
||||
* This is for logging purposes only and is not returned to the user.
|
||||
*
|
||||
* <p>This is for logging purposes only and is not returned to the user.
|
||||
*/
|
||||
@XmlTransient
|
||||
String createdRepoId;
|
||||
|
|
|
@ -74,9 +74,9 @@ public class HostResource extends EppResource implements ForeignKeyedEppResource
|
|||
|
||||
/**
|
||||
* Fully qualified hostname, which is a unique identifier for this host.
|
||||
* <p>
|
||||
* This is only unique in the sense that for any given lifetime specified as the time range from
|
||||
* (creationTime, deletionTime) there can only be one host in the datastore with this name.
|
||||
*
|
||||
* <p>This is only unique in the sense that for any given lifetime specified as the time range
|
||||
* from (creationTime, deletionTime) there can only be one host in the datastore with this name.
|
||||
* However, there can be many hosts with the same name and non-overlapping lifetimes.
|
||||
*/
|
||||
// TODO(b/25644770): Backfill this index. Until that's done, don't rely on it!
|
||||
|
|
|
@ -27,8 +27,8 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
|
||||
/**
|
||||
* Information about one or more marks.
|
||||
* <p>
|
||||
* A mark is a term for a label with some sort of legally protected status. The most well known
|
||||
*
|
||||
* <p>A mark is a term for a label with some sort of legally protected status. The most well known
|
||||
* version is a registered trademark, but marks can also be derived from court opinions, treaties,
|
||||
* or statutes.
|
||||
*/
|
||||
|
|
|
@ -18,10 +18,10 @@ import google.registry.model.eppcommon.Address;
|
|||
|
||||
/**
|
||||
* Mark Holder/Owner Address
|
||||
* <p>
|
||||
* This class is embedded inside {@link CommonMarkContactFields} hold the address of a mark contact
|
||||
* or holder. The fields are all defined in parent class {@link Address}, but the subclass is still
|
||||
* necessary to pick up the mark namespace.
|
||||
*
|
||||
* <p>This class is embedded inside {@link CommonMarkContactFields} hold the address of a mark
|
||||
* contact or holder. The fields are all defined in parent class {@link Address}, but the subclass
|
||||
* is still necessary to pick up the mark namespace.
|
||||
*
|
||||
* @see CommonMarkContactFields
|
||||
*/
|
||||
|
|
|
@ -18,8 +18,8 @@ import google.registry.model.eppcommon.PhoneNumber;
|
|||
|
||||
/**
|
||||
* Mark Holder/Owner Phone Number
|
||||
* <p>
|
||||
* This class is embedded inside {@link CommonMarkContactFields} hold the phone number of a mark
|
||||
*
|
||||
* <p>This class is embedded inside {@link CommonMarkContactFields} hold the phone number of a mark
|
||||
* contact or holder. The fields are all defined in parent class {@link PhoneNumber}, but the
|
||||
* subclass is still necessary to pick up the mark namespace.
|
||||
*
|
||||
|
|
|
@ -60,10 +60,10 @@ import javax.inject.Inject;
|
|||
|
||||
/**
|
||||
* A wrapper around ofy().
|
||||
* <p>
|
||||
* The primary purpose of this class is to add functionality to support commit logs. It is simpler
|
||||
* to wrap {@link Objectify} rather than extend it because this way we can remove some methods that
|
||||
* we don't really want exposed and add some shortcuts.
|
||||
*
|
||||
* <p>The primary purpose of this class is to add functionality to support commit logs. It is
|
||||
* simpler to wrap {@link Objectify} rather than extend it because this way we can remove some
|
||||
* methods that we don't really want exposed and add some shortcuts.
|
||||
*/
|
||||
public class Ofy {
|
||||
|
||||
|
@ -71,10 +71,10 @@ public class Ofy {
|
|||
|
||||
/**
|
||||
* Recommended memcache expiration time, which is one hour, specified in seconds.
|
||||
* <p>
|
||||
* This value should used as a cache expiration time for any entities annotated with an Objectify
|
||||
* {@code @Cache} annotation, to put an upper bound on unlikely-but-possible divergence between
|
||||
* memcache and datastore when a memcache write fails.
|
||||
*
|
||||
* <p>This value should used as a cache expiration time for any entities annotated with an
|
||||
* Objectify {@code @Cache} annotation, to put an upper bound on unlikely-but-possible divergence
|
||||
* between memcache and datastore when a memcache write fails.
|
||||
*/
|
||||
public static final int RECOMMENDED_MEMCACHE_EXPIRATION = 3600;
|
||||
|
||||
|
@ -181,8 +181,8 @@ public class Ofy {
|
|||
|
||||
/**
|
||||
* Save, without any augmentations except to check that we're not saving any virtual entities.
|
||||
* <p>
|
||||
* No backups get written.
|
||||
*
|
||||
* <p>No backups get written.
|
||||
*/
|
||||
public Saver saveWithoutBackup() {
|
||||
return new AugmentedSaver() {
|
||||
|
|
|
@ -32,15 +32,15 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
|||
/**
|
||||
* This package defines all entities which are managed via EPP XML and persisted to the Datastore
|
||||
* via Objectify.
|
||||
* <p>
|
||||
* All first class entities are represented as a "Resource" class - {@link DomainResource},
|
||||
*
|
||||
* <p>All first class entities are represented as a "Resource" class - {@link DomainResource},
|
||||
* {@link HostResource}, {@link ContactResource}, and {@link RegistrarResource}. Resource objects
|
||||
* are written in a single shared entity group per TLD. All commands that operate on those entities
|
||||
* are grouped in a "Command" class- {@link DomainCommand}, {@link HostCommand},
|
||||
* {@link ContactCommand}. The Resource does double duty as both the persisted representation and as
|
||||
* the XML-marshallable object returned in respond to Info commands.
|
||||
* <p>
|
||||
* Command classes are never persisted, and the Objectify annotations on the Create and Update
|
||||
*
|
||||
* <p>Command classes are never persisted, and the Objectify annotations on the Create and Update
|
||||
* classes are purely for the benefit of the derived Resource classes that inherit from them.
|
||||
* Whenever a command that mutates the model is executed, a HistoryEvent is stored with the affected
|
||||
* Resource as its datastore parent. All history entries have an indexed modification time field so
|
||||
|
|
|
@ -202,8 +202,8 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable
|
|||
/**
|
||||
* Registrar name. This is a distinct from the client identifier since there are no restrictions
|
||||
* on its length.
|
||||
* <p>
|
||||
* NB: We are assuming that this field is unique across all registrar entities. This is not
|
||||
*
|
||||
* <p>NB: We are assuming that this field is unique across all registrar entities. This is not
|
||||
* formally enforced in our datastore, but should be enforced by ICANN in that no two registrars
|
||||
* will be accredited with the same name.
|
||||
*
|
||||
|
|
|
@ -23,9 +23,9 @@ import google.registry.model.eppcommon.Address;
|
|||
|
||||
/**
|
||||
* Registrar Address
|
||||
* <p>
|
||||
* This class is embedded inside a {@link Registrar} object to hold its address. The fields are all
|
||||
* defined in parent class {@link Address} so that it can share it with other similar address
|
||||
*
|
||||
* <p>This class is embedded inside a {@link Registrar} object to hold its address. The fields are
|
||||
* all defined in parent class {@link Address} so that it can share it with other similar address
|
||||
* classes.
|
||||
*/
|
||||
@Embed
|
||||
|
|
|
@ -263,8 +263,8 @@ public class Registry extends ImmutableObject implements Buildable {
|
|||
|
||||
/**
|
||||
* The unicode-aware representation of the TLD associated with this {@link Registry}.
|
||||
* <p>
|
||||
* This will be equal to {@link #tldStr} for ASCII TLDs, but will be non-ASCII for IDN TLDs.
|
||||
*
|
||||
* <p>This will be equal to {@link #tldStr} for ASCII TLDs, but will be non-ASCII for IDN TLDs.
|
||||
* We store this in a field so that it will be retained upon import into BigQuery.
|
||||
*/
|
||||
String tldUnicode;
|
||||
|
@ -348,10 +348,10 @@ public class Registry extends ImmutableObject implements Buildable {
|
|||
/**
|
||||
* 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.
|
||||
* This cost is also used to compute costs for transfers, since each transfer includes a renewal
|
||||
* to ensure transfers have a cost.
|
||||
*
|
||||
* <p>A given value of this property represents the per-year billing cost for renewing a domain
|
||||
* name. This cost is also used to compute costs for transfers, since each transfer includes a
|
||||
* renewal to ensure transfers have a cost.
|
||||
*/
|
||||
@Mapify(TimedTransitionProperty.TimeMapper.class)
|
||||
TimedTransitionProperty<Money, BillingCostTransition> renewBillingCostTransitions =
|
||||
|
@ -388,8 +388,8 @@ public class Registry extends ImmutableObject implements Buildable {
|
|||
|
||||
/**
|
||||
* Retrieve the TLD state at the given time. Defaults to {@link TldState#PREDELEGATION}.
|
||||
* <p>
|
||||
* Note that {@link TldState#PDT} TLDs pretend to be in {@link TldState#GENERAL_AVAILABILITY}.
|
||||
*
|
||||
* <p>Note that {@link TldState#PDT} TLDs pretend to be in {@link TldState#GENERAL_AVAILABILITY}.
|
||||
*/
|
||||
public TldState getTldState(DateTime now) {
|
||||
TldState state = tldStateTransitions.getValueAtTime(now);
|
||||
|
@ -703,8 +703,8 @@ public class Registry extends ImmutableObject implements Buildable {
|
|||
|
||||
/**
|
||||
* Sets the renew billing cost to transition to the specified values at the specified times.
|
||||
* <p>
|
||||
* Renew billing costs transitions should only be added at least 5 days (the length of an
|
||||
*
|
||||
* <p>Renew billing costs transitions should only be added at least 5 days (the length of an
|
||||
* automatic transfer) in advance, to avoid discrepancies between the cost stored with the
|
||||
* billing event (created when the transfer is requested) and the cost at the time when the
|
||||
* transfer actually occurs (5 days later).
|
||||
|
|
|
@ -42,8 +42,8 @@ public class ServerSecret extends CrossTldSingleton {
|
|||
|
||||
/**
|
||||
* Get the server secret, creating it if the datastore doesn't have one already.
|
||||
* <p>
|
||||
* There's a tiny risk of a race here if two calls to this happen simultaneously and create
|
||||
*
|
||||
* <p>There's a tiny risk of a race here if two calls to this happen simultaneously and create
|
||||
* different keys, in which case one of the calls will end up with an incorrect key. However, this
|
||||
* happens precisely once in the history of the system (after that it's always in datastore) so
|
||||
* it's not worth worrying about.
|
||||
|
|
|
@ -53,14 +53,14 @@ import java.util.Map;
|
|||
|
||||
/**
|
||||
* Signed Mark Data Revocation List (SMDRL).
|
||||
* <p>
|
||||
* Represents a SMDRL file downloaded from the TMCH MarksDB each day. The list holds the ids of
|
||||
* all the {@link SignedMark SignedMarks} that have been revoked. A new list is created for each
|
||||
* new file that's created, depending on the timestamp.
|
||||
* <p>
|
||||
* We'll be putting the entire table into a single entity for the sake of performance. But in order
|
||||
* to avoid exceeding the one megabyte max entity size limit, we'll also be sharding that entity
|
||||
* into multiple entities, each entity containing {@value #SHARD_SIZE} rows.
|
||||
*
|
||||
* <p>Represents a SMDRL file downloaded from the TMCH MarksDB each day. The list holds the ids of
|
||||
* all the {@link SignedMark SignedMarks} that have been revoked. A new list is created for each new
|
||||
* file that's created, depending on the timestamp.
|
||||
*
|
||||
* <p>We'll be putting the entire table into a single entity for the sake of performance. But in
|
||||
* order to avoid exceeding the one megabyte max entity size limit, we'll also be sharding that
|
||||
* entity into multiple entities, each entity containing {@value #SHARD_SIZE} rows.
|
||||
*
|
||||
* @see google.registry.tmch.SmdrlCsvParser
|
||||
* @see "http://tools.ietf.org/html/draft-lozano-tmch-func-spec-08#section-6.2"
|
||||
|
|
|
@ -49,8 +49,8 @@ public final class TmchCrl extends CrossTldSingleton {
|
|||
|
||||
/**
|
||||
* Change the datastore singleton to a new ASCII-armored X.509 CRL.
|
||||
* <p>
|
||||
* Please do not call this function unless your CRL is properly formatted, signed by the root,
|
||||
*
|
||||
* <p>Please do not call this function unless your CRL is properly formatted, signed by the root,
|
||||
* and actually newer than the one currently in the datastore.
|
||||
*/
|
||||
public static void set(final String crl) {
|
||||
|
|
|
@ -45,42 +45,42 @@ public class TransferData extends BaseTransferObject implements Buildable {
|
|||
|
||||
/**
|
||||
* The billing event and poll messages associated with a server-approved transfer.
|
||||
* <p>
|
||||
* This field should be null if there is not currently a pending transfer or if the object being
|
||||
* transferred is not a domain. If there is a pending transfer for a domain there should be a
|
||||
* number of poll messages and billing events for both the gaining and losing registrars. If the
|
||||
*
|
||||
* <p>This field should be null if there is not currently a pending transfer or if the object
|
||||
* being transferred is not a domain. If there is a pending transfer for a domain there should be
|
||||
* a number of poll messages and billing events for both the gaining and losing registrars. If the
|
||||
* pending transfer is explicitly approved, rejected or cancelled, the referenced entities should
|
||||
* be deleted.
|
||||
* <p>
|
||||
* Keys are stored here instead of references to facilitate bulk deletion (the typical use case,
|
||||
* as described above), since Objectify allows bulk deletion by key but not by reference.
|
||||
*
|
||||
* <p>Keys are stored here instead of references to facilitate bulk deletion (the typical use
|
||||
* case, as described above), since Objectify allows bulk deletion by key but not by reference.
|
||||
*/
|
||||
@IgnoreSave(IfNull.class)
|
||||
Set<Key<? extends TransferServerApproveEntity>> serverApproveEntities;
|
||||
|
||||
/**
|
||||
* The regular one-time billing event that will be charged for a server-approved transfer.
|
||||
* <p>
|
||||
* This field should be null if there is not currently a pending transfer or if the object being
|
||||
* transferred is not a domain.
|
||||
*
|
||||
* <p>This field should be null if there is not currently a pending transfer or if the object
|
||||
* being transferred is not a domain.
|
||||
*/
|
||||
@IgnoreSave(IfNull.class)
|
||||
Ref<BillingEvent.OneTime> serverApproveBillingEvent;
|
||||
|
||||
/**
|
||||
* The autorenew billing event that should be associated with this resource after the transfer.
|
||||
* <p>
|
||||
* This field should be null if there is not currently a pending transfer or if the object being
|
||||
* transferred is not a domain.
|
||||
*
|
||||
* <p>This field should be null if there is not currently a pending transfer or if the object
|
||||
* being transferred is not a domain.
|
||||
*/
|
||||
@IgnoreSave(IfNull.class)
|
||||
Ref<BillingEvent.Recurring> serverApproveAutorenewEvent;
|
||||
|
||||
/**
|
||||
* The autorenew poll message that should be associated with this resource after the transfer.
|
||||
* <p>
|
||||
* This field should be null if there is not currently a pending transfer or if the object being
|
||||
* transferred is not a domain.
|
||||
*
|
||||
* <p>This field should be null if there is not currently a pending transfer or if the object
|
||||
* being transferred is not a domain.
|
||||
*/
|
||||
@IgnoreSave(IfNull.class)
|
||||
Ref<PollMessage.Autorenew> serverApproveAutorenewPollMessage;
|
||||
|
|
|
@ -32,9 +32,9 @@ public class EnumToAttributeAdapter<E extends Enum<E> & EnumToAttributeAdapter.E
|
|||
|
||||
/**
|
||||
* EPP's peculiar enum format.
|
||||
* <p>
|
||||
* It's meant to allow more information inside the element, but it's an annoyance when we want to
|
||||
* deal with pure enums.
|
||||
*
|
||||
* <p>It's meant to allow more information inside the element, but it's an annoyance when we want
|
||||
* to deal with pure enums.
|
||||
*/
|
||||
static class EnumShim {
|
||||
@XmlAttribute
|
||||
|
|
|
@ -33,10 +33,10 @@ import java.util.Date;
|
|||
|
||||
/**
|
||||
* Stores Joda {@link ReadableInstant} types ({@code DateTime}, etc) as a {@link java.util.Date}.
|
||||
* <p>
|
||||
* This is a fork of the {@code ReadableInstantTranslatorFactory} that comes bundled with Objectify.
|
||||
* The original reifies a {@link ReadableInstant} using the machine's local time zone. This version
|
||||
* always uses UTC.
|
||||
*
|
||||
* <p>This is a fork of the {@code ReadableInstantTranslatorFactory} that comes bundled with
|
||||
* Objectify. The original reifies a {@link ReadableInstant} using the machine's local time
|
||||
* zone. This version always uses UTC.
|
||||
*/
|
||||
public class ReadableInstantUtcTranslatorFactory
|
||||
extends ValueTranslatorFactory<ReadableInstant, Date> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue