diff --git a/java/google/registry/bigquery/BigqueryJobFailureException.java b/java/google/registry/bigquery/BigqueryJobFailureException.java
index 2c934473d..c5986567e 100644
--- a/java/google/registry/bigquery/BigqueryJobFailureException.java
+++ b/java/google/registry/bigquery/BigqueryJobFailureException.java
@@ -70,12 +70,13 @@ public final class BigqueryJobFailureException extends RuntimeException {
*
Sample Reasons
*
*
- * - {@code "duplicate"}: The table you're trying to create already exists.
- *
- {@code "invalidQuery"}: Query syntax error of some sort.
- *
- {@code "unknown"}: Non-Bigquery errors.
+ *
- {@code "duplicate"}: The table you're trying to create already exists.
+ *
- {@code "invalidQuery"}: Query syntax error of some sort.
+ *
- {@code "unknown"}: Non-Bigquery errors.
*
*
- * @see "https://cloud.google.com/bigquery/troubleshooting-errors"
+ * @see
+ * Troubleshooting Errors
*/
public String getReason() {
if (jobStatus != null) {
diff --git a/java/google/registry/bigquery/BigqueryUtils.java b/java/google/registry/bigquery/BigqueryUtils.java
index 92ad8ece1..cdef3c036 100644
--- a/java/google/registry/bigquery/BigqueryUtils.java
+++ b/java/google/registry/bigquery/BigqueryUtils.java
@@ -98,7 +98,8 @@ public class BigqueryUtils {
* 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"
+ * @see
+ * BigQuery Data Types - TIMESTAMP
*/
public static final DateTimeFormatter BIGQUERY_TIMESTAMP_FORMAT = new DateTimeFormatterBuilder()
.append(ISODateTimeFormat.date())
@@ -137,7 +138,7 @@ public class BigqueryUtils {
* Converts a time (in TimeUnits since the epoch) into a numeric string that BigQuery understands
* as a timestamp: the decimal number of seconds since the epoch, precise up to microseconds.
*
- * @see "https://developers.google.com/bigquery/timestamp"
+ * @see Data Types
*/
public static String toBigqueryTimestamp(long timestamp, TimeUnit unit) {
long seconds = unit.toSeconds(timestamp);
@@ -151,7 +152,7 @@ public class BigqueryUtils {
*
* Note that since {@code DateTime} only stores milliseconds, the last 3 digits will be zero.
*
- * @see "https://developers.google.com/bigquery/timestamp"
+ * @see Data Types
*/
public static String toBigqueryTimestamp(DateTime dateTime) {
return toBigqueryTimestamp(dateTime.getMillis(), TimeUnit.MILLISECONDS);
diff --git a/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java b/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java
index 4f83c8155..2982f5f77 100644
--- a/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java
+++ b/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java
@@ -56,7 +56,7 @@ import org.joda.time.Duration;
/**
* {@link DnsWriter} implementation that talks to Google Cloud DNS.
*
- * @see "https://cloud.google.com/dns/docs/"
+ * @see Google Cloud DNS Documentation
*/
class CloudDnsWriter implements DnsWriter {
diff --git a/java/google/registry/export/DatastoreBackupService.java b/java/google/registry/export/DatastoreBackupService.java
index 9f640ed02..51ae9cf52 100644
--- a/java/google/registry/export/DatastoreBackupService.java
+++ b/java/google/registry/export/DatastoreBackupService.java
@@ -60,7 +60,7 @@ public class DatastoreBackupService {
/**
* Generates the TaskOptions needed to trigger an AppEngine datastore backup job.
*
- * @see "https://developers.google.com/appengine/articles/scheduled_backups"
+ * @see Scheduled Backups
*/
private static TaskOptions makeTaskOptions(
String queue, String name, String gcsBucket, ImmutableSet kinds) {
diff --git a/java/google/registry/export/sheet/SheetSynchronizer.java b/java/google/registry/export/sheet/SheetSynchronizer.java
index b6702f7a8..627a01590 100644
--- a/java/google/registry/export/sheet/SheetSynchronizer.java
+++ b/java/google/registry/export/sheet/SheetSynchronizer.java
@@ -64,7 +64,7 @@ class SheetSynchronizer {
* @throws com.google.gdata.util.ResourceNotFoundException if an entry URL is not valid.
* @throws com.google.gdata.util.ServiceForbiddenException if the GData service cannot get the
* entry resource due to access constraints.
- * @see "https://developers.google.com/google-apps/spreadsheets/"
+ * @see Google Sheets API
*/
void synchronize(String spreadsheetId, ImmutableList> data)
throws IOException, ServiceException {
diff --git a/java/google/registry/flows/EppController.java b/java/google/registry/flows/EppController.java
index 98782fd05..bc18387ca 100644
--- a/java/google/registry/flows/EppController.java
+++ b/java/google/registry/flows/EppController.java
@@ -40,7 +40,7 @@ import org.json.simple.JSONValue;
/**
* An implementation of the EPP command/response protocol.
*
- * @see "http://tools.ietf.org/html/rfc5730"
+ * @see RFC 5730 - Extensible Provisioning Protocol
*/
public final class EppController {
diff --git a/java/google/registry/flows/EppXmlTransformer.java b/java/google/registry/flows/EppXmlTransformer.java
index 89c38a6d6..ad8cd5308 100644
--- a/java/google/registry/flows/EppXmlTransformer.java
+++ b/java/google/registry/flows/EppXmlTransformer.java
@@ -80,7 +80,7 @@ public class EppXmlTransformer {
* Unmarshal bytes into Epp classes.
*
* @param clazz type to return, specified as a param to enforce typesafe generics
- * @see "http://errorprone.info/bugpattern/TypeParameterUnusedInFormals"
+ * @see TypeParameterUnusedInFormals
*/
public static T unmarshal(Class clazz, byte[] bytes) throws EppException {
try {
diff --git a/java/google/registry/model/domain/DesignatedContact.java b/java/google/registry/model/domain/DesignatedContact.java
index 0712f42cf..55699d155 100644
--- a/java/google/registry/model/domain/DesignatedContact.java
+++ b/java/google/registry/model/domain/DesignatedContact.java
@@ -27,7 +27,8 @@ import javax.xml.bind.annotation.XmlValue;
/**
* XML type for contact identifiers associated with a domain.
*
- * @see "http://tools.ietf.org/html/rfc5731#section-2.2"
+ * @see
+ * RFC 5731 - EPP Domain Name Mapping- Contact and Client Identifiers
*/
@Embed
public class DesignatedContact extends ImmutableObject {
diff --git a/java/google/registry/model/domain/ForeignKeyedDesignatedContact.java b/java/google/registry/model/domain/ForeignKeyedDesignatedContact.java
index 611017e75..288eaacef 100644
--- a/java/google/registry/model/domain/ForeignKeyedDesignatedContact.java
+++ b/java/google/registry/model/domain/ForeignKeyedDesignatedContact.java
@@ -22,7 +22,8 @@ import javax.xml.bind.annotation.XmlValue;
* EPP-compatible version of XML type for contact identifiers associated with a domain, which can
* be converted to a storable {@link DesignatedContact}.
*
- * @see "http://tools.ietf.org/html/rfc5731#section-2.2"
+ * @see
+ * RFC 5731 - EPP Domain Name Mapping - Contact and Client Identifiers
*/
class ForeignKeyedDesignatedContact extends ImmutableObject {
@XmlAttribute(required = true)
diff --git a/java/google/registry/model/domain/fee/BaseFee.java b/java/google/registry/model/domain/fee/BaseFee.java
index 650929f7e..a065b2b9c 100644
--- a/java/google/registry/model/domain/fee/BaseFee.java
+++ b/java/google/registry/model/domain/fee/BaseFee.java
@@ -105,7 +105,8 @@ public abstract class BaseFee extends ImmutableObject {
* must always be negative. Essentially, they are the same thing, just with different sign.
* However, we need them to be separate classes for proper JAXB handling.
*
- * @see "https://tools.ietf.org/html/draft-brown-epp-fees-03#section-2.4"
+ * @see
+ * Registry Fee Extension for EPP - Fees and Credits
*/
public BigDecimal getCost() {
return cost;
diff --git a/java/google/registry/model/domain/launch/ApplicationStatus.java b/java/google/registry/model/domain/launch/ApplicationStatus.java
index 65b1fc11d..52941b390 100644
--- a/java/google/registry/model/domain/launch/ApplicationStatus.java
+++ b/java/google/registry/model/domain/launch/ApplicationStatus.java
@@ -31,7 +31,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
*
* 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"
+ * @see
+ * Launch Phase Mapping for EPP - Status Values
*/
@XmlJavaTypeAdapter(EnumToAttributeAdapter.class)
public enum ApplicationStatus implements EppEnum {
diff --git a/java/google/registry/model/domain/rgp/GracePeriodStatus.java b/java/google/registry/model/domain/rgp/GracePeriodStatus.java
index 6b3d4abae..26285750e 100644
--- a/java/google/registry/model/domain/rgp/GracePeriodStatus.java
+++ b/java/google/registry/model/domain/rgp/GracePeriodStatus.java
@@ -23,7 +23,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
* Represents a Registry Grace Period status, as defined by
* RFC 3915.
*
- * @see "https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en"
+ * @see EPP Status
+ * Codes
*/
@XmlJavaTypeAdapter(EnumToAttributeAdapter.class)
public enum GracePeriodStatus implements EppEnum {
diff --git a/java/google/registry/model/eppcommon/StatusValue.java b/java/google/registry/model/eppcommon/StatusValue.java
index 1f46a8ea0..a27b59c69 100644
--- a/java/google/registry/model/eppcommon/StatusValue.java
+++ b/java/google/registry/model/eppcommon/StatusValue.java
@@ -32,7 +32,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
*
Note that {@code StatusValue.LINKED} should never be stored. Rather, it should be calculated
* on the fly whenever needed using an eventually consistent query (i.e. in info flows).
*
- * @see "https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en"
+ * @see EPP Status
+ * Codes
*/
@XmlJavaTypeAdapter(StatusValueAdapter.class)
public enum StatusValue implements EppEnum {
diff --git a/java/google/registry/model/eppinput/EppInput.java b/java/google/registry/model/eppinput/EppInput.java
index ec485394c..97c56e45c 100644
--- a/java/google/registry/model/eppinput/EppInput.java
+++ b/java/google/registry/model/eppinput/EppInput.java
@@ -398,7 +398,8 @@ public class EppInput extends ImmutableObject {
* any other version doesn't validate. As a result, if we didn't do this here it would throw a
* {@code SyntaxErrorException} when it failed to validate.
*
- * @see "http://tools.ietf.org/html/rfc5730#page-41"
+ * @see
+ * RFC 5730 - EPP - Command error responses
*/
public static class VersionAdapter extends XmlAdapter {
@Override
diff --git a/java/google/registry/model/eppoutput/EppResponse.java b/java/google/registry/model/eppoutput/EppResponse.java
index 9ed84c4a6..49352ba89 100644
--- a/java/google/registry/model/eppoutput/EppResponse.java
+++ b/java/google/registry/model/eppoutput/EppResponse.java
@@ -77,7 +77,8 @@ import javax.xml.bind.annotation.XmlType;
* client. EPP commands are atomic, so a command will either succeed completely or fail completely.
* Success and failure results MUST NOT be mixed."
*
- * @see "http://tools.ietf.org/html/rfc5730#section-2.6"
+ * @see
+ * RFC 5730 - EPP - Response Format
*/
@XmlType(propOrder = {"result", "messageQueueInfo", "resData", "extensions", "trid"})
public class EppResponse extends ImmutableObject implements ResponseOrGreeting {
diff --git a/java/google/registry/model/eppoutput/Result.java b/java/google/registry/model/eppoutput/Result.java
index 272fd14cd..2a8d838f8 100644
--- a/java/google/registry/model/eppoutput/Result.java
+++ b/java/google/registry/model/eppoutput/Result.java
@@ -132,7 +132,8 @@ public class Result extends ImmutableObject {
/**
* An RFC 4646 language code.
*
- * @see "http://tools.ietf.org/html/rfc4646"
+ * @see
+ * RFC 4646 - Tags for Identifying Languages
*/
public final String msgLang;
diff --git a/java/google/registry/model/ofy/CommitLogBucket.java b/java/google/registry/model/ofy/CommitLogBucket.java
index 5c1f781f5..cf7d26355 100644
--- a/java/google/registry/model/ofy/CommitLogBucket.java
+++ b/java/google/registry/model/ofy/CommitLogBucket.java
@@ -41,12 +41,13 @@ import org.joda.time.DateTime;
/**
* Root for a random commit log bucket.
*
- * This is used to shard {@link CommitLogManifest} objects into
- * {@link google.registry.config.RegistryConfig#getCommitLogBucketCount() N} entity
- * groups. This increases transaction throughput, while maintaining the ability to perform
- * strongly-consistent ancestor queries.
+ *
This is used to shard {@link CommitLogManifest} objects into {@link
+ * google.registry.config.RegistryConfig#getCommitLogBucketCount() N} entity groups. This increases
+ * transaction throughput, while maintaining the ability to perform strongly-consistent ancestor
+ * queries.
*
- * @see "https://cloud.google.com/appengine/articles/scaling/contention"
+ * @see Avoiding datastore
+ * contention
*/
@Entity
@NotBackedUp(reason = Reason.COMMIT_LOGS)
diff --git a/java/google/registry/model/poll/PollMessage.java b/java/google/registry/model/poll/PollMessage.java
index e5b34c0da..5360190ea 100644
--- a/java/google/registry/model/poll/PollMessage.java
+++ b/java/google/registry/model/poll/PollMessage.java
@@ -68,7 +68,8 @@ import org.joda.time.DateTime;
*
Poll messages are identified externally by registrars using the format defined in {@link
* PollMessageExternalKeyConverter}.
*
- * @see "https://tools.ietf.org/html/rfc5730#section-2.9.2.3"
+ * @see
+ * RFC5730 - EPP - <poll> Command
*/
@Entity
@ExternalMessagingName("message")
diff --git a/java/google/registry/model/rde/RdeMode.java b/java/google/registry/model/rde/RdeMode.java
index e496822e9..7eb46eaee 100644
--- a/java/google/registry/model/rde/RdeMode.java
+++ b/java/google/registry/model/rde/RdeMode.java
@@ -28,7 +28,7 @@ public enum RdeMode {
*
This mode of operation provides ICANN with minimal information about registered domains
* and their associated registrars, per gTLD Registry Agreement, Specification 4 ยง 3.1.
*
- * @see "http://newgtlds.icann.org/en/applicants/agb/agreement-approved-09jan14-en.htm"
+ * @see Registry Agreement
*/
THIN;
diff --git a/java/google/registry/model/registrar/Registrar.java b/java/google/registry/model/registrar/Registrar.java
index 315a493ce..b534694d9 100644
--- a/java/google/registry/model/registrar/Registrar.java
+++ b/java/google/registry/model/registrar/Registrar.java
@@ -117,7 +117,7 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable
/**
* Predicate for validating IANA IDs for this type of registrar.
*
- * @see "http://www.iana.org/assignments/registrar-ids/registrar-ids.txt"
+ * @see Registrar IDs
*/
private final Predicate ianaIdValidator;
@@ -186,7 +186,7 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable
/**
* Unique registrar client id. Must conform to "clIDType" as defined in RFC5730.
- * @see "http://tools.ietf.org/html/rfc5730#section-4.2"
+ * @see Shared Structure Schema
*/
@Id
String clientIdentifier;
@@ -199,7 +199,7 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable
* formally enforced in our datastore, but should be enforced by ICANN in that no two registrars
* will be accredited with the same name.
*
- * @see "http://www.icann.org/registrar-reports/accredited-list.html"
+ * @see ICANN-Accredited Registrars
*/
@Index
String registrarName;
@@ -284,7 +284,7 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable
* 9997 is used by ICAAN for SLA monitoring.
* 9999 is used for cases when the registry operator acts as registrar.
*
- * @see "http://www.iana.org/assignments/registrar-ids/registrar-ids.txt"
+ * @see Registrar IDs
*/
@Index
Long ianaIdentifier;
diff --git a/java/google/registry/model/smd/SignedMarkRevocationList.java b/java/google/registry/model/smd/SignedMarkRevocationList.java
index 3230240f3..19a38abcb 100644
--- a/java/google/registry/model/smd/SignedMarkRevocationList.java
+++ b/java/google/registry/model/smd/SignedMarkRevocationList.java
@@ -59,7 +59,8 @@ import org.joda.time.DateTime;
* 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"
+ * @see
+ * TMCH functional specifications - SMD Revocation List
*/
@Entity
@NotBackedUp(reason = Reason.EXTERNALLY_SOURCED)
diff --git a/java/google/registry/monitoring/metrics/StackdriverWriter.java b/java/google/registry/monitoring/metrics/StackdriverWriter.java
index 0f82077b5..3bfa615d2 100644
--- a/java/google/registry/monitoring/metrics/StackdriverWriter.java
+++ b/java/google/registry/monitoring/metrics/StackdriverWriter.java
@@ -63,7 +63,8 @@ import org.joda.time.format.ISODateTimeFormat;
* CPU, it buffers points to be written until it has {@code maxPointsPerRequest} points buffered or
* until {@link #flush()} is called.
*
- * @see https://cloud.google.com/monitoring/api/v3/
+ * @see Introduction to the Stackdriver
+ * Monitoring API
*/
// TODO(shikhman): add retry logic
@NotThreadSafe
diff --git a/java/google/registry/rdap/RdapIcannStandardInformation.java b/java/google/registry/rdap/RdapIcannStandardInformation.java
index 00b2cef6b..7bea78e0c 100644
--- a/java/google/registry/rdap/RdapIcannStandardInformation.java
+++ b/java/google/registry/rdap/RdapIcannStandardInformation.java
@@ -20,7 +20,7 @@ import com.google.common.collect.ImmutableMap;
/**
* This file contains boilerplate required by the ICANN RDAP Profile.
*
- * @see "https://www.icann.org/resources/pages/rdap-operational-profile-2016-07-26-en"
+ * @see RDAP Operational Profile for gTLD Registries and Registrars
*/
public class RdapIcannStandardInformation {
@@ -75,7 +75,7 @@ public class RdapIcannStandardInformation {
/**
* Required by ICANN RDAP Profile section 1.4.9, as corrected by Gustavo Lozano of ICANN.
*
- * @see "http://mm.icann.org/pipermail/gtld-tech/2016-October/000822.html"
+ * @see Questions about the ICANN RDAP Profile
*/
static final ImmutableMap SUMMARY_DATA_REMARK =
ImmutableMap. of(
@@ -90,7 +90,7 @@ public class RdapIcannStandardInformation {
/**
* Required by ICANN RDAP Profile section 1.4.8, as corrected by Gustavo Lozano of ICANN.
*
- * @see "http://mm.icann.org/pipermail/gtld-tech/2016-October/000822.html"
+ * @see Questions about the ICANN RDAP Profile
*/
static final ImmutableMap TRUNCATED_RESULT_SET_NOTICE =
ImmutableMap. of(
diff --git a/java/google/registry/rde/BrdaCopyAction.java b/java/google/registry/rde/BrdaCopyAction.java
index 90beb32c6..717f0497e 100644
--- a/java/google/registry/rde/BrdaCopyAction.java
+++ b/java/google/registry/rde/BrdaCopyAction.java
@@ -50,7 +50,7 @@ import org.joda.time.DateTime;
* This bucket is special because a separate script will rsync it to the third party escrow provider
* SFTP server. This is why the internal staging files are stored in the separate RDE bucket.
*
- * @see "http://newgtlds.icann.org/en/applicants/agb/agreement-approved-09jan14-en.htm"
+ * @see Registry Agreement
*/
@Action(path = BrdaCopyAction.PATH, method = POST, automaticallyPrintOk = true)
public final class BrdaCopyAction implements Runnable {
diff --git a/java/google/registry/rde/RdeReporter.java b/java/google/registry/rde/RdeReporter.java
index b21e14f56..27fcd414b 100644
--- a/java/google/registry/rde/RdeReporter.java
+++ b/java/google/registry/rde/RdeReporter.java
@@ -55,7 +55,8 @@ public class RdeReporter {
private static final FormattingLogger logger = FormattingLogger.getLoggerForCallerClass();
- /** @see "http://tools.ietf.org/html/draft-lozano-icann-registry-interfaces-05#section-4" */
+ /** @see
+ * ICANN Registry Interfaces - Interface details*/
private static final String REPORT_MIME = "text/xml";
@Inject RegistryConfig config;
@@ -102,7 +103,8 @@ public class RdeReporter {
/**
* Unmarshals IIRDEA XML result object from {@link HTTPResponse} payload.
*
- * @see "http://tools.ietf.org/html/draft-lozano-icann-registry-interfaces-05#section-4.1"
+ * @see
+ * ICANN Registry Interfaces - IIRDEA Result Object
*/
private XjcIirdeaResult parseResult(HTTPResponse rsp) throws XmlException {
byte[] responseBytes = rsp.getContent();
diff --git a/java/google/registry/rde/RdeStagingAction.java b/java/google/registry/rde/RdeStagingAction.java
index 748ce3105..550902dbb 100644
--- a/java/google/registry/rde/RdeStagingAction.java
+++ b/java/google/registry/rde/RdeStagingAction.java
@@ -150,8 +150,8 @@ import org.joda.time.Duration;
* guarantee referential correctness of your deposits, you must never delete a registrar entity.
*
*
- * @see "https://tools.ietf.org/html/draft-arias-noguchi-registry-data-escrow-06"
- * @see "https://tools.ietf.org/html/draft-arias-noguchi-dnrd-objects-mapping-05"
+ * @see Registry Data Escrow Specification
+ * @see Domain Name Registration Data Objects Mapping
*/
@Action(path = "/_dr/task/rdeStaging")
public final class RdeStagingAction implements Runnable {
diff --git a/java/google/registry/tldconfig/idn/IdnTable.java b/java/google/registry/tldconfig/idn/IdnTable.java
index c3a9fe944..bc03c669e 100644
--- a/java/google/registry/tldconfig/idn/IdnTable.java
+++ b/java/google/registry/tldconfig/idn/IdnTable.java
@@ -40,7 +40,8 @@ public final class IdnTable {
/**
* Public URL of this IDN table, which is needed by RDE.
*
- * @see "https://tools.ietf.org/html/draft-arias-noguchi-dnrd-objects-mapping-05#section-5.5.1.1"
+ * @see
+ * DNRD Objects Mapping - <rdeIDN:idnTableRef> object
*/
private final URI url;
diff --git a/java/google/registry/tmch/ClaimsListParser.java b/java/google/registry/tmch/ClaimsListParser.java
index d633094b8..93c019849 100644
--- a/java/google/registry/tmch/ClaimsListParser.java
+++ b/java/google/registry/tmch/ClaimsListParser.java
@@ -28,7 +28,8 @@ import org.joda.time.DateTime;
* This is a quick and dirty CSV parser made specifically for the DNL CSV format defined in the
* TMCH specification. It doesn't support any fancy CSV features like quotes.
*
- * @see "http://tools.ietf.org/html/draft-lozano-tmch-func-spec-08#section-6.1"
+ * @see
+ * TMCH functional specifications - DNL List file
*/
public class ClaimsListParser {
diff --git a/java/google/registry/tmch/LordnLog.java b/java/google/registry/tmch/LordnLog.java
index 1380d974a..796bc5eb9 100644
--- a/java/google/registry/tmch/LordnLog.java
+++ b/java/google/registry/tmch/LordnLog.java
@@ -33,7 +33,8 @@ import org.joda.time.DateTime;
/**
* Parser of LORDN log responses from the MarksDB server during the NORDN process.
*
- * @see "http://tools.ietf.org/html/draft-lozano-tmch-func-spec-08#section-6.3.1"
+ * @see
+ * TMCH functional specifications - LORDN Log File
*/
@Immutable
public final class LordnLog implements Iterable> {
diff --git a/java/google/registry/tmch/NordnUploadAction.java b/java/google/registry/tmch/NordnUploadAction.java
index 03ec19dbb..c6bdd4425 100644
--- a/java/google/registry/tmch/NordnUploadAction.java
+++ b/java/google/registry/tmch/NordnUploadAction.java
@@ -121,7 +121,8 @@ public final class NordnUploadAction implements Runnable {
* Idempotency: If the exact same LORDN report is uploaded twice, the MarksDB server will
* return the same confirmation number.
*
- * @see "http://tools.ietf.org/html/draft-lozano-tmch-func-spec-08#section-6.3"
+ * @see
+ * TMCH functional specifications - LORDN File
*/
private void uploadCsvToLordn(String urlPath, String csvData) throws IOException {
String url = tmchMarksdbUrl + urlPath;
diff --git a/java/google/registry/tmch/NordnVerifyAction.java b/java/google/registry/tmch/NordnVerifyAction.java
index 130b42a13..0e8383d0a 100644
--- a/java/google/registry/tmch/NordnVerifyAction.java
+++ b/java/google/registry/tmch/NordnVerifyAction.java
@@ -88,7 +88,8 @@ public final class NordnVerifyAction implements Runnable {
* available.
*
* @throws ConflictException if MarksDB has not yet finished processing the LORDN upload
- * @see "http://tools.ietf.org/html/draft-lozano-tmch-func-spec-08#section-6.3.1"
+ * @see
+ * TMCH functional specifications LORDN Log File
*/
@VisibleForTesting
LordnLog verify() throws IOException {
diff --git a/java/google/registry/tmch/SmdrlCsvParser.java b/java/google/registry/tmch/SmdrlCsvParser.java
index daf6a401d..a5ef0ead8 100644
--- a/java/google/registry/tmch/SmdrlCsvParser.java
+++ b/java/google/registry/tmch/SmdrlCsvParser.java
@@ -29,7 +29,8 @@ import org.joda.time.DateTime;
*
This is a quick and dirty CSV parser made specifically for the SMDRL CSV format defined in
* the TMCH specification. It doesn't support any fancy CSV features like quotes.
*
- * @see "http://tools.ietf.org/html/draft-lozano-tmch-func-spec-08#section-6.2"
+ * @see
+ * TMCH functional specifications - SMD Revocation List
*/
public final class SmdrlCsvParser {
diff --git a/java/google/registry/tools/BigqueryParameters.java b/java/google/registry/tools/BigqueryParameters.java
index 2e4dbc95d..de9bd15e0 100644
--- a/java/google/registry/tools/BigqueryParameters.java
+++ b/java/google/registry/tools/BigqueryParameters.java
@@ -36,7 +36,7 @@ final class BigqueryParameters {
/**
* Default to 20 threads to stay within Bigquery's rate limit of 20 concurrent queries.
*
- * @see "https://cloud.google.com/bigquery/quota-policy"
+ * @see BigQuery Quota Policy
*/
private static final int DEFAULT_NUM_THREADS = 20;
diff --git a/java/google/registry/ui/forms/FormFields.java b/java/google/registry/ui/forms/FormFields.java
index ffebec3d8..2a4e47975 100644
--- a/java/google/registry/ui/forms/FormFields.java
+++ b/java/google/registry/ui/forms/FormFields.java
@@ -41,7 +41,7 @@ public final class FormFields {
*
*
This trims the input and collapses whitespace.
*
- * @see "http://www.w3.org/TR/xmlschema11-2/#token"
+ * @see XSD Datatypes - token
*/
public static final FormField XS_TOKEN = FormField.named("xsToken")
.emptyToNull()
@@ -52,7 +52,8 @@ public final class FormFields {
/**
* Form field that ensures input does not contain tabs, line feeds, or carriage returns.
*
- * @see "http://www.w3.org/TR/xmlschema11-2/#normalizedString"
+ * @see
+ * XSD Datatypes - normalizedString
*/
public static final FormField XS_NORMALIZED_STRING =
FormField.named("xsNormalizedString")
@@ -63,7 +64,7 @@ public final class FormFields {
/**
* Form field for +E164 phone numbers with a dot after the country prefix.
*
- * @see "http://tools.ietf.org/html/rfc5733#section-4"
+ * @see RFC 5733 - EPP - Formal Syntax
*/
public static final FormField PHONE_NUMBER =
XS_TOKEN.asBuilderNamed("phoneNumber")
@@ -113,7 +114,7 @@ public final class FormFields {
/**
* Ensure value is an EPP Repository Object IDentifier (ROID).
*
- * @see "http://tools.ietf.org/html/rfc5730#section-4.2"
+ * @see Shared Structure Schema
*/
public static final FormField ROID = XS_TOKEN.asBuilderNamed("roid")
.matches(Pattern.compile("(\\w|_){1,80}-\\w{1,8}"),
diff --git a/java/google/registry/ui/server/StateCode.java b/java/google/registry/ui/server/StateCode.java
index abeadbe20..233a67bb2 100644
--- a/java/google/registry/ui/server/StateCode.java
+++ b/java/google/registry/ui/server/StateCode.java
@@ -19,7 +19,7 @@ import com.google.common.collect.ImmutableBiMap;
/**
* Bimap of state codes and names for the US Regime.
*
- * @see "http://statetable.com/"
+ * @see State Table
*/
public final class StateCode {
diff --git a/java/google/registry/ui/server/registrar/RegistrarPaymentAction.java b/java/google/registry/ui/server/registrar/RegistrarPaymentAction.java
index ef5d2285f..93d63ebae 100644
--- a/java/google/registry/ui/server/registrar/RegistrarPaymentAction.java
+++ b/java/google/registry/ui/server/registrar/RegistrarPaymentAction.java
@@ -207,8 +207,10 @@ public final class RegistrarPaymentAction implements Runnable, JsonAction {
/**
* Handles a transaction success response.
*
- * @see "https://developers.braintreepayments.com/reference/response/transaction/java#success"
- * @see "https://developers.braintreepayments.com/reference/general/statuses#transaction"
+ * @see
+ * Braintree - Transaction - Success
+ * @see
+ * Braintree - Statuses - Transaction
*/
private Map handleSuccessResponse(Transaction transaction) {
// XXX: Currency scaling: https://github.com/braintree/braintree_java/issues/33
@@ -232,8 +234,10 @@ public final class RegistrarPaymentAction implements Runnable, JsonAction {
*
* This happens when the customer's bank blocks the transaction.
*
- * @see "https://developers.braintreepayments.com/reference/response/transaction/java#processor-declined"
- * @see "https://articles.braintreepayments.com/control-panel/transactions/declines"
+ * @see
+ * Braintree - Transaction - Processor declined
+ * @see
+ * Braintree - Transactions/Declines
*/
private Map handleProcessorDeclined(Transaction transaction) {
logger.warningfmt("Processor declined: %s %s",
@@ -248,8 +252,10 @@ public final class RegistrarPaymentAction implements Runnable, JsonAction {
* This is a very rare condition that, for all intents and purposes, means the same thing as a
* processor declined response.
*
- * @see "https://developers.braintreepayments.com/reference/response/transaction/java#processor-settlement-declined"
- * @see "https://articles.braintreepayments.com/control-panel/transactions/declines"
+ * @see
+ * Braintree - Transaction - Processor settlement declined
+ * @see
+ * Braintree - Transactions/Declines
*/
private Map handleSettlementDecline(Transaction transaction) {
logger.warningfmt("Settlement declined: %s %s",
@@ -265,10 +271,14 @@ public final class RegistrarPaymentAction implements Runnable, JsonAction {
* This happens when a transaction is blocked due to settings we configured ourselves in the
* Braintree control panel.
*
- * @see "https://developers.braintreepayments.com/reference/response/transaction/java#gateway-rejection"
- * @see "https://articles.braintreepayments.com/control-panel/transactions/gateway-rejections"
- * @see "https://articles.braintreepayments.com/guides/fraud-tools/avs-cvv"
- * @see "https://articles.braintreepayments.com/guides/fraud-tools/overview"
+ * @see
+ * Braintree - Transaction - Gateway rejection
+ * @see
+ * Braintree - Transactions/Gateway Rejections
+ * @see
+ * Braintree - Fruad Tools/Basic Fraud Tools - AVS and CVV rules
+ * @see
+ * Braintree - Fraud Tools/Overview
*/
private Map handleRejection(Transaction transaction) {
logger.warningfmt("Gateway rejection: %s", transaction.getGatewayRejectionReason());
@@ -306,8 +316,10 @@ public final class RegistrarPaymentAction implements Runnable, JsonAction {
/**
* Handles a validation error response from Braintree.
*
- * @see "https://developers.braintreepayments.com/reference/response/transaction/java#validation-errors"
- * @see "https://developers.braintreepayments.com/reference/general/validation-errors/all/java"
+ * @see
+ * Braintree - Transaction - Validation errors
+ * @see
+ * Braintree - Validation Errors/All
*/
private Map handleValidationErrorResponse(ValidationErrors validationErrors) {
List errors = validationErrors.getAllDeepValidationErrors();
diff --git a/java/google/registry/ui/server/registrar/RegistrarPaymentSetupAction.java b/java/google/registry/ui/server/registrar/RegistrarPaymentSetupAction.java
index 43a06607b..0ba964fbb 100644
--- a/java/google/registry/ui/server/registrar/RegistrarPaymentSetupAction.java
+++ b/java/google/registry/ui/server/registrar/RegistrarPaymentSetupAction.java
@@ -61,7 +61,7 @@ import org.joda.money.CurrencyUnit;
* {@code registry.rpc.PaymentSetup} which must be updated should these definitions change.
*
* @see RegistrarPaymentAction
- * @see "https://developers.braintreepayments.com/start/hello-server/java#generate-a-client-token"
+ * @see Generate a client token
*/
@Action(
path = "/registrar-payment-setup",
diff --git a/java/google/registry/util/PredicateUtils.java b/java/google/registry/util/PredicateUtils.java
index 8629fe602..84e104aff 100644
--- a/java/google/registry/util/PredicateUtils.java
+++ b/java/google/registry/util/PredicateUtils.java
@@ -23,7 +23,7 @@ public class PredicateUtils {
* A predicate for a given class X that checks if tested classes are supertypes of X.
*
* We need our own predicate because Guava's class predicates are backwards.
- * @see "https://github.com/google/guava/issues/1444"
+ * @see Guava issue #1444
*/
private static class SupertypeOfPredicate implements Predicate> {
diff --git a/java/google/registry/util/UrlFetchUtils.java b/java/google/registry/util/UrlFetchUtils.java
index 81c479995..c7064c3fb 100644
--- a/java/google/registry/util/UrlFetchUtils.java
+++ b/java/google/registry/util/UrlFetchUtils.java
@@ -64,7 +64,7 @@ public final class UrlFetchUtils {
*
* This is equivalent to running the command: {@code curl -F fieldName=@payload.txt URL}
*
- * @see "http://www.ietf.org/rfc/rfc2388.txt"
+ * @see RFC2388 - Returning Values from Forms
*/
public static void setPayloadMultipart(
HTTPRequest request, String name, String filename, MediaType contentType, T data) {
diff --git a/java/google/registry/xml/XmlTransformer.java b/java/google/registry/xml/XmlTransformer.java
index c5d4dd33e..338a30afd 100644
--- a/java/google/registry/xml/XmlTransformer.java
+++ b/java/google/registry/xml/XmlTransformer.java
@@ -140,7 +140,7 @@ public class XmlTransformer {
* element doesn't match {@code expect}.
* @see com.google.common.io.Files#asByteSource
* @see com.google.common.io.Resources#asByteSource
- * @see "http://errorprone.info/bugpattern/TypeParameterUnusedInFormals"
+ * @see TypeParameterUnusedInFormals
*/
public T unmarshal(Class clazz, InputStream stream) throws XmlException {
try (InputStream autoClosingStream = stream) {
diff --git a/javatests/google/registry/request/RequestHandlerTest.java b/javatests/google/registry/request/RequestHandlerTest.java
index e9361de09..e2cab9df9 100644
--- a/javatests/google/registry/request/RequestHandlerTest.java
+++ b/javatests/google/registry/request/RequestHandlerTest.java
@@ -249,7 +249,8 @@ public final class RequestHandlerTest {
verify(rsp).sendError(405);
}
- /** @see "http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.1" */
+ /** @see
+ * RFC2616 - HTTP/1.1 - Method */
@Test
public void testHandleRequest_lowercaseMethod_notRecognized() throws Exception {
when(req.getMethod()).thenReturn("get");
diff --git a/javatests/google/registry/testing/DatastoreHelper.java b/javatests/google/registry/testing/DatastoreHelper.java
index 1632d99ba..f3aeae223 100644
--- a/javatests/google/registry/testing/DatastoreHelper.java
+++ b/javatests/google/registry/testing/DatastoreHelper.java
@@ -909,8 +909,6 @@ public class DatastoreHelper {
/**
* Like persistResource but for multiple entities, with no helper for saving
* ForeignKeyedEppResources.
- *
- * @see "http://docs.objectify-appengine.googlecode.com/git/apidocs/com/googlecode/objectify/cmd/Loader.htmls#entities(java.lang.Iterable)"
*/
public static ImmutableList persistSimpleResources(final Iterable resources) {
ofy().transact(new VoidWork(){