diff --git a/java/google/registry/cron/TldFanoutAction.java b/java/google/registry/cron/TldFanoutAction.java index 821f01983..49190c4a0 100644 --- a/java/google/registry/cron/TldFanoutAction.java +++ b/java/google/registry/cron/TldFanoutAction.java @@ -171,7 +171,7 @@ public final class TldFanoutAction implements Runnable { } for (String param : params.keySet()) { // TaskOptions.param() does not accept null values. - options.param(param, nullToEmpty((getFirst(params.get(param), null)))); + options.param(param, nullToEmpty(getFirst(params.get(param), null))); } return options; } diff --git a/java/google/registry/flows/contact/ContactCreateFlow.java b/java/google/registry/flows/contact/ContactCreateFlow.java index a6ff170bc..0266db61e 100644 --- a/java/google/registry/flows/contact/ContactCreateFlow.java +++ b/java/google/registry/flows/contact/ContactCreateFlow.java @@ -31,7 +31,6 @@ import google.registry.flows.TransactionalFlow; import google.registry.flows.annotations.ReportingSpec; import google.registry.model.contact.ContactCommand.Create; import google.registry.model.contact.ContactResource; -import google.registry.model.contact.ContactResource.Builder; import google.registry.model.domain.metadata.MetadataExtension; import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.CreateData.ContactCreateData; @@ -71,19 +70,20 @@ public final class ContactCreateFlow implements TransactionalFlow { Create command = (Create) resourceCommand; DateTime now = ofy().getTransactionTime(); verifyResourceDoesNotExist(ContactResource.class, targetId, now); - ContactResource newContact = new Builder() - .setContactId(targetId) - .setAuthInfo(command.getAuthInfo()) - .setCreationClientId(clientId) - .setPersistedCurrentSponsorClientId(clientId) - .setRepoId(createRepoId(ObjectifyService.allocateId(), roidSuffix)) - .setFaxNumber(command.getFax()) - .setVoiceNumber(command.getVoice()) - .setDisclose(command.getDisclose()) - .setEmailAddress(command.getEmail()) - .setInternationalizedPostalInfo(command.getInternationalizedPostalInfo()) - .setLocalizedPostalInfo(command.getLocalizedPostalInfo()) - .build(); + ContactResource newContact = + new ContactResource.Builder() + .setContactId(targetId) + .setAuthInfo(command.getAuthInfo()) + .setCreationClientId(clientId) + .setPersistedCurrentSponsorClientId(clientId) + .setRepoId(createRepoId(ObjectifyService.allocateId(), roidSuffix)) + .setFaxNumber(command.getFax()) + .setVoiceNumber(command.getVoice()) + .setDisclose(command.getDisclose()) + .setEmailAddress(command.getEmail()) + .setInternationalizedPostalInfo(command.getInternationalizedPostalInfo()) + .setLocalizedPostalInfo(command.getLocalizedPostalInfo()) + .build(); validateAsciiPostalInfo(newContact.getInternationalizedPostalInfo()); validateContactAgainstPolicy(newContact); historyBuilder diff --git a/java/google/registry/flows/contact/ContactUpdateFlow.java b/java/google/registry/flows/contact/ContactUpdateFlow.java index facbf9338..34cb11733 100644 --- a/java/google/registry/flows/contact/ContactUpdateFlow.java +++ b/java/google/registry/flows/contact/ContactUpdateFlow.java @@ -39,7 +39,6 @@ import google.registry.flows.exceptions.ResourceHasClientUpdateProhibitedExcepti import google.registry.model.contact.ContactCommand.Update; import google.registry.model.contact.ContactCommand.Update.Change; import google.registry.model.contact.ContactResource; -import google.registry.model.contact.ContactResource.Builder; import google.registry.model.contact.PostalInfo; import google.registry.model.domain.metadata.MetadataExtension; import google.registry.model.eppcommon.AuthInfo; @@ -109,7 +108,7 @@ public final class ContactUpdateFlow implements TransactionalFlow { .setXmlBytes(null) // We don't want to store contact details in the history entry. .setParent(Key.create(existingContact)); checkSameValuesNotAddedAndRemoved(statusesToAdd, statusToRemove); - Builder builder = existingContact.asBuilder(); + ContactResource.Builder builder = existingContact.asBuilder(); Change change = command.getInnerChange(); // The spec requires the following behaviors: // * If you update part of a postal info, the fields that you didn't update are unchanged. diff --git a/java/google/registry/flows/domain/DomainDeleteFlow.java b/java/google/registry/flows/domain/DomainDeleteFlow.java index c4dbd007b..fff780979 100644 --- a/java/google/registry/flows/domain/DomainDeleteFlow.java +++ b/java/google/registry/flows/domain/DomainDeleteFlow.java @@ -62,7 +62,6 @@ import google.registry.flows.custom.EntityChanges; import google.registry.model.ImmutableObject; import google.registry.model.billing.BillingEvent; import google.registry.model.domain.DomainBase; -import google.registry.model.domain.DomainBase.Builder; import google.registry.model.domain.GracePeriod; import google.registry.model.domain.fee.BaseFee.FeeType; import google.registry.model.domain.fee.Credit; @@ -149,7 +148,7 @@ public final class DomainDeleteFlow implements TransactionalFlow { flowCustomLogic.afterValidation( AfterValidationParameters.newBuilder().setExistingDomain(existingDomain).build()); ImmutableSet.Builder entitiesToSave = new ImmutableSet.Builder<>(); - Builder builder; + DomainBase.Builder builder; if (existingDomain.getStatusValues().contains(StatusValue.PENDING_TRANSFER)) { builder = denyPendingTransfer(existingDomain, TransferStatus.SERVER_CANCELLED, now, clientId) diff --git a/java/google/registry/flows/domain/DomainRestoreRequestFlow.java b/java/google/registry/flows/domain/DomainRestoreRequestFlow.java index 197e550e0..1dd507f4d 100644 --- a/java/google/registry/flows/domain/DomainRestoreRequestFlow.java +++ b/java/google/registry/flows/domain/DomainRestoreRequestFlow.java @@ -46,7 +46,6 @@ import google.registry.flows.annotations.ReportingSpec; import google.registry.model.ImmutableObject; import google.registry.model.billing.BillingEvent; import google.registry.model.billing.BillingEvent.OneTime; -import google.registry.model.billing.BillingEvent.OneTime.Builder; import google.registry.model.billing.BillingEvent.Reason; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainCommand.Update; @@ -258,7 +257,7 @@ public final class DomainRestoreRequestFlow implements TransactionalFlow { .build(); } - private Builder prepareBillingEvent(HistoryEntry historyEntry, Money cost, DateTime now) { + private OneTime.Builder prepareBillingEvent(HistoryEntry historyEntry, Money cost, DateTime now) { return new BillingEvent.OneTime.Builder() .setTargetId(targetId) .setClientId(clientId) diff --git a/java/google/registry/flows/domain/DomainTransferApproveFlow.java b/java/google/registry/flows/domain/DomainTransferApproveFlow.java index 713cce753..d8881ae52 100644 --- a/java/google/registry/flows/domain/DomainTransferApproveFlow.java +++ b/java/google/registry/flows/domain/DomainTransferApproveFlow.java @@ -191,7 +191,7 @@ public final class DomainTransferApproveFlow implements TransactionalFlow { .setAutorenewPollMessage(Key.create(gainingClientAutorenewPollMessage)) // Remove all the old grace periods and add a new one for the transfer. .setGracePeriods( - (billingEvent.isPresent()) + billingEvent.isPresent() ? ImmutableSet.of( GracePeriod.forBillingEvent(GracePeriodStatus.TRANSFER, billingEvent.get())) : ImmutableSet.of()) diff --git a/java/google/registry/flows/host/HostCreateFlow.java b/java/google/registry/flows/host/HostCreateFlow.java index 504addb2e..47aee1798 100644 --- a/java/google/registry/flows/host/HostCreateFlow.java +++ b/java/google/registry/flows/host/HostCreateFlow.java @@ -45,7 +45,6 @@ import google.registry.model.eppoutput.CreateData.HostCreateData; import google.registry.model.eppoutput.EppResponse; import google.registry.model.host.HostCommand.Create; import google.registry.model.host.HostResource; -import google.registry.model.host.HostResource.Builder; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.ForeignKeyIndex; import google.registry.model.ofy.ObjectifyService; @@ -119,7 +118,7 @@ public final class HostCreateFlow implements TransactionalFlow { : new UnexpectedExternalHostIpException(); } HostResource newHost = - new Builder() + new HostResource.Builder() .setCreationClientId(clientId) .setPersistedCurrentSponsorClientId(clientId) .setFullyQualifiedHostName(targetId) diff --git a/java/google/registry/flows/host/HostInfoFlow.java b/java/google/registry/flows/host/HostInfoFlow.java index 692eceb24..3d602eab5 100644 --- a/java/google/registry/flows/host/HostInfoFlow.java +++ b/java/google/registry/flows/host/HostInfoFlow.java @@ -32,7 +32,6 @@ import google.registry.model.domain.DomainBase; import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppoutput.EppResponse; import google.registry.model.host.HostInfoData; -import google.registry.model.host.HostInfoData.Builder; import google.registry.model.host.HostResource; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.util.Clock; @@ -72,7 +71,7 @@ public final class HostInfoFlow implements Flow { if (isLinked(Key.create(host), now)) { statusValues.add(StatusValue.LINKED); } - Builder hostInfoDataBuilder = HostInfoData.newBuilder(); + HostInfoData.Builder hostInfoDataBuilder = HostInfoData.newBuilder(); // Hosts transfer with their superordinate domains, so for hosts with a superordinate domain, // the client id, last transfer time, and pending transfer status need to be read off of it. If // there is no superordinate domain, the host's own values for these fields will be correct. diff --git a/java/google/registry/gcs/GcsUtils.java b/java/google/registry/gcs/GcsUtils.java index 0f5dd3424..a159bfb17 100644 --- a/java/google/registry/gcs/GcsUtils.java +++ b/java/google/registry/gcs/GcsUtils.java @@ -18,7 +18,6 @@ import static com.google.common.collect.Iterables.getLast; import com.google.appengine.tools.cloudstorage.GcsFileMetadata; import com.google.appengine.tools.cloudstorage.GcsFileOptions; -import com.google.appengine.tools.cloudstorage.GcsFileOptions.Builder; import com.google.appengine.tools.cloudstorage.GcsFilename; import com.google.appengine.tools.cloudstorage.GcsService; import com.google.appengine.tools.cloudstorage.ListOptions; @@ -113,7 +112,7 @@ public class GcsUtils { /** Determines most appropriate {@link GcsFileOptions} based on filename extension. */ private static GcsFileOptions getOptions(GcsFilename filename) { - Builder builder = new GcsFileOptions.Builder().cacheControl("no-cache"); + GcsFileOptions.Builder builder = new GcsFileOptions.Builder().cacheControl("no-cache"); MediaType mediaType = EXTENSIONS.get(getLast(Splitter.on('.').split(filename.getObjectName()))); if (mediaType != null) { builder = builder.mimeType(mediaType.type()); diff --git a/java/google/registry/keyring/kms/KmsConnectionImpl.java b/java/google/registry/keyring/kms/KmsConnectionImpl.java index d4b469e99..c163263ea 100644 --- a/java/google/registry/keyring/kms/KmsConnectionImpl.java +++ b/java/google/registry/keyring/kms/KmsConnectionImpl.java @@ -47,11 +47,11 @@ class KmsConnectionImpl implements KmsConnection { @Inject KmsConnectionImpl( @Config("cloudKmsProjectId") String projectId, - @Config("cloudKmsKeyRing") String kmsKeyringName, + @Config("cloudKmsKeyRing") String kmsKeyRingName, Retrier retrier, CloudKMS kms) { this.projectId = projectId; - this.kmsKeyRingName = kmsKeyringName; + this.kmsKeyRingName = kmsKeyRingName; this.retrier = retrier; this.kms = kms; } diff --git a/java/google/registry/model/EppResourceUtils.java b/java/google/registry/model/EppResourceUtils.java index ea3be47c8..fa4faeae4 100644 --- a/java/google/registry/model/EppResourceUtils.java +++ b/java/google/registry/model/EppResourceUtils.java @@ -28,7 +28,6 @@ import com.googlecode.objectify.Result; import com.googlecode.objectify.cmd.Query; import com.googlecode.objectify.util.ResultNow; import google.registry.config.RegistryConfig; -import google.registry.model.EppResource.Builder; import google.registry.model.EppResource.BuilderWithTransferData; import google.registry.model.EppResource.ForeignKeyedEppResource; import google.registry.model.EppResource.ResourceWithTransferData; @@ -222,7 +221,7 @@ public final class EppResourceUtils { } /** Process an automatic transfer on a resource. */ - public static & BuilderWithTransferData> + public static & BuilderWithTransferData> void setAutomaticTransferSuccessProperties(B builder, TransferData transferData) { checkArgument(TransferStatus.PENDING.equals(transferData.getTransferStatus())); builder.removeStatusValue(StatusValue.PENDING_TRANSFER) @@ -239,14 +238,15 @@ public final class EppResourceUtils { /** * Perform common operations for projecting an {@link EppResource} at a given time: + * *
    *
  • Process an automatic transfer. *
*/ public static < - T extends EppResource & ResourceWithTransferData, - B extends Builder & BuilderWithTransferData> - void projectResourceOntoBuilderAtTime(T resource, B builder, DateTime now) { + T extends EppResource & ResourceWithTransferData, + B extends EppResource.Builder & BuilderWithTransferData> + void projectResourceOntoBuilderAtTime(T resource, B builder, DateTime now) { TransferData transferData = resource.getTransferData(); // If there's a pending transfer that has expired, process it. DateTime expirationTime = transferData.getPendingTransferExpirationTime(); @@ -289,7 +289,7 @@ public final class EppResourceUtils { // and returns it projected forward to exactly the desired timestamp, or null if the resource is // deleted at that timestamp. final Result loadResult = - (isAtOrAfter(timestamp, resource.getUpdateAutoTimestamp().getTimestamp())) + isAtOrAfter(timestamp, resource.getUpdateAutoTimestamp().getTimestamp()) ? new ResultNow<>(resource) : loadMostRecentRevisionAtTime(resource, timestamp); return () -> { diff --git a/java/google/registry/model/ResourceTransferUtils.java b/java/google/registry/model/ResourceTransferUtils.java index 017e57aa2..fcc90dd37 100644 --- a/java/google/registry/model/ResourceTransferUtils.java +++ b/java/google/registry/model/ResourceTransferUtils.java @@ -23,7 +23,6 @@ import static google.registry.model.ofy.ObjectifyService.ofy; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; -import google.registry.model.EppResource.Builder; import google.registry.model.EppResource.BuilderWithTransferData; import google.registry.model.EppResource.ForeignKeyedEppResource; import google.registry.model.EppResource.ResourceWithTransferData; @@ -170,7 +169,7 @@ public final class ResourceTransferUtils { */ public static < R extends EppResource & ResourceWithTransferData, - B extends Builder & BuilderWithTransferData> + B extends EppResource.Builder & BuilderWithTransferData> R approvePendingTransfer(R resource, TransferStatus transferStatus, DateTime now) { checkArgument(transferStatus.isApproved(), "Not an approval transfer status"); B builder = resolvePendingTransfer(resource, transferStatus, now); diff --git a/java/google/registry/model/domain/GracePeriod.java b/java/google/registry/model/domain/GracePeriod.java index 27cd16d08..76c1b42b4 100644 --- a/java/google/registry/model/domain/GracePeriod.java +++ b/java/google/registry/model/domain/GracePeriod.java @@ -100,7 +100,8 @@ public class GracePeriod extends ImmutableObject { @Nullable Key billingEventRecurring) { checkArgument((billingEventOneTime == null) || (billingEventRecurring == null), "A grace period can have at most one billing event"); - checkArgument((billingEventRecurring != null) == (GracePeriodStatus.AUTO_RENEW.equals(type)), + checkArgument( + (billingEventRecurring != null) == GracePeriodStatus.AUTO_RENEW.equals(type), "Recurring billing events must be present on (and only on) autorenew grace periods"); GracePeriod instance = new GracePeriod(); instance.type = checkArgumentNotNull(type); diff --git a/java/google/registry/model/eppinput/ResourceCommand.java b/java/google/registry/model/eppinput/ResourceCommand.java index d0a7a67de..f6158f986 100644 --- a/java/google/registry/model/eppinput/ResourceCommand.java +++ b/java/google/registry/model/eppinput/ResourceCommand.java @@ -19,7 +19,7 @@ import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import google.registry.model.Buildable.Builder; +import google.registry.model.Buildable; import google.registry.model.EppResource; import google.registry.model.ImmutableObject; import google.registry.model.eppcommon.AuthInfo; @@ -82,7 +82,7 @@ public interface ResourceCommand { } /** A create command, or the inner change (as opposed to add or remove) part of an update. */ - interface ResourceCreateOrChange> {} + interface ResourceCreateOrChange> {} /** * An update command for an {@link EppResource}. diff --git a/java/google/registry/model/host/HostResource.java b/java/google/registry/model/host/HostResource.java index 8e8d79ced..d00b94d7e 100644 --- a/java/google/registry/model/host/HostResource.java +++ b/java/google/registry/model/host/HostResource.java @@ -149,7 +149,7 @@ public class HostResource extends EppResource implements ForeignKeyedEppResource Optional.ofNullable(getLastSuperordinateChange()).orElse(getCreationTime()); DateTime lastTransferOfCurrentSuperordinate = Optional.ofNullable(superordinateDomain.getLastTransferTime()).orElse(START_OF_TIME); - return (lastSuperordinateChange.isBefore(lastTransferOfCurrentSuperordinate)) + return lastSuperordinateChange.isBefore(lastTransferOfCurrentSuperordinate) ? superordinateDomain.getLastTransferTime() : getLastTransferTime(); } diff --git a/java/google/registry/model/index/EppResourceIndexBucket.java b/java/google/registry/model/index/EppResourceIndexBucket.java index bbd472394..5ccd703d6 100644 --- a/java/google/registry/model/index/EppResourceIndexBucket.java +++ b/java/google/registry/model/index/EppResourceIndexBucket.java @@ -41,7 +41,7 @@ public class EppResourceIndexBucket extends ImmutableObject { private static long getBucketIdFromEppResource(Key resourceKey) { int numBuckets = getEppResourceIndexBucketCount(); // IDs can't be 0, so add 1 to the hash. - return Hashing.consistentHash(resourceKey.getName().hashCode(), numBuckets) + 1; + return Hashing.consistentHash(resourceKey.getName().hashCode(), numBuckets) + 1L; } /** Gets a bucket key as a function of an EppResource to be indexed. */ diff --git a/java/google/registry/model/registrar/Registrar.java b/java/google/registry/model/registrar/Registrar.java index b32208444..46bc37295 100644 --- a/java/google/registry/model/registrar/Registrar.java +++ b/java/google/registry/model/registrar/Registrar.java @@ -130,8 +130,10 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable /** * Predicate for validating IANA IDs for this type of registrar. * - * @see Registrar IDs + * @see Registrar + * IDs */ + @SuppressWarnings("ImmutableEnumChecker") private final Predicate ianaIdValidator; Type(Predicate ianaIdValidator) { diff --git a/java/google/registry/rde/ContactResourceToXjcConverter.java b/java/google/registry/rde/ContactResourceToXjcConverter.java index e9773097f..53bb40fcf 100644 --- a/java/google/registry/rde/ContactResourceToXjcConverter.java +++ b/java/google/registry/rde/ContactResourceToXjcConverter.java @@ -36,6 +36,7 @@ import google.registry.xjc.eppcom.XjcEppcomTrStatusType; import google.registry.xjc.rdecontact.XjcRdeContact; import google.registry.xjc.rdecontact.XjcRdeContactElement; import google.registry.xjc.rdecontact.XjcRdeContactTransferDataType; +import java.util.Objects; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -101,7 +102,7 @@ final class ContactResourceToXjcConverter { // required before an automated response action will be taken by // the registry. For all other status types, the value identifies // the date and time when the request was completed. - if (model.getTransferData() != TransferData.EMPTY) { + if (!Objects.equals(model.getTransferData(), TransferData.EMPTY)) { bean.setTrnData(convertTransferData(model.getTransferData())); } diff --git a/java/google/registry/rde/RdeResourceType.java b/java/google/registry/rde/RdeResourceType.java index 31c58fda9..d22383ab1 100644 --- a/java/google/registry/rde/RdeResourceType.java +++ b/java/google/registry/rde/RdeResourceType.java @@ -17,12 +17,11 @@ package google.registry.rde; import static google.registry.model.rde.RdeMode.FULL; import static google.registry.model.rde.RdeMode.THIN; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Ordering; import google.registry.model.rde.RdeMode; -import java.util.Collections; import java.util.EnumSet; -import java.util.Set; /** Types of objects that get embedded in an escrow deposit. */ public enum RdeResourceType { @@ -34,11 +33,11 @@ public enum RdeResourceType { HEADER("urn:ietf:params:xml:ns:rdeHeader-1.0", EnumSet.of(FULL, THIN)); private final String uri; - private final Set modes; + private final ImmutableSet modes; RdeResourceType(String uri, EnumSet modes) { this.uri = uri; - this.modes = Collections.unmodifiableSet(modes); + this.modes = ImmutableSet.copyOf(modes); } /** Returns RDE XML schema URI specifying resource. */ @@ -47,7 +46,7 @@ public enum RdeResourceType { } /** Returns set indicating if resource is stored in BRDA thin deposits. */ - public Set getModes() { + public ImmutableSet getModes() { return modes; } diff --git a/java/google/registry/rde/RdeUploadUrl.java b/java/google/registry/rde/RdeUploadUrl.java index 11be206ff..2cb226067 100644 --- a/java/google/registry/rde/RdeUploadUrl.java +++ b/java/google/registry/rde/RdeUploadUrl.java @@ -164,8 +164,7 @@ final class RdeUploadUrl implements Comparable { @Override public boolean equals(@Nullable Object object) { return object == this - || object instanceof RdeUploadUrl - && Objects.equals(uri, ((RdeUploadUrl) object).uri); + || (object instanceof RdeUploadUrl && Objects.equals(uri, ((RdeUploadUrl) object).uri)); } /** @see java.net.URI#hashCode() */ @@ -200,9 +199,9 @@ final class RdeUploadUrl implements Comparable { @Override public boolean equals(@Nullable Object object) { return object == this - || object instanceof Protocol - && port == ((Protocol) object).port - && Objects.equals(name, ((Protocol) object).name); + || (object instanceof Protocol + && port == ((Protocol) object).port + && Objects.equals(name, ((Protocol) object).name)); } /** @see Object#hashCode() */ diff --git a/java/google/registry/reporting/billing/CopyDetailReportsAction.java b/java/google/registry/reporting/billing/CopyDetailReportsAction.java index 7bb6ae321..08f118d93 100644 --- a/java/google/registry/reporting/billing/CopyDetailReportsAction.java +++ b/java/google/registry/reporting/billing/CopyDetailReportsAction.java @@ -20,7 +20,9 @@ import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; import static javax.servlet.http.HttpServletResponse.SC_OK; import com.google.appengine.tools.cloudstorage.GcsFilename; +import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; import com.google.common.flogger.FluentLogger; import com.google.common.io.ByteStreams; import com.google.common.net.MediaType; @@ -96,7 +98,7 @@ public final class CopyDetailReportsAction implements Runnable { for (String detailReportName : detailReportObjectNames) { // The standard report format is "invoice_details_yyyy-MM_registrarId_tld.csv // TODO(larryruili): Determine a safer way of enforcing this. - String registrarId = detailReportName.split("_")[3]; + String registrarId = Iterables.get(Splitter.on('_').split(detailReportName), 3); Optional registrar = Registrar.loadByClientId(registrarId); if (!registrar.isPresent()) { logger.atWarning().log( diff --git a/java/google/registry/tldconfig/idn/BUILD b/java/google/registry/tldconfig/idn/BUILD index 745eb4462..e05c44e5f 100644 --- a/java/google/registry/tldconfig/idn/BUILD +++ b/java/google/registry/tldconfig/idn/BUILD @@ -11,6 +11,7 @@ java_library( deps = [ "//java/google/registry/util", "//third_party/objectify:objectify-v4_1", + "@com_google_errorprone_error_prone_annotations", "@com_google_guava", "@com_google_re2j", ], diff --git a/java/google/registry/tldconfig/idn/IdnTable.java b/java/google/registry/tldconfig/idn/IdnTable.java index 7e8a44c92..b8587cacc 100644 --- a/java/google/registry/tldconfig/idn/IdnTable.java +++ b/java/google/registry/tldconfig/idn/IdnTable.java @@ -19,13 +19,14 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.Range; -import com.google.common.collect.RangeSet; +import com.google.errorprone.annotations.Immutable; import com.google.re2j.Matcher; import com.google.re2j.Pattern; import java.net.URI; import java.util.Optional; /** An IDN table for a particular TLD. */ +@Immutable public final class IdnTable { /** Regular expression to match a line of an IDN table. */ @@ -48,8 +49,8 @@ public final class IdnTable { /** Public URL of policy for this IDN table, which is needed by RDE. */ private final URI policy; - /** {@link RangeSet} containing the valid codepoints in this table. */ - private final RangeSet validCodepoints; + /** {@link ImmutableRangeSet} containing the valid codepoints in this table. */ + private final ImmutableRangeSet validCodepoints; /** Validates the language rules associated with this IDN table. */ private final Optional languageValidator; @@ -58,7 +59,7 @@ public final class IdnTable { String name, URI url, URI policy, - RangeSet validCodepoints, + ImmutableRangeSet validCodepoints, Optional languageValidator) { this.name = name; this.url = checkNotNull(url, "%s missing '# URL: http://foo.example/page' line", name); diff --git a/java/google/registry/tldconfig/idn/JapaneseLanguageValidator.java b/java/google/registry/tldconfig/idn/JapaneseLanguageValidator.java index f2584bd10..55a97c433 100644 --- a/java/google/registry/tldconfig/idn/JapaneseLanguageValidator.java +++ b/java/google/registry/tldconfig/idn/JapaneseLanguageValidator.java @@ -22,12 +22,15 @@ import static java.lang.Character.UnicodeBlock.KATAKANA; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; +import com.google.errorprone.annotations.Immutable; import java.lang.Character.UnicodeBlock; +import java.util.Objects; /** * Validates Japanese language domain labels. This class should only be used with a Japanese * language IDN table. */ +@Immutable class JapaneseLanguageValidator extends LanguageValidator { /** Any string with Japanese characters can have at most 15 characters. */ @@ -82,7 +85,8 @@ class JapaneseLanguageValidator extends LanguageValidator { // The KATAKANA_HIRAGANA_PROLONGED_SOUND_MARK can only occur after a HIRAGANA or KATAKANA // character. if (codepoint == KATAKANA_HIRAGANA_PROLONGED_SOUND_MARK - && precedingUnicodeBlock != HIRAGANA && precedingUnicodeBlock != KATAKANA) { + && !Objects.equals(precedingUnicodeBlock, HIRAGANA) + && !Objects.equals(precedingUnicodeBlock, KATAKANA)) { return false; } diff --git a/java/google/registry/tldconfig/idn/LanguageValidator.java b/java/google/registry/tldconfig/idn/LanguageValidator.java index f8d27462d..0b59e58ba 100644 --- a/java/google/registry/tldconfig/idn/LanguageValidator.java +++ b/java/google/registry/tldconfig/idn/LanguageValidator.java @@ -15,8 +15,10 @@ package google.registry.tldconfig.idn; import com.google.common.collect.ImmutableMap; +import com.google.errorprone.annotations.Immutable; import java.util.Optional; +@Immutable abstract class LanguageValidator { /** A registry of all known language validators keyed by their language code. */ diff --git a/java/google/registry/tools/CanonicalizeLabelsCommand.java b/java/google/registry/tools/CanonicalizeLabelsCommand.java index c3bc0774b..87637df34 100644 --- a/java/google/registry/tools/CanonicalizeLabelsCommand.java +++ b/java/google/registry/tools/CanonicalizeLabelsCommand.java @@ -48,9 +48,10 @@ final class CanonicalizeLabelsCommand implements Command { @Override public void run() throws IOException { Set labels = new TreeSet<>(); - for (String label : mainParameters.isEmpty() - ? CharStreams.readLines(new InputStreamReader(stdin)) - : Files.readLines(new File(mainParameters.get(0)), UTF_8)) { + for (String label : + mainParameters.isEmpty() + ? CharStreams.readLines(new InputStreamReader(stdin, UTF_8)) + : Files.readLines(new File(mainParameters.get(0)), UTF_8)) { label = label.trim(); if (label.startsWith("-")) { label = label.substring(1); diff --git a/java/google/registry/tools/CommandUtilities.java b/java/google/registry/tools/CommandUtilities.java index 808680401..90e474455 100644 --- a/java/google/registry/tools/CommandUtilities.java +++ b/java/google/registry/tools/CommandUtilities.java @@ -35,7 +35,7 @@ class CommandUtilities { HOST(HostResource.class), DOMAIN(DomainBase.class); - private Class clazz; + private final Class clazz; ResourceType(Class clazz) { this.clazz = clazz; diff --git a/java/google/registry/tools/LoggingParameters.java b/java/google/registry/tools/LoggingParameters.java index 474dd3b17..ba6f9626b 100644 --- a/java/google/registry/tools/LoggingParameters.java +++ b/java/google/registry/tools/LoggingParameters.java @@ -15,6 +15,7 @@ package google.registry.tools; import static google.registry.util.ResourceUtils.readResourceBytes; +import static java.nio.charset.StandardCharsets.UTF_8; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; @@ -67,7 +68,7 @@ final class LoggingParameters { // Add an extra leading newline in case base properties file does not end in a newline. String customProperties = "\n" + Joiner.on('\n').join(configLines); ByteSource logConfig = - ByteSource.concat(baseConfig, ByteSource.wrap(customProperties.getBytes())); + ByteSource.concat(baseConfig, ByteSource.wrap(customProperties.getBytes(UTF_8))); try (InputStream input = logConfig.openStream()) { LogManager.getLogManager().readConfiguration(input); } diff --git a/java/google/registry/tools/RegistrarContactCommand.java b/java/google/registry/tools/RegistrarContactCommand.java index 9ffcc24a8..671640871 100644 --- a/java/google/registry/tools/RegistrarContactCommand.java +++ b/java/google/registry/tools/RegistrarContactCommand.java @@ -32,7 +32,6 @@ import com.google.common.collect.ImmutableSet; import google.registry.model.common.GaeUserIdConverter; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarContact; -import google.registry.model.registrar.RegistrarContact.Builder; import google.registry.tools.params.OptionalPhoneNumberParameter; import google.registry.tools.params.PathParameter; import java.io.IOException; @@ -235,7 +234,7 @@ final class RegistrarContactCommand extends MutatingCommand { private RegistrarContact createContact(Registrar registrar) { checkArgument(!isNullOrEmpty(name), "--name is required when --mode=CREATE"); checkArgument(!isNullOrEmpty(email), "--email is required when --mode=CREATE"); - Builder builder = new RegistrarContact.Builder(); + RegistrarContact.Builder builder = new RegistrarContact.Builder(); builder.setParent(registrar); builder.setName(name); builder.setEmailAddress(email); @@ -267,7 +266,7 @@ final class RegistrarContactCommand extends MutatingCommand { private RegistrarContact updateContact(RegistrarContact contact, Registrar registrar) { checkNotNull(registrar); checkNotNull(email, "--email is required when --mode=UPDATE"); - Builder builder = contact.asBuilder(); + RegistrarContact.Builder builder = contact.asBuilder(); builder.setParent(registrar); if (!isNullOrEmpty(name)) { builder.setName(name); diff --git a/java/google/registry/tools/UpdateReservedListCommand.java b/java/google/registry/tools/UpdateReservedListCommand.java index 6d6ab0a2b..027b85d19 100644 --- a/java/google/registry/tools/UpdateReservedListCommand.java +++ b/java/google/registry/tools/UpdateReservedListCommand.java @@ -21,7 +21,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; import com.beust.jcommander.Parameters; import com.google.common.base.Strings; import google.registry.model.registry.label.ReservedList; -import google.registry.model.registry.label.ReservedList.Builder; import google.registry.util.SystemClock; import java.nio.file.Files; import java.util.Optional; @@ -36,10 +35,12 @@ final class UpdateReservedListCommand extends CreateOrUpdateReservedListCommand Optional existing = ReservedList.get(name); checkArgument( existing.isPresent(), "Could not update reserved list %s because it doesn't exist.", name); - Builder updated = existing.get() - .asBuilder() - .setReservedListMapFromLines(Files.readAllLines(input, UTF_8)) - .setLastUpdateTime(new SystemClock().nowUtc()); + ReservedList.Builder updated = + existing + .get() + .asBuilder() + .setReservedListMapFromLines(Files.readAllLines(input, UTF_8)) + .setLastUpdateTime(new SystemClock().nowUtc()); if (shouldPublish != null) { updated.setShouldPublish(shouldPublish); } diff --git a/java/google/registry/tools/ValidateEscrowDepositCommand.java b/java/google/registry/tools/ValidateEscrowDepositCommand.java index 4e224ebc4..e589660d7 100644 --- a/java/google/registry/tools/ValidateEscrowDepositCommand.java +++ b/java/google/registry/tools/ValidateEscrowDepositCommand.java @@ -15,12 +15,12 @@ package google.registry.tools; import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.ImmutableList.copyOf; import static com.google.common.collect.Sets.difference; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Ordering; import google.registry.keyring.api.Keyring; import google.registry.rde.Ghostryde; @@ -40,7 +40,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedMap; @@ -141,17 +140,19 @@ final class ValidateEscrowDepositCommand implements Command { } System.out.println(); boolean good = true; - List badHostnameRefs = copyOf(difference(hostnameRefs, hostnames)); + ImmutableList badHostnameRefs = + ImmutableList.copyOf(difference(hostnameRefs, hostnames)); if (!badHostnameRefs.isEmpty()) { System.out.printf("Bad host refs: %s\n", Joiner.on(", ").join(badHostnameRefs)); good = false; } - List badContactRefs = copyOf(difference(contactRefs, contacts)); + ImmutableList badContactRefs = ImmutableList.copyOf(difference(contactRefs, contacts)); if (!badContactRefs.isEmpty()) { System.out.printf("Bad contact refs: %s\n", Joiner.on(", ").join(badContactRefs)); good = false; } - List badRegistrarRefs = copyOf(difference(registrarRefs, registrars)); + ImmutableList badRegistrarRefs = + ImmutableList.copyOf(difference(registrarRefs, registrars)); if (!badRegistrarRefs.isEmpty()) { System.out.printf("Bad registrar refs: %s\n", Joiner.on(", ").join(badRegistrarRefs)); good = false; diff --git a/java/google/registry/tools/javascrap/PopulateNullRegistrarFieldsCommand.java b/java/google/registry/tools/javascrap/PopulateNullRegistrarFieldsCommand.java index 96105db0c..2d7276952 100644 --- a/java/google/registry/tools/javascrap/PopulateNullRegistrarFieldsCommand.java +++ b/java/google/registry/tools/javascrap/PopulateNullRegistrarFieldsCommand.java @@ -21,7 +21,6 @@ import static google.registry.model.ofy.ObjectifyService.ofy; import com.beust.jcommander.Parameters; import com.google.common.collect.ImmutableList; import google.registry.model.registrar.Registrar; -import google.registry.model.registrar.Registrar.Builder; import google.registry.model.registrar.RegistrarAddress; import google.registry.tools.MutatingCommand; import java.util.Objects; @@ -40,7 +39,7 @@ public class PopulateNullRegistrarFieldsCommand extends MutatingCommand { @Override protected void init() { for (Registrar registrar : ofy().load().type(Registrar.class).ancestor(getCrossTldKey())) { - Builder changeBuilder = registrar.asBuilder(); + Registrar.Builder changeBuilder = registrar.asBuilder(); changeBuilder.setRegistrarName( firstNonNull(registrar.getRegistrarName(), registrar.getClientId())); diff --git a/java/google/registry/tools/server/GenerateZoneFilesAction.java b/java/google/registry/tools/server/GenerateZoneFilesAction.java index 8eb95f742..634c93dfb 100644 --- a/java/google/registry/tools/server/GenerateZoneFilesAction.java +++ b/java/google/registry/tools/server/GenerateZoneFilesAction.java @@ -101,6 +101,7 @@ public class GenerateZoneFilesAction implements Runnable, JsonActionRunner.JsonA @Inject @Config("gcsBufferSize") int gcsBufferSize; @Inject @Config("commitLogDatastoreRetention") Duration datastoreRetention; @Inject @Config("dnsDefaultATtl") Duration dnsDefaultATtl; + @SuppressWarnings("DurationVariableWithUnits") // false-positive Error Prone check @Inject @Config("dnsDefaultNsTtl") Duration dnsDefaultNsTtl; @Inject @Config("dnsDefaultDsTtl") Duration dnsDefaultDsTtl; @Inject Clock clock; @@ -291,14 +292,15 @@ public class GenerateZoneFilesAction implements Runnable, JsonActionRunner.JsonA loadAtPointInTime(nameserver, exportTime).now().getFullyQualifiedHostName())); } for (DelegationSignerData dsData : domain.getDsData()) { - result.append(String.format( - DS_FORMAT, - domainLabel, - dnsDefaultDsTtl.getStandardSeconds(), - dsData.getKeyTag(), - dsData.getAlgorithm(), - dsData.getDigestType(), - base16().encode((dsData.getDigest())))); + result.append( + String.format( + DS_FORMAT, + domainLabel, + dnsDefaultDsTtl.getStandardSeconds(), + dsData.getKeyTag(), + dsData.getAlgorithm(), + dsData.getDigestType(), + base16().encode(dsData.getDigest()))); } return result.toString(); } diff --git a/java/google/registry/ui/forms/FormFieldException.java b/java/google/registry/ui/forms/FormFieldException.java index 0f2dec5b8..f7023aeda 100644 --- a/java/google/registry/ui/forms/FormFieldException.java +++ b/java/google/registry/ui/forms/FormFieldException.java @@ -156,10 +156,10 @@ public final class FormFieldException extends FormException { @Override public boolean equals(@Nullable Object obj) { return this == obj - || obj instanceof FormFieldException - && Objects.equals(getCause(), ((FormFieldException) obj).getCause()) - && Objects.equals(getMessage(), ((FormFieldException) obj).getMessage()) - && Objects.equals(names, ((FormFieldException) obj).names); + || (obj instanceof FormFieldException + && Objects.equals(getCause(), ((FormFieldException) obj).getCause()) + && Objects.equals(getMessage(), ((FormFieldException) obj).getMessage()) + && Objects.equals(names, ((FormFieldException) obj).names)); } @Override diff --git a/java/google/registry/util/CidrAddressBlock.java b/java/google/registry/util/CidrAddressBlock.java index c7e3cda1f..de20650fd 100644 --- a/java/google/registry/util/CidrAddressBlock.java +++ b/java/google/registry/util/CidrAddressBlock.java @@ -450,7 +450,7 @@ public class CidrAddressBlock implements Iterable, Serializable { } InetAddress next = InetAddresses.increment(previous); - return (contains(next)) ? next : null; + return contains(next) ? next : null; } }; } diff --git a/java/google/registry/util/DiffUtils.java b/java/google/registry/util/DiffUtils.java index 596eb60c3..ddc734648 100644 --- a/java/google/registry/util/DiffUtils.java +++ b/java/google/registry/util/DiffUtils.java @@ -138,7 +138,7 @@ public final class DiffUtils { && ((DiffPair) value).b instanceof Set) { DiffPair pair = ((DiffPair) value); String prettyLineDiff = prettyPrintSetDiff((Set) pair.a, (Set) pair.b) + "\n"; - output = newPath + ((prettyLineDiff.startsWith("\n")) ? ":" : ": ") + prettyLineDiff; + output = newPath + (prettyLineDiff.startsWith("\n") ? ":" : ": ") + prettyLineDiff; } else { output = newPath + ": " + value + "\n"; } diff --git a/java/google/registry/util/PosixTarHeader.java b/java/google/registry/util/PosixTarHeader.java index cf984e996..6ec20fc9b 100644 --- a/java/google/registry/util/PosixTarHeader.java +++ b/java/google/registry/util/PosixTarHeader.java @@ -279,9 +279,9 @@ public final class PosixTarHeader { @Override public boolean equals(@Nullable Object rhs) { return rhs == this - || rhs != null - && getClass() == rhs.getClass() - && Arrays.equals(header, ((PosixTarHeader) rhs).header); + || (rhs != null + && getClass() == rhs.getClass() + && Arrays.equals(header, ((PosixTarHeader) rhs).header)); } /** @see Arrays#toString(byte[]) */ diff --git a/java/google/registry/util/XmlEnumUtils.java b/java/google/registry/util/XmlEnumUtils.java index ad8045773..49d0ea404 100644 --- a/java/google/registry/util/XmlEnumUtils.java +++ b/java/google/registry/util/XmlEnumUtils.java @@ -21,7 +21,11 @@ public class XmlEnumUtils { /** Read the {@link XmlEnumValue} string off of an enum. */ public static String enumToXml(Enum input) { try { - return input.getClass().getField(input.name()).getAnnotation(XmlEnumValue.class).value(); + return input + .getDeclaringClass() + .getField(input.name()) + .getAnnotation(XmlEnumValue.class) + .value(); } catch (NoSuchFieldException e) { throw new RuntimeException(e); } diff --git a/java/google/registry/whois/WhoisModule.java b/java/google/registry/whois/WhoisModule.java index 2154d0329..bcbd928d1 100644 --- a/java/google/registry/whois/WhoisModule.java +++ b/java/google/registry/whois/WhoisModule.java @@ -41,6 +41,7 @@ import javax.servlet.http.HttpServletRequest; public final class WhoisModule { @Provides + @SuppressWarnings("CloseableProvides") static Reader provideHttpInputReader(HttpServletRequest req) { try { return req.getReader(); diff --git a/java/google/registry/xjc/JaxbFragment.java b/java/google/registry/xjc/JaxbFragment.java index 494bc939f..44fef7966 100644 --- a/java/google/registry/xjc/JaxbFragment.java +++ b/java/google/registry/xjc/JaxbFragment.java @@ -57,13 +57,11 @@ public class JaxbFragment implements Serializable { } /** Deserializes a JAXB element from xml bytes. */ - private static T unfreezeInstance(byte[] instanceData, Class instanceType) + private static T unfreezeInstance(byte[] instanceData, Class instanceType) throws IOException { try { ByteArrayInputStream bin = new ByteArrayInputStream(instanceData); - @SuppressWarnings("unchecked") - T instance = (T) XjcXmlTransformer.unmarshal(instanceType, bin); - return instance; + return XjcXmlTransformer.unmarshal(instanceType, bin); } catch (XmlException e) { throw new IOException(e); } @@ -91,12 +89,13 @@ public class JaxbFragment implements Serializable { out.writeObject(freezeInstance(instance)); } + @SuppressWarnings("unchecked") private void readObject(ObjectInputStream in) throws IOException { // read instanceType, then instanceData - Class instanceType; + Class instanceType; byte[] instanceData; try { - instanceType = (Class) in.readObject(); + instanceType = (Class) in.readObject(); instanceData = (byte[]) in.readObject(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); diff --git a/java/google/registry/xjc/XjcObject.java b/java/google/registry/xjc/XjcObject.java index 5e4e8cf1b..33a28271d 100644 --- a/java/google/registry/xjc/XjcObject.java +++ b/java/google/registry/xjc/XjcObject.java @@ -58,10 +58,11 @@ public abstract class XjcObject { public String toString() { try { StringWriter out = new StringWriter(); - XjcXmlTransformer.marshalLenient((getClass() - .isAnnotationPresent(XmlRootElement.class)) + XjcXmlTransformer.marshalLenient( + getClass().isAnnotationPresent(XmlRootElement.class) ? this - : new JAXBElement<>(new QName(getClass().getSimpleName()), Object.class, this), out); + : new JAXBElement<>(new QName(getClass().getSimpleName()), Object.class, this), + out); return out.toString(); } catch (XmlException e) { return String.format("", e.toString()); diff --git a/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java b/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java index 386e46b25..84ce17cb9 100644 --- a/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java +++ b/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java @@ -38,7 +38,7 @@ public class TestDomainPricingCustomLogic extends DomainPricingCustomLogic { @Override public FeesAndCredits customizeRenewPrice(RenewPriceParameters priceParameters) { - return (priceParameters.domainName().toString().startsWith("costly-renew")) + return priceParameters.domainName().toString().startsWith("costly-renew") ? addCustomFee( priceParameters.feesAndCredits(), Fee.create(ONE_HUNDRED_BUCKS, FeeType.RENEW)) : priceParameters.feesAndCredits(); @@ -46,7 +46,7 @@ public class TestDomainPricingCustomLogic extends DomainPricingCustomLogic { @Override public FeesAndCredits customizeTransferPrice(TransferPriceParameters priceParameters) { - return (priceParameters.domainName().toString().startsWith("expensive")) + return priceParameters.domainName().toString().startsWith("expensive") ? addCustomFee( priceParameters.feesAndCredits(), Fee.create(ONE_HUNDRED_BUCKS, FeeType.TRANSFER)) : priceParameters.feesAndCredits(); @@ -54,7 +54,7 @@ public class TestDomainPricingCustomLogic extends DomainPricingCustomLogic { @Override public FeesAndCredits customizeUpdatePrice(UpdatePriceParameters priceParameters) { - return (priceParameters.domainName().toString().startsWith("non-free-update")) + return priceParameters.domainName().toString().startsWith("non-free-update") ? addCustomFee( priceParameters.feesAndCredits(), Fee.create(ONE_HUNDRED_BUCKS, FeeType.UPDATE)) : priceParameters.feesAndCredits(); diff --git a/javatests/google/registry/keyring/kms/KmsKeyringTest.java b/javatests/google/registry/keyring/kms/KmsKeyringTest.java index 9bf52aca5..4a79540ee 100644 --- a/javatests/google/registry/keyring/kms/KmsKeyringTest.java +++ b/javatests/google/registry/keyring/kms/KmsKeyringTest.java @@ -21,7 +21,6 @@ import com.google.common.collect.ImmutableList; import google.registry.keyring.api.KeySerializer; import google.registry.model.server.KmsSecret; import google.registry.model.server.KmsSecretRevision; -import google.registry.model.server.KmsSecretRevision.Builder; import google.registry.testing.AppEngineRule; import google.registry.testing.BouncyCastleProviderRule; import org.bouncycastle.openpgp.PGPKeyPair; @@ -178,7 +177,7 @@ public class KmsKeyringTest { KmsConnection kmsConnection = new FakeKmsConnection(); KmsSecretRevision secretRevision = - new Builder() + new KmsSecretRevision.Builder() .setEncryptedValue(kmsConnection.encrypt(secretName, secretValue).ciphertext()) .setKmsCryptoKeyVersionName(KmsTestHelper.DUMMY_CRYPTO_KEY_VERSION) .setParent(secretName) diff --git a/javatests/google/registry/model/EntityTestCase.java b/javatests/google/registry/model/EntityTestCase.java index cf234ff87..b822f9734 100644 --- a/javatests/google/registry/model/EntityTestCase.java +++ b/javatests/google/registry/model/EntityTestCase.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assert_; import static google.registry.model.ofy.ObjectifyService.ofy; import static org.joda.time.DateTimeZone.UTC; +import com.google.common.base.Splitter; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.googlecode.objectify.annotation.Id; @@ -84,7 +85,7 @@ public class EntityTestCase { outer: for (String fieldPath : fieldPaths) { // Walk the field path and grab the value referred to on the object using reflection. Object fieldValue = obj; - for (String fieldName : fieldPath.split("\\.")) { + for (String fieldName : Splitter.on('.').split(fieldPath)) { if (fieldValue == null) { throw new RuntimeException(String.format("field '%s' not found on %s", fieldPath, obj.getClass().getSimpleName())); diff --git a/javatests/google/registry/server/StaticResourceServlet.java b/javatests/google/registry/server/StaticResourceServlet.java index 0fdff0de1..8dd0fb674 100644 --- a/javatests/google/registry/server/StaticResourceServlet.java +++ b/javatests/google/registry/server/StaticResourceServlet.java @@ -95,7 +95,7 @@ public final class StaticResourceServlet extends HttpServlet { String prefix = config.getInitParameter("prefix"); verify(prefix.startsWith("/")); boolean isDirectory = Files.isDirectory(root); - verify(!isDirectory || isDirectory && prefix.endsWith("/")); + verify(!isDirectory || (isDirectory && prefix.endsWith("/"))); fileServer = Optional.of(new FileServer(root, prefix)); } diff --git a/javatests/google/registry/testing/DatastoreHelper.java b/javatests/google/registry/testing/DatastoreHelper.java index 1e634ec61..945656431 100644 --- a/javatests/google/registry/testing/DatastoreHelper.java +++ b/javatests/google/registry/testing/DatastoreHelper.java @@ -91,7 +91,6 @@ import google.registry.model.registry.label.PremiumList.PremiumListRevision; import google.registry.model.registry.label.ReservedList; import google.registry.model.reporting.HistoryEntry; import google.registry.model.transfer.TransferData; -import google.registry.model.transfer.TransferData.Builder; import google.registry.model.transfer.TransferStatus; import google.registry.tmch.LordnTaskUtils; import java.util.Arrays; @@ -383,7 +382,8 @@ public class DatastoreHelper { registrar.asBuilder().setAllowedTlds(difference(registrar.getAllowedTlds(), tld)).build()); } - private static Builder createTransferDataBuilder(DateTime requestTime, DateTime expirationTime) { + private static TransferData.Builder createTransferDataBuilder( + DateTime requestTime, DateTime expirationTime) { return new TransferData.Builder() .setTransferStatus(TransferStatus.PENDING) .setGainingClientId("NewRegistrar") @@ -585,7 +585,8 @@ public class DatastoreHelper { } else { deleteResource(autorenewPollMessage); } - Builder transferDataBuilder = createTransferDataBuilder(requestTime, expirationTime); + TransferData.Builder transferDataBuilder = + createTransferDataBuilder(requestTime, expirationTime); return persistResource(domain.asBuilder() .setPersistedCurrentSponsorClientId("TheRegistrar") .addStatusValue(StatusValue.PENDING_TRANSFER) diff --git a/javatests/google/registry/testing/FakeServletInputStream.java b/javatests/google/registry/testing/FakeServletInputStream.java index 6c694fcc8..2fb1e9df5 100644 --- a/javatests/google/registry/testing/FakeServletInputStream.java +++ b/javatests/google/registry/testing/FakeServletInputStream.java @@ -49,6 +49,11 @@ public final class FakeServletInputStream extends ServletInputStream { return input.read(); } + @Override + public int read(byte[] b, int off, int len) throws IOException { + return input.read(b, off, len); + } + @Override public void close() throws IOException { input.close(); diff --git a/javatests/google/registry/testing/mapreduce/MapreduceTestCase.java b/javatests/google/registry/testing/mapreduce/MapreduceTestCase.java index 7e0452895..fc1342b41 100644 --- a/javatests/google/registry/testing/mapreduce/MapreduceTestCase.java +++ b/javatests/google/registry/testing/mapreduce/MapreduceTestCase.java @@ -30,6 +30,7 @@ import com.google.appengine.tools.pipeline.impl.servlets.PipelineServlet; import com.google.appengine.tools.pipeline.impl.servlets.TaskHandler; import com.google.apphosting.api.ApiProxy; import com.google.common.base.CharMatcher; +import com.google.common.base.Splitter; import com.google.common.flogger.FluentLogger; import google.registry.mapreduce.MapreduceRunner; import google.registry.testing.AppEngineRule; @@ -224,11 +225,11 @@ public abstract class MapreduceTestCase extends ShardableTestCase { throws UnsupportedEncodingException { Map result = new HashMap<>(); - String[] params = requestBody.split("&"); + Iterable params = Splitter.on('&').split(requestBody); for (String param : params) { - String[] pair = param.split("="); - String name = pair[0]; - String value = URLDecoder.decode(pair[1], "UTF-8"); + List pair = Splitter.on('=').splitToList(param); + String name = pair.get(0); + String value = URLDecoder.decode(pair.get(1), "UTF-8"); if (result.containsKey(name)) { throw new IllegalArgumentException("Duplicate parameter: " + requestBody); } diff --git a/javatests/google/registry/tools/CommandTestCase.java b/javatests/google/registry/tools/CommandTestCase.java index da5a59824..53657c507 100644 --- a/javatests/google/registry/tools/CommandTestCase.java +++ b/javatests/google/registry/tools/CommandTestCase.java @@ -70,7 +70,7 @@ public abstract class CommandTestCase { public TemporaryFolder tmpDir = new TemporaryFolder(); @Before - public final void beforeCommandTestCase() { + public final void beforeCommandTestCase() throws Exception { // Ensure the UNITTEST environment has been set before constructing a new command instance. RegistryToolEnvironment.UNITTEST.setup(systemPropertyRule); command = newCommandInstance(); @@ -212,9 +212,10 @@ public abstract class CommandTestCase { } @SuppressWarnings("unchecked") - protected C newCommandInstance() { + protected C newCommandInstance() throws Exception { try { - return (C) new TypeToken(getClass()){}.getRawType().newInstance(); + return (C) + new TypeToken(getClass()) {}.getRawType().getDeclaredConstructor().newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } diff --git a/javatests/google/registry/whois/WhoisReaderTest.java b/javatests/google/registry/whois/WhoisReaderTest.java index 11440c32f..22ef11ea7 100644 --- a/javatests/google/registry/whois/WhoisReaderTest.java +++ b/javatests/google/registry/whois/WhoisReaderTest.java @@ -298,7 +298,7 @@ public class WhoisReaderTest { @Test public void testNameserverLookupByIpWhitespace() throws Exception { - assertNsLookup((" \t\t NAMESERVER \t 43.34.12.213 \r\n"), "43.34.12.213"); + assertNsLookup(" \t\t NAMESERVER \t 43.34.12.213 \r\n", "43.34.12.213"); } @Test diff --git a/javatests/google/registry/xml/DateAdapterTest.java b/javatests/google/registry/xml/DateAdapterTest.java index 580e4ecb9..55e6eed40 100644 --- a/javatests/google/registry/xml/DateAdapterTest.java +++ b/javatests/google/registry/xml/DateAdapterTest.java @@ -51,14 +51,14 @@ public class DateAdapterTest { @Test public void testUnmarshalEmpty() { - assertThat((new DateAdapter()).unmarshal(null)).isNull(); - assertThat((new DateAdapter()).unmarshal("")).isNull(); + assertThat(new DateAdapter().unmarshal(null)).isNull(); + assertThat(new DateAdapter().unmarshal("")).isNull(); } @Test public void testUnmarshalInvalid() { assertThrows( IllegalArgumentException.class, - () -> assertThat((new DateAdapter()).unmarshal("oh my goth")).isNull()); + () -> assertThat(new DateAdapter().unmarshal("oh my goth")).isNull()); } } diff --git a/javatests/google/registry/xml/UtcDateTimeAdapterTest.java b/javatests/google/registry/xml/UtcDateTimeAdapterTest.java index 02695e199..31b547076 100644 --- a/javatests/google/registry/xml/UtcDateTimeAdapterTest.java +++ b/javatests/google/registry/xml/UtcDateTimeAdapterTest.java @@ -43,7 +43,7 @@ public class UtcDateTimeAdapterTest { @Test public void testMarshalEmpty() { - assertThat((new UtcDateTimeAdapter()).marshal(null)).isEmpty(); + assertThat(new UtcDateTimeAdapter().marshal(null)).isEmpty(); } @Test @@ -60,14 +60,14 @@ public class UtcDateTimeAdapterTest { @Test public void testUnmarshalEmpty() { - assertThat((new UtcDateTimeAdapter()).unmarshal(null)).isNull(); - assertThat((new UtcDateTimeAdapter()).unmarshal("")).isNull(); + assertThat(new UtcDateTimeAdapter().unmarshal(null)).isNull(); + assertThat(new UtcDateTimeAdapter().unmarshal("")).isNull(); } @Test public void testUnmarshalInvalid() { assertThrows( IllegalArgumentException.class, - () -> assertThat((new UtcDateTimeAdapter()).unmarshal("oh my goth")).isNull()); + () -> assertThat(new UtcDateTimeAdapter().unmarshal("oh my goth")).isNull()); } }