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

@ -183,8 +183,8 @@ public class BigqueryConnection implements AutoCloseable {
* Class that wraps a normal Bigquery API Table object to make it immutable from the client side
* and give it additional semantics as a "destination" for load or query jobs, with an overwrite
* flag set by the client upon creation.
* <p>
* Additionally provides encapsulation so that clients of BigqueryConnection don't need to take
*
* <p>Additionally provides encapsulation so that clients of BigqueryConnection don't need to take
* any direct dependencies on Bigquery API classes and can instead use DestinationTable.
*/
public static class DestinationTable {
@ -365,8 +365,8 @@ public class BigqueryConnection implements AutoCloseable {
* A function that updates the specified Bigquery table to reflect the metadata from the input
* DestinationTable, passing the same DestinationTable through as the output. If the specified
* table does not already exist, it will be inserted into the dataset.
* <p>
* Clients can call this function directly to update a table on demand, or can pass it to
*
* <p>Clients can call this function directly to update a table on demand, or can pass it to
* Futures.transform() to update a table produced as the asynchronous result of a load or query
* job (e.g. to add a description to it).
*/
@ -441,8 +441,8 @@ public class BigqueryConnection implements AutoCloseable {
* ImmutableTable object, row-keyed by the row number (indexed from 1), column-keyed by the
* TableFieldSchema for that column, and with the value object as the cell value. Note that null
* values will not actually be null, but they can be checked for using Data.isNull().
* <p>
* Returns a ListenableFuture that holds the ImmutableTable on success.
*
* <p>Returns a ListenableFuture that holds the ImmutableTable on success.
*/
public ListenableFuture<ImmutableTable<Integer, TableFieldSchema, Object>>
queryToLocalTable(String querySql) throws Exception {
@ -465,9 +465,9 @@ public class BigqueryConnection implements AutoCloseable {
* (indexed from 1), column-keyed by the TableFieldSchema for that field, and with the value
* object as the cell value. Note that null values will not actually be null (since we're using
* ImmutableTable) but they can be checked for using Data.isNull().
* <p>
* This table is fully materialized in memory (not lazily loaded), so it should not be used with
* queries expected to return large results.
*
* <p>This table is fully materialized in memory (not lazily loaded), so it should not be used
* with queries expected to return large results.
*/
private ImmutableTable<Integer, TableFieldSchema, Object> getQueryResults(Job job) {
try {
@ -555,8 +555,8 @@ public class BigqueryConnection implements AutoCloseable {
* Starts an asynchronous job to run the provided query, store the results in a temporary table,
* and then extract the contents of that table to the given GCS filepath in the specified
* destination format, optionally printing headers.
* <p>
* Returns a ListenableFuture that holds the destination GCS URI on success.
*
* <p>Returns a ListenableFuture that holds the destination GCS URI on success.
*/
public ListenableFuture<String> extractQuery(
String querySql,

View file

@ -90,14 +90,15 @@ public class BigqueryUtils {
/**
* A {@code DateTimeFormatter} that defines how to print DateTimes in a string format that
* BigQuery can interpret and how to parse the string formats that BigQuery emits into DateTimes.
* <p>
* The general format definition is "YYYY-MM-DD HH:MM:SS.SSS[ ZZ]", where the fractional seconds
* portion can have 0-6 decimal places (although we restrict it to 0-3 here since Joda DateTime
* only supports up to millisecond precision) and the zone if not specified defaults to UTC.
* <p>
* Although we expect a zone specification of "UTC" when parsing, we don't emit it when printing
* because in some cases BigQuery does not allow any time zone specification (instead it assumes
* UTC for whatever input you provide) for input timestamp strings (see b/16380363).
*
* <p>The general format definition is "YYYY-MM-DD HH:MM:SS.SSS[ ZZ]", where the fractional
* seconds portion can have 0-6 decimal places (although we restrict it to 0-3 here since Joda
* DateTime only supports up to millisecond precision) and the zone if not specified defaults to
* UTC.
*
* <p>Although we expect a zone specification of "UTC" when parsing, we don't emit it when
* printing because in some cases BigQuery does not allow any time zone specification (instead it
* assumes UTC for whatever input you provide) for input timestamp strings (see b/16380363).
*
* @see "https://developers.google.com/bigquery/timestamp"
*/

View file

@ -28,8 +28,8 @@ import javax.servlet.http.HttpServletResponse;
/**
* The {@link EppTlsServlet} class establishes a transport for EPP+TLS over* HTTP. All commands and
* responses are EPP XML according to RFC 5730. Commands must must requested via POST.
* <p>
* There are a number of expected headers to this endpoint:
*
* <p>There are a number of expected headers to this endpoint:
* <dl>
* <dt>{@value #SSL_CLIENT_CERTIFICATE_HASH_FIELD}
* <dd>

View file

@ -34,8 +34,9 @@ import java.util.Set;
/**
* An abstract EPP flow.
* <p>
* This class also contains static methods for loading an appropriate flow based on model classes.
*
* <p>This class also contains static methods for loading an appropriate flow based on model
* classes.
*/
public abstract class Flow {

View file

@ -151,9 +151,9 @@ public class FlowRegistry {
/**
* The domain restore command is technically a domain {@literal <update>}, but logically a totally
* separate flow.
* <p>
* This provider must be tried before {@link #RESOURCE_CRUD_FLOW_PROVIDER}. Otherwise, the regular
* domain update flow will match first.
*
* <p>This provider must be tried before {@link #RESOURCE_CRUD_FLOW_PROVIDER}. Otherwise, the
* regular domain update flow will match first.
*/
private static final FlowProvider DOMAIN_RESTORE_FLOW_PROVIDER = new FlowProvider() {
@Override

View file

@ -144,18 +144,18 @@ public class FlowRunner {
/**
* Helper for logging in json format.
* <p>
* This is needed because the usual json outputters perform normalizations that we don't want or
* need, since we know that our values never need to be escaped - there are only strings and
*
* <p>This is needed because the usual json outputters perform normalizations that we don't want
* or need, since we know that our values never need to be escaped - there are only strings and
* numbers, and the strings are not allowed to contain quote characters.
* <p>
* An example output for an EPP_Mutation:
* {"trid":"abc-123", "client":"some_registrar", "tld":"com", "xmlBytes":"abc123DEF"}
* <p>
* An example output for an EPP_Mutation_Committed that doesn't create a new resource:
*
* <p>An example output for an EPP_Mutation: {"trid":"abc-123", "client":"some_registrar",
* "tld":"com", "xmlBytes":"abc123DEF"}
*
* <p>An example output for an EPP_Mutation_Committed that doesn't create a new resource:
* {"trid":"abc-123", "executionTime":123456789}
* <p>
* An example output for an EPP_Mutation_Committed that creates a new resource:
*
* <p>An example output for an EPP_Mutation_Committed that creates a new resource:
* {"trid":"abc-123", "executionRepoId":123, "executionTime":123456789}
*/
private static class JsonLogStatement {

View file

@ -86,9 +86,9 @@ public class ResourceFlowUtils {
/**
* Create a pending action notification response indicating the resolution of a transfer.
* <p>
* The returned object will use the id and type of this resource, the trid of the resource's last
* transfer request, and the specified status and date.
*
* <p>The returned object will use the id and type of this resource, the trid of the resource's
* last transfer request, and the specified status and date.
*/
public static PendingActionNotificationResponse createPendingTransferNotificationResponse(
EppResource eppResource,

View file

@ -16,8 +16,8 @@ package google.registry.flows;
/**
* Marker interface indicating that a {@link Flow} needs to be run transactionally.
* <p>
* Any flow that mutates the datastore should be tagged with this so that {@link FlowRunner} will
*
* <p>Any flow that mutates the datastore should be tagged with this so that {@link FlowRunner} will
* know how to run it.
*/
public interface TransactionalFlow {}

View file

@ -142,10 +142,10 @@ public abstract class BaseDomainCreateFlow<R extends DomainBase, B extends Build
/**
* Fail the domain or application create very fast if the domain is already registered.
* <p>
* Try to load the domain non-transactionally, since this can hit memcache. If we succeed, and the
* domain is not in the ADD grace period (the only state that allows instantaneous transition to
* being deleted), we can assume that the domain will not be deleted (and therefore won't be
*
* <p>Try to load the domain non-transactionally, since this can hit memcache. If we succeed, and
* the domain is not in the ADD grace period (the only state that allows instantaneous transition
* to being deleted), we can assume that the domain will not be deleted (and therefore won't be
* creatable) until its deletion time. For repeated failed creates this means we can avoid the
* datastore lookup, which is very expensive (and first-seen failed creates are no worse than they
* otherwise would be). This comes at the cost of the extra lookup for successful creates (or

View file

@ -47,8 +47,8 @@ import org.joda.time.DateTime;
/**
* An EPP flow that approves a pending transfer on a {@link DomainResource}.
* <p>
* The logic in this flow, which handles client approvals, very closely parallels the logic in
*
* <p>The logic in this flow, which handles client approvals, very closely parallels the logic in
* {@link DomainResource#cloneProjectedAtTime} which handles implicit server approvals.
*
* @error {@link google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException}

View file

@ -184,10 +184,10 @@ public class DomainTransferRequestFlow
/**
* When a transfer is requested, schedule a billing event and poll message for the automatic
* approval case.
* <p>
* Note that the action time is AUTOMATIC_TRANSFER_DAYS in the future, matching the server policy
* on automated approval of transfers. There is no equivalent grace period added; if the transfer
* is implicitly approved, the resource will project a grace period on itself.
*
* <p>Note that the action time is AUTOMATIC_TRANSFER_DAYS in the future, matching the server
* policy on automated approval of transfers. There is no equivalent grace period added; if the
* transfer is implicitly approved, the resource will project a grace period on itself.
*/
@Override
protected Set<Key<? extends TransferServerApproveEntity>> getTransferServerApproveEntities() {

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

View file

@ -56,9 +56,10 @@ public final class XsrfTokenManager {
/**
* Generate an xsrf token for a given scope using the logged in user or else no user.
* <p>
* If there is no user, the entire xsrf check becomes basically a no-op, but that's ok because any
* callback that doesn't have a user shouldn't be able to access any per-user resources anyways.
*
* <p>If there is no user, the entire xsrf check becomes basically a no-op, but that's ok because
* any callback that doesn't have a user shouldn't be able to access any per-user resources
* anyways.
*/
public static String generateToken(String scope) {
return generateToken(scope, getLoggedInEmailOrEmpty());

View file

@ -50,9 +50,9 @@ public final class TmchCertificateAuthority {
/**
* A cached supplier that loads the crl from datastore or chooses a default value.
* <p>
* We keep the cache here rather than caching TmchCrl in the model, because loading the crl string
* into an X509CRL instance is expensive and should itself be cached.
*
* <p>We keep the cache here rather than caching TmchCrl in the model, because loading the crl
* string into an X509CRL instance is expensive and should itself be cached.
*/
private static final Supplier<X509CRL> CRL_CACHE =
memoizeWithShortExpiration(new Supplier<X509CRL>() {

View file

@ -22,9 +22,9 @@ public interface Command {
/**
* Marker interface for commands that use the remote api.
* <p>
* Just implementing this is sufficient to use the remote api; {@link RegistryTool} will install
* it as needed.
*
* <p>Just implementing this is sufficient to use the remote api; {@link RegistryTool} will
* install it as needed.
*/
public interface RemoteApiCommand extends Command {}

View file

@ -54,15 +54,14 @@ import java.util.List;
/**
* Command for creating new auction credits based on a CSV file from Pool.
* <p>
* The CSV file from the auction provider uses double-quotes around every field, so in order to
*
* <p>The CSV file from the auction provider uses double-quotes around every field, so in order to
* extract the raw field value we strip off the quotes after splitting each line by commas. We are
* using a simple parsing strategy that does not support embedded quotation marks, commas, or
* newlines.
* <p>
* TODO(b/16009815): Switch this file to using a real CSV parser.
* <p>
* Example file format:
*
* <p>Example file format:
*
* <pre>
* "Affiliate","DomainName","Email","BidderId","BidderStatus","UpdatedAt",
* "SalePrice","Commissions","CurrencyCode"
@ -71,12 +70,14 @@ import java.util.List;
* "reg2","foo.xn--q9jyb4c","email2@example.net","???_64","WIN","4/3/2014 7:13:09 PM",
* "1000.0000","40.0000","JPY"
* </pre>
* We only care about three fields: 1) the "Affiliate" field which corresponds to the registrar
* clientId stored in datastore, and which we use to determine which registrar gets the credit,
* 2) the "Commissions" field which contains the amount of the auction credit (as determined by
* logic on the auction provider's side, see the Finance Requirements Doc for more information), and
* 3) the "CurrencyCode" field, which we validate matches the TLD-wide currency for this TLD.
*
* <p>We only care about three fields: 1) the "Affiliate" field which corresponds to the registrar
* clientId stored in datastore, and which we use to determine which registrar gets the credit, 2)
* the "Commissions" field which contains the amount of the auction credit (as determined by logic
* on the auction provider's side, see the Finance Requirements Doc for more information), and 3)
* the "CurrencyCode" field, which we validate matches the TLD-wide currency for this TLD.
*/
// TODO(b/16009815): Switch this file to using a real CSV parser.
@Parameters(separators = " =", commandDescription = "Create new auction credits based on CSV")
final class CreateAuctionCreditsCommand extends MutatingCommand {

View file

@ -146,8 +146,8 @@ final class MakeBillingTablesCommand extends BigqueryCommand {
* Generates a view of registrar credit balance entities that collapses them down to the one
* 'true' credit balance for a given credit ID and effective time, eliminating any duplicates by
* choosing the most recently written balance entry of the set.
* <p>
* The result is a list of the historical balances of each credit (according to the most recent
*
* <p>The result is a list of the historical balances of each credit (according to the most recent
* data written) that can be used to find the active balance of a credit at any point in time.
*/
private void makeCreditBalanceView() throws Exception {

View file

@ -130,10 +130,10 @@ public abstract class MutatingCommand extends ConfirmingCommand implements Remot
/**
* Initializes the command.
* <p>
* Subclasses override this method to populate {@link #changedEntitiesMap} with updated
* entities. The old entity is the key and the new entity is the value; the key is null for
* newly created entities and the value is null for deleted entities.
*
* <p>Subclasses override this method to populate {@link #changedEntitiesMap} with updated
* entities. The old entity is the key and the new entity is the value; the key is null for newly
* created entities and the value is null for deleted entities.
*/
@Override
protected abstract void init() throws Exception;

View file

@ -85,8 +85,8 @@ final class UpdateApplicationStatusCommand extends MutatingCommand {
/**
* Stages changes to update the status of an application and also enqueue a poll message for the
* status change, which may contain a PendingActionNotificationResponse if this is a final status.
* <p>
* This method must be called from within a transaction.
*
* <p>This method must be called from within a transaction.
*/
private void updateApplicationStatus(String applicationId) {
ofy().assertInTransaction();

View file

@ -35,8 +35,8 @@ public final class DateTimeParameter extends ParameterConverterValidator<DateTim
* Parser for DateTimes that permits only a restricted subset of ISO 8601 datetime syntax.
* The supported format is "YYYY-MM-DD'T'HH:MM:SS[.SSS]ZZ", i.e. there must be a complete date
* and at least hours, minutes, seconds, and time zone; milliseconds are optional.
* <p>
* We use this instead of the default {@link ISODateTimeFormat#dateTimeParser()} because that
*
* <p>We use this instead of the default {@link ISODateTimeFormat#dateTimeParser()} because that
* parser is very flexible and accepts date times with missing dates, missing dates, and various
* other unspecified fields that can lead to confusion and ambiguity.
*/

View file

@ -18,8 +18,8 @@ import java.util.logging.Level;
/**
* Java logging level CLI parameter converter/validator.
* <p>
* If Level were an enum then this wouldn't be needed since JCommander has built-in conversion
*
* <p>If Level were an enum then this wouldn't be needed since JCommander has built-in conversion
* support for enums, but Level is actually just a regular class with some static instances.
*/
public final class LoggingLevelParameter extends ParameterConverterValidator<Level> {

View file

@ -30,15 +30,16 @@ import java.util.Map;
/**
* Combined converter and validator class for transition list JCommander argument strings.
* <p>
* These strings have the form {@code <DateTime>=<T-str>,[<DateTime>=<T-str>]*} where
* {@code <T-str>} is a string that can be parsed into an instance of some value type {@code T},
* and the entire argument represents a series of timed transitions of some property taking on
* those values. This class converts such a string into an ImmutableSortedMap mapping DateTime to
*
* <p>These strings have the form {@code <DateTime>=<T-str>,[<DateTime>=<T-str>]*} where
* {@code <T-str>} is a string that can be parsed into an instance of some value type {@code T}, and
* the entire argument represents a series of timed transitions of some property taking on those
* values. This class converts such a string into an ImmutableSortedMap mapping DateTime to
* {@code T}. Validation and conversion share the same logic; validation is just done by attempting
* conversion and throwing exceptions if need be.
* <p>
* Subclasses must implement parseValue() to define how to parse {@code <T-str>} into a {@code T}.
*
* <p>Subclasses must implement parseValue() to define how to parse {@code <T-str>} into a
* {@code T}.
*
* @param <T> instance value type
*/

View file

@ -76,8 +76,8 @@ public abstract class ListObjectsAction<T extends ImmutableObject> implements Ru
/**
* Returns an {@link ImmutableBiMap} that maps any field name aliases to the actual field names.
* <p>
* Users can select aliased fields for display using either the original name or the alias. By
*
* <p>Users can select aliased fields for display using either the original name or the alias. By
* default, aliased fields will use the alias name as the header instead of the original name.
*/
ImmutableBiMap<String, String> getFieldAliases() {
@ -89,11 +89,11 @@ public abstract class ListObjectsAction<T extends ImmutableObject> implements Ru
* will override, for any overlapping field names, the default behavior of getting the field
* value by looking up that field name in the map returned by
* {@link ImmutableObject#toDiffableFieldMap}.
* <p>
* This can be used to specify customized printing of certain fields (e.g. to print out a boolean
* field as "active" or "-" instead of "true" or "false"). It can also be used to add fields to
* the data, e.g. for computed fields that can be accessed from the object directly but aren't
* stored as simple fields.
*
* <p>This can be used to specify customized printing of certain fields (e.g. to print out a
* boolean field as "active" or "-" instead of "true" or "false"). It can also be used to add
* fields to the data, e.g. for computed fields that can be accessed from the object directly but
* aren't stored as simple fields.
*/
ImmutableMap<String, String> getFieldOverrides(@SuppressWarnings("unused") T object) {
return ImmutableMap.of();
@ -269,8 +269,8 @@ public abstract class ListObjectsAction<T extends ImmutableObject> implements Ru
/**
* Returns for the given column widths map a row formatting function that converts a row map (of
* column keys to cell values) into a single string with each column right-padded to that width.
* <p>
* The resulting strings separate padded fields with two spaces and each end in a newline.
*
* <p>The resulting strings separate padded fields with two spaces and each end in a newline.
*/
private static Function<Map<String, String>, String> makeRowFormatter(
final Map<String, Integer> columnWidths) {

View file

@ -57,8 +57,8 @@ import javax.servlet.http.HttpServletResponse;
/**
* A servlet that returns availability and premium checks as json.
* <p>
* This servlet returns plain JSON without a safety prefix, so it's vital that the output not be
*
* <p>This servlet returns plain JSON without a safety prefix, so it's vital that the output not be
* user controlled, lest it open an XSS vector. Do not modify this to return the domain name in the
* response.
*/

View file

@ -26,22 +26,22 @@ import java.util.concurrent.TimeUnit;
/**
* A factory for {@link TimeLimiter} instances that use request threads, which carry the namespace
* and live only as long as the request that spawned them.
* <p>
* It is safe to reuse instances of this class, but there is no benefit in doing so over creating a
* fresh instance each time.
*
* <p>It is safe to reuse instances of this class, but there is no benefit in doing so over creating
* a fresh instance each time.
*/
public class AppEngineTimeLimiter {
/**
* An {@code ExecutorService} that uses a new thread for every task.
* <p>
* We need to use fresh threads for each request so that we can use App Engine's request threads.
* If we cached these threads in a thread pool (and if we were executing on a backend, where there
* is no time limit on requests) the caching would cause the thread to keep the task that opened
* it alive even after returning an http response, and would also cause the namespace that the
* original thread was created in to leak out to later reuses of the thread.
* <p>
* Since there are no cached resources, this class doesn't have to support being shutdown.
*
* <p>We need to use fresh threads for each request so that we can use App Engine's request
* threads. If we cached these threads in a thread pool (and if we were executing on a backend,
* where there is no time limit on requests) the caching would cause the thread to keep the task
* that opened it alive even after returning an http response, and would also cause the namespace
* that the original thread was created in to leak out to later reuses of the thread.
*
* <p>Since there are no cached resources, this class doesn't have to support being shutdown.
*/
private static class NewRequestThreadExecutorService extends AbstractExecutorService {

View file

@ -113,9 +113,9 @@ public class CollectionUtils {
/**
* Turns an empty collection into a null collection.
* <p>
* This is unwise in the general case (nulls are bad; empties are good) but occasionally needed to
* cause JAXB not to emit a field, or to avoid saving something to datastore. The method name
*
* <p>This is unwise in the general case (nulls are bad; empties are good) but occasionally needed
* to cause JAXB not to emit a field, or to avoid saving something to datastore. The method name
* includes "force" to indicate that you should think twice before using it.
*/
@Nullable

View file

@ -31,10 +31,10 @@ public class DateTimeUtils {
/**
* A date in the far future that we can treat as infinity.
* <p>
* This value is (2^63-1)/1000 rounded down. AppEngine stores dates as 64 bit microseconds, but
* Java uses milliseconds, so this is the largest representable date that will survive
* a round-trip through the datastore.
*
* <p>This value is (2^63-1)/1000 rounded down. AppEngine stores dates as 64 bit microseconds, but
* Java uses milliseconds, so this is the largest representable date that will survive a
* round-trip through the datastore.
*/
public static final DateTime END_OF_TIME = new DateTime(Long.MAX_VALUE / 1000, DateTimeZone.UTC);

View file

@ -53,9 +53,9 @@ public final class X509Utils {
/**
* Parse the encoded certificate and return a base64 encoded string (without padding) of the
* SHA-256 digest of the certificate.
* <p>
* Note that this must match the method used by the GFE to generate the client certificate hash so
* that the two will match when we check against the whitelist.
*
* <p>Note that this must match the method used by the GFE to generate the client certificate hash
* so that the two will match when we check against the whitelist.
*/
public static String getCertificateHash(X509Certificate cert) {
try {

View file

@ -121,9 +121,9 @@ public class XmlTransformer {
/**
* Validates XML text against {@link #schema} without marshalling.
* <p>
* You must specify the XML class you expect to receive as the root element.
* Validation is performed in accordance with the hard-coded XML schemas.
*
* <p>You must specify the XML class you expect to receive as the root element. Validation is
* performed in accordance with the hard-coded XML schemas.
*
* @throws XmlException if XML input was invalid or root element doesn't match {@code expect}.
*/
@ -137,8 +137,8 @@ public class XmlTransformer {
/**
* Turns XML text into an object, validating against {@link #schema}.
* <p>
* You must specify the XML class you expect to receive as the root element. Validation is
*
* <p>You must specify the XML class you expect to receive as the root element. Validation is
* performed in accordance with the hard-coded XML schemas.
*
* @throws XmlException if failed to read from {@code bytes}, XML input is invalid, or root
@ -181,11 +181,11 @@ public class XmlTransformer {
/**
* Streams {@code root} without XML declaration, optionally validating against the schema.
* <p>
* The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. If the
* validation parameter is set to {@link ValidationMode#STRICT} this method will verify that your
* object strictly conforms to {@link #schema}. Because the output is streamed,
* {@link XmlException} will most likely be thrown <i>after</i> output has been written.
*
* <p>The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. If
* the validation parameter is set to {@link ValidationMode#STRICT} this method will verify that
* your object strictly conforms to {@link #schema}. Because the output is streamed, {@link
* XmlException} will most likely be thrown <i>after</i> output has been written.
*
* @param root the object to write
* @param writer to write the output to
@ -206,10 +206,10 @@ public class XmlTransformer {
/**
* Validates and streams {@code root} as formatted XML bytes with XML declaration.
* <p>
* The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. If the
* validation parameter is set to {@link ValidationMode#STRICT} this method will verify that your
* object strictly conforms to {@link #schema}. Because the output is streamed,
*
* <p>The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. If
* the validation parameter is set to {@link ValidationMode#STRICT} this method will verify that
* your object strictly conforms to {@link #schema}. Because the output is streamed,
* {@link XmlException} will most likely be thrown <i>after</i> output has been written.
*
* @param root the object to write
@ -233,11 +233,11 @@ public class XmlTransformer {
/**
* Validates and streams {@code root} as characters, always using strict validation.
* <p>
* The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. This
* method will verify that your object strictly conforms to {@link #schema}. Because the output is
* streamed, {@link XmlException} will most likely be thrown <i>after</i> output has been
* written.
*
* <p>The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}.
* This method will verify that your object strictly conforms to {@link #schema}. Because the
* output is streamed, {@link XmlException} will most likely be thrown <i>after</i> output has
* been written.
*
* @param root the object to write
* @param result to write the output to