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:
Justine Tunney 2016-05-17 18:56:33 -07:00
parent 4854f875b0
commit 6f4b059cc9
79 changed files with 395 additions and 386 deletions

View file

@ -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

View file

@ -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.
*

View file

@ -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

View file

@ -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.

View file

@ -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 {

View file

@ -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) {

View file

@ -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) {

View file

@ -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
*/

View file

@ -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;

View file

@ -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
*/

View file

@ -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.

View file

@ -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

View file

@ -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 {

View file

@ -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() {

View file

@ -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 {

View file

@ -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
*/

View file

@ -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>

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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"
*/

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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 {

View file

@ -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

View file

@ -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

View file

@ -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.
*/

View file

@ -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();

View file

@ -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.
*/

View file

@ -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 {

View file

@ -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;

View file

@ -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!

View file

@ -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.
*/

View file

@ -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
*/

View file

@ -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.
*

View file

@ -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() {

View file

@ -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

View file

@ -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.
*

View file

@ -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

View file

@ -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).

View file

@ -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.

View file

@ -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"

View file

@ -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) {

View file

@ -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;

View file

@ -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

View file

@ -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> {