From b5d2b564261ee660a1c7b890ea33e1992299fda6 Mon Sep 17 00:00:00 2001 From: Lai Jiang Date: Tue, 9 Jan 2024 15:56:37 -0500 Subject: [PATCH] Build Nomulus with Java 17 (#2255) This PR makes it possible to build the Nomulus code base using Java 17. Building with Java 11 continue to be possible and the resulting bytecodes are still at Java 8 level. Also upgraded Gradle to 8.5. There are several necessary changes to make this happen: 1. Some Gradle plugins need to be upgraded to support Java 17, notably errorprone. As a result, a lot more "errors" were caught and corrected. 2. All test code are now built and run at Java 8 level. Previously it was left undefined (which defaults to the version of the compiler) and had led to situations where we inadvertently called Java 8+ features in production that are not caught by tests. The change also made the java8compatibility subproject obsolete, which is therefore removed. 3. Removed the docs subproject. Its main use is to generate flows.md, but it relies heavily on Java internal APIs that have changed significant with each version. Upgrading to Java 11 required extensive refactoring of the code there, and Java 17 again removed many APIs that were used. I don't think it is worth the maintenance effort just to have a tool to generate flows.md which no one actually reads. 4. Capped a few GCP dependencies because the latest version depends on grpc-java >= 1.59.0, which includes a runtime incompatibility (https://github.com/grpc/grpc-java/releases/tag/v1.59.0). --- build.gradle | 20 +- buildSrc/build.gradle.kts | 2 +- buildSrc/buildscript-gradle.lockfile | 12 +- buildSrc/gradle.lockfile | 44 +- .../gradle/plugin/CoverPageGenerator.java | 2 +- buildscript-gradle.lockfile | 27 +- common/gradle.lockfile | 47 +- .../google/registry/testing/SystemInfo.java | 10 +- .../dependency-license/allowed_licenses.json | 8 + config/nom_build.py | 2 - console-webapp/gradle.lockfile | 44 +- core/gradle.lockfile | 55 +- ...ingCertificateNotificationEmailAction.java | 12 +- .../beam/common/RegistryPipelineOptions.java | 2 +- .../java/google/registry/beam/rde/RdeIO.java | 1 + .../google/registry/beam/rde/RdePipeline.java | 8 +- .../beam/spec11/SafeBrowsingTransforms.java | 2 +- .../registry/bigquery/BigqueryConnection.java | 8 +- .../bigquery/BigqueryJobFailureException.java | 6 +- .../google/registry/bsa/BlockListFetcher.java | 4 +- .../google/registry/bsa/BsaDiffCreator.java | 8 +- .../bsa/persistence/BsaDomainRefresh.java | 1 + .../bsa/persistence/DownloadSchedule.java | 4 +- .../registry/config/DelegatedCredentials.java | 5 +- .../registry/config/RegistryConfig.java | 12 +- .../google/registry/cron/TldFanoutAction.java | 4 +- .../java/google/registry/dns/DnsMetrics.java | 9 +- .../dns/writer/VoidDnsWriterModule.java | 9 +- .../dns/writer/clouddns/CloudDnsWriter.java | 4 +- .../dnsupdate/DnsUpdateWriterModule.java | 7 +- .../flows/ServerTridProviderModule.java | 10 +- .../flows/certs/CertificateChecker.java | 16 +- .../registry/keyring/api/PgpHelper.java | 9 +- .../registry/model/ResourceTransferUtils.java | 1 + .../registry/model/domain/DomainBase.java | 2 +- .../registry/model/eppoutput/Result.java | 2 +- .../google/registry/model/host/HostBase.java | 1 + .../registry/model/registrar/Registrar.java | 6 +- .../registry/pricing/PricingModule.java | 15 +- .../registry/rdap/RdapObjectClasses.java | 4 +- .../java/google/registry/rde/Ghostryde.java | 27 +- .../google/registry/rde/JSchSshSession.java | 2 - .../google/registry/rde/RdeMarshaller.java | 15 +- .../google/registry/rde/RdeStagingAction.java | 12 +- .../java/google/registry/rde/RdeUtils.java | 3 +- .../icann/IcannReportingUploadAction.java | 2 +- .../google/registry/request/JsonResponse.java | 18 +- .../registry/request/RequestHandler.java | 14 +- .../registry/tools/CommandUtilities.java | 2 + .../tools/GetReservedListCommand.java | 11 +- .../google/registry/tools/GetTldCommand.java | 8 +- .../tools/RegistryToolEnvironment.java | 3 +- .../google/registry/tools/ShellCommand.java | 7 +- .../registry/tools/params/EnumParameter.java | 5 +- .../google/registry/ui/forms/FormField.java | 2 +- .../registrar/ConsoleOteSetupAction.java | 8 +- .../ConsoleRegistrarCreatorAction.java | 8 +- .../ui/server/registrar/ConsoleUiAction.java | 4 +- .../ui/server/registrar/HtmlAction.java | 2 +- .../registrar/RegistryLockVerifyAction.java | 4 +- .../registry/whois/NonCachingWhoisModule.java | 2 +- .../google/registry/whois/WhoisModule.java | 2 +- .../registry/xml/TrimWhitespaceAdapter.java | 6 +- ...ertificateNotificationEmailActionTest.java | 9 +- .../registry/bsa/BsaDiffCreatorTest.java | 10 +- .../bsa/persistence/BsaLabelUtilsTest.java | 6 +- .../bsa/persistence/LabelDiffUpdatesTest.java | 5 +- .../dnsupdate/DnsMessageTransportTest.java | 1 + .../flows/certs/CertificateCheckerTest.java | 2 +- .../flows/domain/DomainCreateFlowTest.java | 13 +- .../flows/domain/DomainPricingLogicTest.java | 8 +- .../transaction/DatabaseExceptionTest.java | 1 + .../HibernateLoggingSuppressionTest.java | 9 +- .../JpaTransactionManagerExtension.java | 4 +- .../registry/rde/RdeReportActionTest.java | 1 + .../ActivityReportingQueryBuilderTest.java | 1 + .../google/registry/testing/FakeResponse.java | 3 +- .../testing/FakeServletInputStream.java | 1 - .../registry/tmch/NordnUploadActionTest.java | 4 +- .../registry/tmch/NordnVerifyActionTest.java | 1 + .../registry/tools/CreateTldCommandTest.java | 2 +- .../tools/GcpProjectConnectionTest.java | 3 +- .../registry/tools/ShellCommandTest.java | 20 +- .../server/GenerateZoneFilesActionTest.java | 1 + .../tools/server/ListDomainsActionTest.java | 2 +- .../tools/server/ListHostsActionTest.java | 6 +- .../console/ConsoleUserDataActionTest.java | 4 +- db/gradle.lockfile | 47 +- .../sql/flyway/FlywayDeadlockTest.java | 13 +- .../registry/sql/flyway/SchemaTest.java | 5 +- dependencies.gradle | 7 +- docs/build.gradle | 69 -- docs/buildscript-gradle.lockfile | 4 - docs/flows.md | 1072 ----------------- docs/gradle.lockfile | 385 ------ .../documentation/DocumentationGenerator.java | 81 -- .../documentation/FlowDocumentation.java | 370 ------ .../documentation/FlowDocumentationTool.java | 91 -- .../documentation/JavadocWrapper.java | 122 -- .../MarkdownDocumentationFormatter.java | 179 --- .../registry/documentation/FlowContext.java | 268 ----- .../documentation/FlowDocumentationTest.java | 51 - .../documentation/FlowExceptionsTest.java | 72 -- .../MarkdownDocumentationFormatterTest.java | 90 -- gradle.lockfile | 3 +- gradle.properties | 1 - gradle/wrapper/gradle-wrapper.properties | 2 +- java8compatibility/build.gradle | 41 - .../buildscript-gradle.lockfile | 4 - .../ByteCodeVersionTest.java | 115 -- java_common.gradle | 56 +- networking/gradle.lockfile | 111 +- prober/gradle.lockfile | 111 +- .../handler/WebWhoisActionHandler.java | 2 +- .../blackbox/ProbingSequenceTest.java | 1 + .../blackbox/testserver/TestServer.java | 4 +- processor/gradle.lockfile | 45 +- .../registry/processors/VKeyProcessor.java | 2 +- proxy/gradle.lockfile | 116 +- services/backend/gradle.lockfile | 6 +- services/bsa/gradle.lockfile | 6 +- services/default/gradle.lockfile | 6 +- services/pubapi/gradle.lockfile | 6 +- services/tools/gradle.lockfile | 6 +- settings.gradle | 2 - util/gradle.lockfile | 114 +- .../registry/util/CidrAddressBlock.java | 15 +- .../google/registry/util/PosixTarHeader.java | 4 +- .../java/google/registry/util/Retrier.java | 2 +- .../registry/util/SendEmailService.java | 15 +- .../java/google/registry/util/X509Utils.java | 14 +- .../java/google/registry/util/YamlUtils.java | 5 +- .../registry/util/PasswordUtilsTest.java | 4 +- .../registry/util/TeeOutputStreamTest.java | 7 +- 134 files changed, 750 insertions(+), 3731 deletions(-) delete mode 100644 docs/build.gradle delete mode 100644 docs/buildscript-gradle.lockfile delete mode 100644 docs/flows.md delete mode 100644 docs/gradle.lockfile delete mode 100644 docs/src/main/java/google/registry/documentation/DocumentationGenerator.java delete mode 100644 docs/src/main/java/google/registry/documentation/FlowDocumentation.java delete mode 100644 docs/src/main/java/google/registry/documentation/FlowDocumentationTool.java delete mode 100644 docs/src/main/java/google/registry/documentation/JavadocWrapper.java delete mode 100644 docs/src/main/java/google/registry/documentation/MarkdownDocumentationFormatter.java delete mode 100644 docs/src/test/java/google/registry/documentation/FlowContext.java delete mode 100644 docs/src/test/java/google/registry/documentation/FlowDocumentationTest.java delete mode 100644 docs/src/test/java/google/registry/documentation/FlowExceptionsTest.java delete mode 100644 docs/src/test/java/google/registry/documentation/MarkdownDocumentationFormatterTest.java delete mode 100644 java8compatibility/build.gradle delete mode 100644 java8compatibility/buildscript-gradle.lockfile delete mode 100644 java8compatibility/src/test/java/google/registry/java8compatibility/ByteCodeVersionTest.java diff --git a/build.gradle b/build.gradle index b30b2668c..8c93817a6 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ buildscript { dependencies { classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.4.1' - classpath 'net.ltgt.gradle:gradle-errorprone-plugin:2.0.2' + classpath 'net.ltgt.gradle:gradle-errorprone-plugin:3.1.0' classpath 'org.sonatype.aether:aether-api:1.13.1' classpath 'org.sonatype.aether:aether-impl:1.13.1' } @@ -41,9 +41,9 @@ plugins { // Re-enable when compatible with Gradle 8 // id 'nebula.lint' version '16.0.2' - id 'net.ltgt.errorprone' version '2.0.2' + id 'net.ltgt.errorprone' version '3.1.0' id 'checkstyle' - id 'com.github.johnrengelman.shadow' version '5.1.0' + id 'com.github.johnrengelman.shadow' version '8.1.1' // NodeJs plugin id "com.github.node-gradle.node" version "3.0.1" @@ -307,8 +307,7 @@ subprojects { afterEvaluate { if (rootProject.enableDependencyLocking.toBoolean() - && project.name != 'integration' - && project.name != 'java8compatibility') { + && project.name != 'integration') { // The ':integration' project runs server/schema integration tests using // dynamically specified jars with no transitive dependency. Therefore // dependency-locking does not make sense. Furthermore, during @@ -316,9 +315,6 @@ subprojects { // immutable. Locking activation would trigger an invalid operation // exception. // - // The ':java8compatibility' project is test-only. Its source does not go - // into production. - // // For all other projects, due to problem with the gradle-license-report // plugin, the dependencyLicenseReport configuration must opt out of // dependency-locking. See dependency_lic.gradle for the reason why. @@ -362,9 +358,13 @@ subprojects { apply from: "${rootDir.path}/java_common.gradle" - if (project.name != 'docs') { + if (!rootProject.enableCrossReferencing.toBoolean()) { compileJava { - // TODO: Remove this once we migrate off AppEngine. + // TODO: Remove this once we migrate off of AppEngine. + options.release = 8 + } + compileTestJava { + // TODO: Remove this once we migrate off of AppEngine. options.release = 8 } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index a69065fba..786ea811a 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -36,7 +36,7 @@ plugins { // We don't anticipate enabling the Gradle lint plugin because they will not support Kotlin // See https://github.com/nebula-plugins/gradle-lint-plugin/issues/166 // id 'nebula.lint' version '16.0.2' - id("net.ltgt.errorprone") version "2.0.2" + id("net.ltgt.errorprone") version "3.1.0" checkstyle id("com.diffplug.spotless") version "6.20.0" } diff --git a/buildSrc/buildscript-gradle.lockfile b/buildSrc/buildscript-gradle.lockfile index afed2c7a6..02c775a54 100644 --- a/buildSrc/buildscript-gradle.lockfile +++ b/buildSrc/buildscript-gradle.lockfile @@ -15,14 +15,14 @@ com.squareup.okhttp3:okhttp:4.10.0=classpath com.squareup.okio:okio-jvm:3.0.0=classpath com.squareup.okio:okio:3.0.0=classpath dev.equo.ide:solstice:1.3.1=classpath -net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:2.0.2=classpath -net.ltgt.gradle:gradle-errorprone-plugin:2.0.2=classpath +net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:3.1.0=classpath +net.ltgt.gradle:gradle-errorprone-plugin:3.1.0=classpath org.eclipse.jgit:org.eclipse.jgit:6.6.0.202305301015-r=classpath org.eclipse.platform:org.eclipse.osgi:3.18.300=classpath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.0=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.9.0=classpath +org.jetbrains.kotlin:kotlin-stdlib-common:1.9.20=classpath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0=classpath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0=classpath +org.jetbrains.kotlin:kotlin-stdlib:1.9.20=classpath org.jetbrains:annotations:13.0=classpath org.slf4j:slf4j-api:1.7.36=classpath org.tukaani:xz:1.9=classpath diff --git a/buildSrc/gradle.lockfile b/buildSrc/gradle.lockfile index 62a3dd32f..fa59eca5a 100644 --- a/buildSrc/gradle.lockfile +++ b/buildSrc/gradle.lockfile @@ -1,11 +1,11 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -aopalliance:aopalliance:1.0=buildScriptClasspath,compileClasspath +aopalliance:aopalliance:1.0=annotationProcessor,buildScriptClasspath,compileClasspath args4j:args4j:2.0.23=buildScriptClasspath,compileClasspath com.fasterxml.jackson.core:jackson-core:2.14.2=buildScriptClasspath,compileClasspath com.fasterxml.jackson:jackson-bom:2.14.2=buildScriptClasspath,compileClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor com.google.android:annotations:4.1.1.4=buildScriptClasspath com.google.api-client:google-api-client:2.2.0=buildScriptClasspath,compileClasspath @@ -21,29 +21,30 @@ com.google.api:gax:2.31.0=buildScriptClasspath,compileClasspath com.google.apis:google-api-services-storage:v1-rev20230301-2.0.0=buildScriptClasspath,compileClasspath com.google.auth:google-auth-library-credentials:1.19.0=buildScriptClasspath,compileClasspath com.google.auth:google-auth-library-oauth2-http:1.19.0=buildScriptClasspath,compileClasspath +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor com.google.auto.value:auto-value-annotations:1.10.1=buildScriptClasspath,compileClasspath +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor com.google.auto.value:auto-value:1.10.4=annotationProcessor -com.google.auto:auto-common:0.10=annotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor com.google.cloud:google-cloud-core-grpc:2.21.0=buildScriptClasspath,compileClasspath com.google.cloud:google-cloud-core-http:2.21.0=buildScriptClasspath,compileClasspath com.google.cloud:google-cloud-core:2.21.0=buildScriptClasspath,compileClasspath com.google.cloud:google-cloud-storage:2.22.6=buildScriptClasspath,compileClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,buildScriptClasspath,compileClasspath com.google.code.gson:gson:2.10.1=buildScriptClasspath,compileClasspath com.google.common.html.types:types:1.0.6=buildScriptClasspath,compileClasspath -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=buildScriptClasspath,compileClasspath -com.google.errorprone:error_prone_annotations:2.3.4=annotationProcessor -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,buildScriptClasspath,compileClasspath +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor com.google.escapevelocity:escapevelocity:0.9.1=buildScriptClasspath,compileClasspath com.google.guava:failureaccess:1.0.1=annotationProcessor com.google.guava:failureaccess:1.0.2=buildScriptClasspath,compileClasspath -com.google.guava:guava:27.0.1-jre=annotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor +com.google.guava:guava:32.1.1-jre=annotationProcessor com.google.guava:guava:33.0.0-jre=buildScriptClasspath,compileClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,buildScriptClasspath,compileClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=buildScriptClasspath,compileClasspath com.google.http-client:google-http-client-apache-v2:1.43.3=buildScriptClasspath,compileClasspath com.google.http-client:google-http-client-appengine:1.43.3=buildScriptClasspath,compileClasspath com.google.http-client:google-http-client-gson:1.43.3=buildScriptClasspath,compileClasspath @@ -51,19 +52,20 @@ com.google.http-client:google-http-client-jackson2:1.43.3=buildScriptClasspath,c com.google.http-client:google-http-client:1.43.3=buildScriptClasspath,compileClasspath com.google.inject.extensions:guice-multibindings:4.1.0=buildScriptClasspath,compileClasspath com.google.inject:guice:4.1.0=buildScriptClasspath,compileClasspath -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor +com.google.inject:guice:5.1.0=annotationProcessor com.google.j2objc:j2objc-annotations:2.8=buildScriptClasspath,compileClasspath com.google.jsinterop:jsinterop-annotations:1.0.1=buildScriptClasspath,compileClasspath com.google.oauth-client:google-oauth-client:1.34.1=buildScriptClasspath,compileClasspath com.google.protobuf:protobuf-java-util:3.23.2=buildScriptClasspath,compileClasspath +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor com.google.protobuf:protobuf-java:3.23.2=buildScriptClasspath,compileClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor com.google.re2j:re2j:1.6=buildScriptClasspath com.google.template:soy:2021-02-01=buildScriptClasspath,compileClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor com.ibm.icu:icu4j:57.1=buildScriptClasspath,compileClasspath commons-codec:commons-codec:1.15=buildScriptClasspath,compileClasspath commons-logging:commons-logging:1.2=buildScriptClasspath,compileClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor io.grpc:grpc-alts:1.55.3=buildScriptClasspath,compileClasspath io.grpc:grpc-api:1.55.3=buildScriptClasspath,compileClasspath io.grpc:grpc-auth:1.55.3=buildScriptClasspath,compileClasspath @@ -84,16 +86,13 @@ io.opencensus:opencensus-proto:0.2.0=buildScriptClasspath io.perfmark:perfmark-api:0.26.0=buildScriptClasspath javax.annotation:javax.annotation-api:1.3.2=buildScriptClasspath,compileClasspath javax.annotation:jsr250-api:1.0=buildScriptClasspath,compileClasspath -javax.inject:javax.inject:1=buildScriptClasspath,compileClasspath +javax.inject:javax.inject:1=annotationProcessor,buildScriptClasspath,compileClasspath org.apache.commons:commons-lang3:3.13.0=buildScriptClasspath,compileClasspath org.apache.commons:commons-text:1.11.0=buildScriptClasspath,compileClasspath org.apache.httpcomponents:httpclient:4.5.14=buildScriptClasspath,compileClasspath org.apache.httpcomponents:httpcore:4.4.16=buildScriptClasspath,compileClasspath -org.checkerframework:checker-qual:3.0.0=annotationProcessor +org.checkerframework:checker-qual:3.33.0=annotationProcessor org.checkerframework:checker-qual:3.41.0=buildScriptClasspath,compileClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor org.codehaus.mojo:animal-sniffer-annotations:1.23=buildScriptClasspath org.conscrypt:conscrypt-openjdk-uber:2.5.2=buildScriptClasspath,compileClasspath org.json:json:20160212=buildScriptClasspath,compileClasspath @@ -102,9 +101,6 @@ org.ow2.asm:asm-commons:7.0=buildScriptClasspath,compileClasspath org.ow2.asm:asm-tree:7.0=buildScriptClasspath,compileClasspath org.ow2.asm:asm-util:7.0=buildScriptClasspath,compileClasspath org.ow2.asm:asm:7.0=buildScriptClasspath,compileClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor org.threeten:threetenbp:1.6.8=buildScriptClasspath,compileClasspath empty= diff --git a/buildSrc/src/main/java/google/registry/gradle/plugin/CoverPageGenerator.java b/buildSrc/src/main/java/google/registry/gradle/plugin/CoverPageGenerator.java index e316cf976..629d6003a 100644 --- a/buildSrc/src/main/java/google/registry/gradle/plugin/CoverPageGenerator.java +++ b/buildSrc/src/main/java/google/registry/gradle/plugin/CoverPageGenerator.java @@ -35,7 +35,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; /** - * Creates the files for a web-page summary of a given {@Link ProjectData}. + * Creates the files for a web-page summary of a given {@link ProjectData}. * *

The main job of this class is rendering a tailored cover page that includes information about * the project and any task that ran. diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index d2be34106..ab2a09315 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -11,8 +11,8 @@ com.diffplug.spotless:spotless-lib:2.40.0=classpath com.diffplug.spotless:spotless-plugin-gradle:6.20.0=classpath com.dorongold.plugins:task-tree:2.1.0=classpath com.dorongold.task-tree:com.dorongold.task-tree.gradle.plugin:2.1.0=classpath -com.github.jengelman.gradle.plugins:shadow:5.1.0=classpath -com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:5.1.0=classpath +com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin:8.1.1=classpath +com.github.johnrengelman:shadow:8.1.1=classpath com.github.node-gradle.node:com.github.node-gradle.node.gradle.plugin:3.0.1=classpath com.github.node-gradle:gradle-node-plugin:3.0.1=classpath com.google.cloud.tools:appengine-gradle-plugin:2.4.1=classpath @@ -29,35 +29,34 @@ com.googlecode.javaewah:JavaEWAH:1.2.3=classpath com.squareup.okhttp3:okhttp:4.10.0=classpath com.squareup.okio:okio-jvm:3.0.0=classpath com.squareup.okio:okio:3.0.0=classpath -commons-io:commons-io:2.6=classpath +commons-io:commons-io:2.11.0=classpath dev.equo.ide:solstice:1.3.1=classpath -net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:2.0.2=classpath -net.ltgt.gradle:gradle-errorprone-plugin:2.0.2=classpath -org.apache.ant:ant-launcher:1.9.7=classpath -org.apache.ant:ant:1.9.7=classpath +net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:3.1.0=classpath +net.ltgt.gradle:gradle-errorprone-plugin:3.1.0=classpath +org.apache.ant:ant-launcher:1.10.13=classpath +org.apache.ant:ant:1.10.13=classpath org.apache.commons:commons-compress:1.20=classpath org.apache.commons:commons-lang3:3.5=classpath org.checkerframework:checker-qual:2.10.0=classpath -org.codehaus.plexus:plexus-utils:3.0.24=classpath +org.codehaus.plexus:plexus-utils:3.5.1=classpath org.eclipse.jgit:org.eclipse.jgit:6.6.0.202305301015-r=classpath org.eclipse.platform:org.eclipse.osgi:3.18.300=classpath org.glassfish:javax.json:1.0.4=classpath -org.jdom:jdom2:2.0.6=classpath +org.jdom:jdom2:2.0.6.1=classpath org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20=classpath org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.31=classpath org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31=classpath org.jetbrains.kotlin:kotlin-stdlib:1.6.20=classpath org.jetbrains:annotations:13.0=classpath -org.ow2.asm:asm-analysis:7.0-beta=classpath -org.ow2.asm:asm-commons:7.0-beta=classpath -org.ow2.asm:asm-tree:7.0-beta=classpath -org.ow2.asm:asm:7.0-beta=classpath +org.ow2.asm:asm-commons:9.4=classpath +org.ow2.asm:asm-tree:9.4=classpath +org.ow2.asm:asm:9.4=classpath org.slf4j:slf4j-api:1.7.36=classpath org.sonatype.aether:aether-api:1.13.1=classpath org.sonatype.aether:aether-impl:1.13.1=classpath org.sonatype.aether:aether-spi:1.13.1=classpath org.sonatype.aether:aether-util:1.13.1=classpath org.tukaani:xz:1.9=classpath -org.vafer:jdependency:2.1.1=classpath +org.vafer:jdependency:2.8.0=classpath org.yaml:snakeyaml:1.21=classpath empty= diff --git a/common/gradle.lockfile b/common/gradle.lockfile index dc5ab55af..fc1796656 100644 --- a/common/gradle.lockfile +++ b/common/gradle.lockfile @@ -1,51 +1,51 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.auto.value:auto-value-annotations:1.10.4=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath,testing,testingAnnotationProcessor,testingCompileClasspath -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -com.google.errorprone:error_prone_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath,testing,testingAnnotationProcessor,testingCompileClasspath com.google.errorprone:error_prone_annotations:2.7.1=checkstyle -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.flogger:flogger:0.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -com.google.guava:guava:27.0.1-jre=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath,testing,testingAnnotationProcessor,testingCompileClasspath -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=compileClasspath,testCompileClasspath,testingCompileClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.google.truth:truth:1.2.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor com.puppycrawl.tools:checkstyle:9.3=checkstyle commons-beanutils:commons-beanutils:1.9.4=checkstyle commons-collections:commons-collections:3.2.2=checkstyle info.picocli:picocli:4.6.2=checkstyle -io.github.java-diff-utils:java-diff-utils:4.12=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -javax.inject:javax.inject:1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath,testing,testingAnnotationProcessor,testingCompileClasspath +javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath,testing,testingAnnotationProcessor,testingCompileClasspath joda-time:joda-time:2.12.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath junit:junit:4.13.2=testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath net.sf.saxon:Saxon-HE:10.6=checkstyle org.antlr:antlr4-runtime:4.9.3=checkstyle org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath org.checkerframework:checker-compat-qual:2.5.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -org.checkerframework:checker-qual:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor org.checkerframework:checker-qual:3.42.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath org.jacoco:org.jacoco.agent:0.8.9=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.9=jacocoAnt @@ -62,9 +62,6 @@ org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testing,testingCompileClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor,testingAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle -empty=errorproneJavac,testingCompile,testingRuntime,testingRuntimeClasspath +empty=testingCompile,testingRuntime,testingRuntimeClasspath diff --git a/common/src/testing/java/google/registry/testing/SystemInfo.java b/common/src/testing/java/google/registry/testing/SystemInfo.java index 944daea45..f15669539 100644 --- a/common/src/testing/java/google/registry/testing/SystemInfo.java +++ b/common/src/testing/java/google/registry/testing/SystemInfo.java @@ -49,13 +49,11 @@ public final class SystemInfo { /** * Returns {@code true} if system command can be run from path. * - *

Warning: The command is actually run! So there could be side-effects. You might - * need to specify a version flag or something. Return code is ignored. + *

Warning: The command is actually run! So there could be side-effects. You might need + * to specify a version flag or something. Return code is ignored. * - *

This result is a memoized. If multiple therads try to get the same result at once, the - * heavy lifting will only be performed by the first thread and the rest will wait. - * - * @throws ExecutionException + *

This result is a memoized. If multiple therads try to get the same result at once, the heavy + * lifting will only be performed by the first thread and the rest will wait. */ public static boolean hasCommand(String cmd) throws ExecutionException { return hasCommandCache.get(cmd); diff --git a/config/dependency-license/allowed_licenses.json b/config/dependency-license/allowed_licenses.json index bc5ffeb83..75360754f 100644 --- a/config/dependency-license/allowed_licenses.json +++ b/config/dependency-license/allowed_licenses.json @@ -317,6 +317,14 @@ // "Apache License, Version 2.0". "moduleLicense": null, "moduleName": "com.squareup.okio:okio" + }, + { + "moduleLicense": "(GPL-2.0-only WITH Classpath-exception-2.0)", + "moduleName": "io.github.eisop:dataflow-errorprone" + }, + { + "moduleLicense": "GNU General Public License, version 2 (GPL2), with the classpath exception", + "moduleName": "io.github.eisop:dataflow-errorprone" } ] } diff --git a/config/nom_build.py b/config/nom_build.py index 36c8f3e94..a72a09510 100644 --- a/config/nom_build.py +++ b/config/nom_build.py @@ -99,8 +99,6 @@ PROPERTIES = [ 'If true, show all test output in near-realtime.', 'false', bool), - Property('flowDocsFile', - 'Output filename for the flowDocsTool command.'), Property('enableDependencyLocking', 'Enables dependency locking.', 'true', diff --git a/console-webapp/gradle.lockfile b/console-webapp/gradle.lockfile index c8978f07f..abff4d7b7 100644 --- a/console-webapp/gradle.lockfile +++ b/console-webapp/gradle.lockfile @@ -1,36 +1,39 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.7.1=checkstyle -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor -com.google.guava:guava:27.0.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:31.0.1-jre=checkstyle -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.j2objc:j2objc-annotations:1.3=checkstyle -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor com.puppycrawl.tools:checkstyle:9.3=checkstyle commons-beanutils:commons-beanutils:1.9.4=checkstyle commons-collections:commons-collections:3.2.2=checkstyle info.picocli:picocli:4.6.2=checkstyle +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor +javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor net.sf.saxon:Saxon-HE:10.6=checkstyle org.antlr:antlr4-runtime:4.9.3=checkstyle -org.checkerframework:checker-qual:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.12.0=checkstyle -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,errorprone,testAnnotationProcessor +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.jacoco:org.jacoco.agent:0.8.9=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.9=jacocoAnt org.jacoco:org.jacoco.core:0.8.9=jacocoAnt @@ -39,9 +42,6 @@ org.javassist:javassist:3.28.0-GA=checkstyle org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle -empty=compileClasspath,deploy_jar,errorproneJavac,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +empty=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/core/gradle.lockfile b/core/gradle.lockfile index 6945e75c9..c39bd6067 100644 --- a/core/gradle.lockfile +++ b/core/gradle.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. antlr:antlr:2.7.7=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -aopalliance:aopalliance:1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testCompileClasspath,testRuntimeClasspath +aopalliance:aopalliance:1.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath args4j:args4j:2.0.23=soy args4j:args4j:2.0.26=css args4j:args4j:2.33=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -18,8 +18,8 @@ com.fasterxml.jackson.datatype:jackson-datatype-joda:2.15.2=compileClasspath,dep com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson:jackson-bom:2.15.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml:classmate:1.5.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.github.docker-java:docker-java-api:3.3.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport-zerodep:3.3.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport:3.3.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -68,8 +68,8 @@ com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=compileC com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api:api-common:2.21.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -98,12 +98,13 @@ com.google.appengine:appengine-api-stubs:2.0.24=testCompileClasspath,testRuntime com.google.appengine:appengine-testing:1.9.86=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.auth:google-auth-library-credentials:1.20.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.auth:google-auth-library-oauth2-http:1.20.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0.1=errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.auto.service:auto-service-annotations:1.1.1=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.auto.service:auto-service:1.1.1=annotationProcessor com.google.auto.value:auto-value-annotations:1.10.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.auto.value:auto-value:1.10.4=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.auto:auto-common:0.10=errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -com.google.auto:auto-common:1.2.1=annotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.closure-stylesheets:closure-stylesheets:1.5.0=css com.google.cloud.bigdataoss:gcsio:2.2.16=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud.bigdataoss:util:2.2.16=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -126,10 +127,9 @@ com.google.cloud:google-cloud-pubsublite:1.12.19=compileClasspath,deploy_jar,non com.google.cloud:google-cloud-secretmanager:2.23.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-spanner:6.55.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:grpc-gcp:1.5.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.code.findbugs:jsr305:3.0.1=css com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntime,nonprodRuntimeClasspath,runtime,runtimeClasspath,soy,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.10.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -139,14 +139,14 @@ com.google.dagger:dagger-compiler:2.50=annotationProcessor,testAnnotationProcess com.google.dagger:dagger-spi:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger:2.50=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.devtools.ksp:symbol-processing-api:1.9.20-1.0.14=annotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=errorprone,nonprodAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.errorprone:error_prone_annotations:2.7.1=checkstyle,soy -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.errorprone:javac-shaded:9-dev-r4023-3=annotationProcessor,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.escapevelocity:escapevelocity:0.9.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testCompileClasspath,testRuntimeClasspath com.google.flatbuffers:flatbuffers-java:1.12.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.flogger:flogger-system-backend:0.8=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntime,nonprodRuntimeClasspath,runtime,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -155,12 +155,13 @@ com.google.flogger:google-extensions:0.8=compileClasspath,deploy_jar,nonprodComp com.google.googlejavaformat:google-java-format:1.5=annotationProcessor,testAnnotationProcessor com.google.guava:failureaccess:1.0.1=checkstyle,errorprone,nonprodAnnotationProcessor,soy com.google.guava:failureaccess:1.0.2=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:guava-parent:32.1.1-jre=errorprone,nonprodAnnotationProcessor com.google.guava:guava-testlib:33.0.0-jre=testCompileClasspath,testRuntimeClasspath com.google.guava:guava:20.0=css -com.google.guava:guava:27.0.1-jre=errorprone,nonprodAnnotationProcessor com.google.guava:guava:31.0.1-jre=checkstyle,soy +com.google.guava:guava:32.1.1-jre=errorprone,nonprodAnnotationProcessor com.google.guava:guava:33.0.0-jre=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.gwt:gwt-user:2.10.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-apache-v2:1.43.3=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-appengine:1.43.3=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -170,8 +171,8 @@ com.google.http-client:google-http-client-protobuf:1.43.3=compileClasspath,deplo com.google.http-client:google-http-client:1.43.3=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.inject.extensions:guice-multibindings:4.1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testCompileClasspath,testRuntimeClasspath com.google.inject:guice:4.1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.inject:guice:7.0.0=soy -com.google.j2objc:j2objc-annotations:1.1=errorprone,nonprodAnnotationProcessor com.google.j2objc:j2objc-annotations:1.3=checkstyle,soy com.google.j2objc:j2objc-annotations:2.8=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.javascript:closure-compiler-externs:v20160713=css @@ -189,14 +190,13 @@ com.google.oauth-client:google-oauth-client-servlet:1.34.1=compileClasspath,depl com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.protobuf:protobuf-java-util:3.25.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.protobuf:protobuf-java:2.5.0=css +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.protobuf:protobuf-java:3.25.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.google.protobuf:protobuf-java:4.0.0-rc-2=soy com.google.re2j:re2j:1.7=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.template:soy:2021-02-01=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testCompileClasspath,testRuntimeClasspath com.google.truth.extensions:truth-java8-extension:1.2.0=testCompileClasspath,testRuntimeClasspath com.google.truth:truth:1.2.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor com.googlecode.json-simple:json-simple:1.1.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.ibm.icu:icu4j:57.1=compileClasspath,nonprodCompileClasspath,soy,testCompileClasspath com.ibm.icu:icu4j:74.2=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath @@ -237,7 +237,8 @@ io.confluent:common-utils:5.3.2=compileClasspath,deploy_jar,nonprodCompileClassp io.confluent:kafka-avro-serializer:5.3.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.confluent:kafka-schema-registry-client:5.3.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.github.classgraph:classgraph:4.8.162=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.github.java-diff-utils:java-diff-utils:4.12=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,deploy_jar,errorprone,nonprodAnnotationProcessor,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath io.grpc:grpc-alts:1.59.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.grpc:grpc-api:1.59.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.grpc:grpc-auth:1.59.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -290,7 +291,7 @@ javax.activation:activation:1.1=compileClasspath,deploy_jar,nonprodCompileClassp javax.activation:javax.activation-api:1.2.0=compileClasspath,deploy_jar,jaxb,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.annotation:javax.annotation-api:1.3.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.annotation:jsr250-api:1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,soy,testCompileClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,errorprone,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath javax.jdo:jdo2-api:2.3-20090302111651=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.mail:mail:1.5.0-b01=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.persistence:javax.persistence-api:2.2=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath @@ -357,15 +358,12 @@ org.bouncycastle:bcprov-jdk15on:1.67=compileClasspath,deploy_jar,nonprodCompileC org.checkerframework:checker-compat-qual:2.5.3=compileClasspath,nonprodCompileClasspath,nonprodRuntime,runtime,testCompileClasspath org.checkerframework:checker-compat-qual:2.5.5=annotationProcessor,testAnnotationProcessor org.checkerframework:checker-compat-qual:2.5.6=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=errorprone,nonprodAnnotationProcessor org.checkerframework:checker-qual:3.12.0=checkstyle,soy +org.checkerframework:checker-qual:3.33.0=errorprone,nonprodAnnotationProcessor org.checkerframework:checker-qual:3.41.0=annotationProcessor,compileClasspath,nonprodCompileClasspath,nonprodRuntime,runtime,testAnnotationProcessor org.checkerframework:checker-qual:3.42.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor org.codehaus.jackson:jackson-core-asl:1.9.13=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.jackson:jackson-mapper-asl:1.9.13=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.codehaus.mojo:animal-sniffer-annotations:1.17=errorprone,nonprodAnnotationProcessor org.codehaus.mojo:animal-sniffer-annotations:1.23=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath org.conscrypt:conscrypt-openjdk-uber:2.5.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.easymock:easymock:3.0=css @@ -449,10 +447,7 @@ org.ow2.asm:asm-util:9.6=compileClasspath,deploy_jar,nonprodCompileClasspath,non org.ow2.asm:asm:7.0=soy org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,nonprodAnnotationProcessor,testAnnotationProcessor org.postgresql:postgresql:42.7.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntime,nonprodRuntimeClasspath,runtime,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.reflections:reflections:0.10.2=checkstyle org.rnorth.duct-tape:duct-tape:1.0.8=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -494,4 +489,4 @@ us.fatehi:schemacrawler-utility:16.10.1=compileClasspath,deploy_jar,nonprodCompi us.fatehi:schemacrawler:16.10.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath xerces:xmlParserAPIs:2.6.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath xpp3:xpp3:1.1.4c=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -empty=devtool,errorproneJavac,nomulus_test +empty=devtool,nomulus_test diff --git a/core/src/main/java/google/registry/batch/SendExpiringCertificateNotificationEmailAction.java b/core/src/main/java/google/registry/batch/SendExpiringCertificateNotificationEmailAction.java index b402e93d9..1701ce9f6 100644 --- a/core/src/main/java/google/registry/batch/SendExpiringCertificateNotificationEmailAction.java +++ b/core/src/main/java/google/registry/batch/SendExpiringCertificateNotificationEmailAction.java @@ -39,7 +39,6 @@ import google.registry.request.Action; import google.registry.request.Response; import google.registry.request.auth.Auth; import google.registry.util.EmailMessage; -import java.util.Date; import java.util.Optional; import javax.inject.Inject; import javax.mail.internet.AddressException; @@ -160,12 +159,11 @@ public class SendExpiringCertificateNotificationEmailAction implements Runnable try { ImmutableSet recipients = getEmailAddresses(registrar, Type.TECH); ImmutableSet ccs = getEmailAddresses(registrar, Type.ADMIN); - Date expirationDate = certificateChecker.getCertificate(certificate.get()).getNotAfter(); + DateTime expirationDate = + new DateTime(certificateChecker.getCertificate(certificate.get()).getNotAfter()); logger.atInfo().log( " %s SSL certificate of registrar '%s' will expire on %s.", - certificateType.getDisplayName(), - registrar.getRegistrarName(), - expirationDate.toString()); + certificateType.getDisplayName(), registrar.getRegistrarName(), expirationDate); if (recipients.isEmpty() && ccs.isEmpty()) { logger.atWarning().log( "Registrar %s contains no TECH nor ADMIN email addresses to receive notification" @@ -302,7 +300,7 @@ public class SendExpiringCertificateNotificationEmailAction implements Runnable @VisibleForTesting @SuppressWarnings("lgtm[java/dereferenced-value-may-be-null]") String getEmailBody( - String registrarName, CertificateType type, Date expirationDate, String registrarId) { + String registrarName, CertificateType type, DateTime expirationDate, String registrarId) { checkArgumentNotNull(expirationDate, "Expiration date cannot be null"); checkArgumentNotNull(type, "Certificate type cannot be null"); checkArgumentNotNull(registrarId, "Registrar Id cannot be null"); @@ -310,7 +308,7 @@ public class SendExpiringCertificateNotificationEmailAction implements Runnable expirationWarningEmailBodyText, registrarName, type.getDisplayName(), - DATE_FORMATTER.print(new DateTime(expirationDate)), + DATE_FORMATTER.print(expirationDate), registrarId); } diff --git a/core/src/main/java/google/registry/beam/common/RegistryPipelineOptions.java b/core/src/main/java/google/registry/beam/common/RegistryPipelineOptions.java index c74fbd7c4..71de316d6 100644 --- a/core/src/main/java/google/registry/beam/common/RegistryPipelineOptions.java +++ b/core/src/main/java/google/registry/beam/common/RegistryPipelineOptions.java @@ -63,7 +63,7 @@ public interface RegistryPipelineOptions extends GcpOptions { } /** - * Validates the GCP project and Registry environment settings in {@code option}. If project is + * Validates the GCP project and Registry environment settings in {@code options}. If project is * undefined, it is set according to the Registry environment; if project is defined but * inconsistent with the Registry environment, an {@link IllegalArgumentException} will be thrown. * diff --git a/core/src/main/java/google/registry/beam/rde/RdeIO.java b/core/src/main/java/google/registry/beam/rde/RdeIO.java index bc898f439..d97340d26 100644 --- a/core/src/main/java/google/registry/beam/rde/RdeIO.java +++ b/core/src/main/java/google/registry/beam/rde/RdeIO.java @@ -144,6 +144,7 @@ public class RdeIO { this.marshaller = new RdeMarshaller(validationMode); } + @SuppressWarnings("unused") @Setup public void setup() { Security.addProvider(new BouncyCastleProvider()); diff --git a/core/src/main/java/google/registry/beam/rde/RdePipeline.java b/core/src/main/java/google/registry/beam/rde/RdePipeline.java index c30088ea4..a016e7228 100644 --- a/core/src/main/java/google/registry/beam/rde/RdePipeline.java +++ b/core/src/main/java/google/registry/beam/rde/RdePipeline.java @@ -116,14 +116,14 @@ import org.joda.time.DateTime; *

The pipeline is broadly divided into two parts -- creating the {@link DepositFragment}s, and * processing them. * - *

Creating {@link DepositFragment}

+ *

Creating {@link DepositFragment}

* - *

{@link Registrar}

+ *

{@link Registrar}

* * Non-test registrar entities are loaded from Cloud SQL and marshalled into deposit fragments. They * are NOT rewound to the watermark. * - *

{@link EppResource}

+ *

{@link EppResource}

* * All EPP resources are loaded from the corresponding {@link HistoryEntry}, which has the resource * embedded. In general, we find most recent history entry before watermark and filter out the ones @@ -158,7 +158,7 @@ import org.joda.time.DateTime; * watermark to the domain at watermark. We then proceed to create the (pending deposit: deposit * fragment) pair for subordinate hosts using the added domain information. * - *

Processing {@link DepositFragment}

+ *

Processing {@link DepositFragment}

* * The (pending deposit: deposit fragment) pairs from different resources are combined and grouped * by pending deposit. For each pending deposit, all the relevant deposit fragments are written into diff --git a/core/src/main/java/google/registry/beam/spec11/SafeBrowsingTransforms.java b/core/src/main/java/google/registry/beam/spec11/SafeBrowsingTransforms.java index 179a2bce5..f6d5ce460 100644 --- a/core/src/main/java/google/registry/beam/spec11/SafeBrowsingTransforms.java +++ b/core/src/main/java/google/registry/beam/spec11/SafeBrowsingTransforms.java @@ -225,7 +225,7 @@ public class SafeBrowsingTransforms { new JSONObject( CharStreams.toString( new InputStreamReader(response.getEntity().getContent(), UTF_8))); - logger.atInfo().log("Got response: %s", responseBody.toString()); + logger.atInfo().log("Got response: %s", responseBody); if (responseBody.length() == 0) { logger.atInfo().log("Response was empty, no threats detected."); } else { diff --git a/core/src/main/java/google/registry/bigquery/BigqueryConnection.java b/core/src/main/java/google/registry/bigquery/BigqueryConnection.java index 9baefb6d4..8e6873128 100644 --- a/core/src/main/java/google/registry/bigquery/BigqueryConnection.java +++ b/core/src/main/java/google/registry/bigquery/BigqueryConnection.java @@ -144,7 +144,8 @@ public class BigqueryConnection implements AutoCloseable { public Builder setPollInterval(Duration pollInterval) { checkArgument( !pollInterval.isShorterThan(MIN_POLL_INTERVAL), - "poll interval must be at least %ldms", MIN_POLL_INTERVAL.getMillis()); + "poll interval must be at least %s ms", + MIN_POLL_INTERVAL.getMillis()); instance.pollInterval = pollInterval; return this; } @@ -216,7 +217,7 @@ public class BigqueryConnection implements AutoCloseable { } public Builder timeToLive(Duration duration) { - this.table.setExpirationTime(new DateTime(UTC).plus(duration).getMillis()); + this.table.setExpirationTime(DateTime.now(UTC).plus(duration).getMillis()); return this; } @@ -556,7 +557,6 @@ public class BigqueryConnection implements AutoCloseable { /** * Launch a job, but do not wait for it to complete. * - * @throws BigqueryJobFailureException */ private Job launchJob(Job job, @Nullable AbstractInputStreamContent data) { verify(job.getStatus() == null); @@ -572,7 +572,6 @@ public class BigqueryConnection implements AutoCloseable { /** * Synchronously waits for a job to complete that's already been launched. * - * @throws BigqueryJobFailureException */ private Job waitForJob(Job job) { verify(job.getStatus() != null); @@ -591,7 +590,6 @@ public class BigqueryConnection implements AutoCloseable { /** * Checks completed job for errors. * - * @throws BigqueryJobFailureException */ private static Job checkJob(Job job) { verify(job.getStatus() != null); diff --git a/core/src/main/java/google/registry/bigquery/BigqueryJobFailureException.java b/core/src/main/java/google/registry/bigquery/BigqueryJobFailureException.java index 8aea0d603..28bf1b662 100644 --- a/core/src/main/java/google/registry/bigquery/BigqueryJobFailureException.java +++ b/core/src/main/java/google/registry/bigquery/BigqueryJobFailureException.java @@ -72,7 +72,7 @@ public final class BigqueryJobFailureException extends RuntimeException { /** * Returns a short error code describing why this job failed. * - *

Sample Reasons

+ *

Sample Reasons: * *

* - * @see - * Troubleshooting Errors + * @see Troubleshooting + * Errors */ public String getReason() { if (jobStatus != null) { diff --git a/core/src/main/java/google/registry/bsa/BlockListFetcher.java b/core/src/main/java/google/registry/bsa/BlockListFetcher.java index bb9a54650..22f6d7907 100644 --- a/core/src/main/java/google/registry/bsa/BlockListFetcher.java +++ b/core/src/main/java/google/registry/bsa/BlockListFetcher.java @@ -117,10 +117,10 @@ public class BlockListFetcher { private String readChecksum() throws IOException { StringBuilder checksum = new StringBuilder(); char ch; - while ((ch = peekInputStream()) != (char) -1 && !Character.isWhitespace(ch)) { + while ((ch = peekInputStream()) != Character.MAX_VALUE && !Character.isWhitespace(ch)) { checksum.append((char) inputStream.read()); } - while ((ch = peekInputStream()) != (char) -1 && Character.isWhitespace(ch)) { + while ((ch = peekInputStream()) != Character.MAX_VALUE && Character.isWhitespace(ch)) { inputStream.read(); } return checksum.toString(); diff --git a/core/src/main/java/google/registry/bsa/BsaDiffCreator.java b/core/src/main/java/google/registry/bsa/BsaDiffCreator.java index b4175e810..b79d0f067 100644 --- a/core/src/main/java/google/registry/bsa/BsaDiffCreator.java +++ b/core/src/main/java/google/registry/bsa/BsaDiffCreator.java @@ -70,7 +70,7 @@ class BsaDiffCreator { BsaDiff createDiff(DownloadSchedule schedule, IdnChecker idnChecker) { String currentJobName = schedule.jobName(); Optional previousJobName = schedule.latestCompleted().map(CompletedJob::jobName); - /** + /* * Memory usage is a concern when creating a diff, when the newest download needs to be held in * memory in its entirety. The top-grade AppEngine VM has 3GB of memory, leaving less than 1.5GB * to application memory footprint after subtracting overheads due to copying garbage collection @@ -92,7 +92,7 @@ class BsaDiffCreator { try (Stream currentStream = loadBlockLists(currentJobName); Stream previousStream = previousJobName.map(this::loadBlockLists).orElseGet(Stream::of)) { - /** + /* * Load current label/order pairs into a multimap, which will contain both new labels and * those that stay on when processing is done. */ @@ -123,7 +123,7 @@ class BsaDiffCreator { toMultimap( LabelOrderPair::label, LabelOrderPair::orderId, this::listBackedMultiMap)); - /** + /* * Labels in `newAndRemaining`: * *
    @@ -245,7 +245,7 @@ class BsaDiffCreator { abstract Long orderId(); - static LabelOrderPair of(String key, Long value) { + static LabelOrderPair of(String key, Long value) { return new AutoValue_BsaDiffCreator_LabelOrderPair(key, value); } } diff --git a/core/src/main/java/google/registry/bsa/persistence/BsaDomainRefresh.java b/core/src/main/java/google/registry/bsa/persistence/BsaDomainRefresh.java index 756d82fa9..e5073f36d 100644 --- a/core/src/main/java/google/registry/bsa/persistence/BsaDomainRefresh.java +++ b/core/src/main/java/google/registry/bsa/persistence/BsaDomainRefresh.java @@ -86,6 +86,7 @@ class BsaDomainRefresh { return this; } + @SuppressWarnings("AmbiguousMethodReference") VKey vKey() { return vKey(jobId); } diff --git a/core/src/main/java/google/registry/bsa/persistence/DownloadSchedule.java b/core/src/main/java/google/registry/bsa/persistence/DownloadSchedule.java index ac78597c4..85272b09a 100644 --- a/core/src/main/java/google/registry/bsa/persistence/DownloadSchedule.java +++ b/core/src/main/java/google/registry/bsa/persistence/DownloadSchedule.java @@ -84,9 +84,7 @@ public abstract class DownloadSchedule { BsaDownload bsaDownload = tm().loadByKey(BsaDownload.vKey(jobId())); verify( bsaDownload.getStage().equals(DownloadStage.DOWNLOAD_BLOCK_LISTS), - "Invalid invocation. May only invoke during the DOWNLOAD stage.", - bsaDownload.getStage(), - stage); + "Invalid invocation. May only invoke during the DOWNLOAD stage."); bsaDownload.setStage(stage); bsaDownload.setChecksums(checksums); tm().put(bsaDownload); diff --git a/core/src/main/java/google/registry/config/DelegatedCredentials.java b/core/src/main/java/google/registry/config/DelegatedCredentials.java index ce7902df6..d1a05d9e0 100644 --- a/core/src/main/java/google/registry/config/DelegatedCredentials.java +++ b/core/src/main/java/google/registry/config/DelegatedCredentials.java @@ -112,7 +112,6 @@ public class DelegatedCredentials extends GoogleCredentials { * @param clock Used for setting token expiration times. * @param tokenRefreshDelay The lifetime of each token. Should not exceed one hour according to * GCP recommendations. - * @return */ static DelegatedCredentials createSelfSignedDelegatedCredential( ServiceAccountSigner signer, @@ -197,7 +196,9 @@ public class DelegatedCredentials extends GoogleCredentials { String accessToken = validateString(responseData, "access_token", PARSE_ERROR_PREFIX); int expiresInSeconds = validateInt32(responseData, "expires_in", PARSE_ERROR_PREFIX); long expiresAtMilliseconds = clock.nowUtc().getMillis() + expiresInSeconds * 1000L; - return new AccessToken(accessToken, new Date(expiresAtMilliseconds)); + @SuppressWarnings("JavaUtilDate") + AccessToken token = new AccessToken(accessToken, new Date(expiresAtMilliseconds)); + return token; } String createAssertion(JsonFactory jsonFactory, long currentTime) throws IOException { diff --git a/core/src/main/java/google/registry/config/RegistryConfig.java b/core/src/main/java/google/registry/config/RegistryConfig.java index 30d0391a5..c107ba1f3 100644 --- a/core/src/main/java/google/registry/config/RegistryConfig.java +++ b/core/src/main/java/google/registry/config/RegistryConfig.java @@ -253,7 +253,11 @@ public final class RegistryConfig { return projectId + "-zonefiles"; } - /** @see RegistryConfig#getDatabaseRetention() */ + /** + * Returns the length of time before commit logs should be deleted from the database. + * + * @see RegistryConfig#getDatabaseRetention() + */ @Provides @Config("databaseRetention") public static Duration provideDatabaseRetention() { @@ -294,7 +298,11 @@ public final class RegistryConfig { return projectId + "-icann-brda"; } - /** @see google.registry.rde.BrdaCopyAction */ + /** + * Returns the day of the week on which BRDA deposits should be made. + * + * @see google.registry.rde.BrdaCopyAction + */ @Provides @Config("brdaDayOfWeek") public static int provideBrdaDayOfWeek() { diff --git a/core/src/main/java/google/registry/cron/TldFanoutAction.java b/core/src/main/java/google/registry/cron/TldFanoutAction.java index 714008354..1e76c565c 100644 --- a/core/src/main/java/google/registry/cron/TldFanoutAction.java +++ b/core/src/main/java/google/registry/cron/TldFanoutAction.java @@ -53,7 +53,7 @@ import javax.inject.Inject; /** * Action for fanning out cron tasks shared by TLD. * - *

    Parameters Reference

    + *

    Parameters Reference

    * *
      *
    • {@code endpoint} (Required) URL path of servlet to launch. This may contain pathargs. @@ -68,7 +68,7 @@ import javax.inject.Inject; * task. *
    * - *

    Patharg Reference

    + *

    Patharg Reference

    * *

    The following values may be specified inside the "endpoint" param. * diff --git a/core/src/main/java/google/registry/dns/DnsMetrics.java b/core/src/main/java/google/registry/dns/DnsMetrics.java index 1e935fe86..840334580 100644 --- a/core/src/main/java/google/registry/dns/DnsMetrics.java +++ b/core/src/main/java/google/registry/dns/DnsMetrics.java @@ -245,12 +245,13 @@ public class DnsMetrics { if (batchSize > 0) { normalizedProcessingTimePerCommitDist.record( - (double) processingDuration.getMillis() / batchSize, - tld, status.name(), dnsWriter); + processingDuration.getMillis() / (double) batchSize, tld, status.name(), dnsWriter); normalizedProcessingTimePerItemDist.record( - (double) processingDuration.getMillis() / batchSize, + processingDuration.getMillis() / (double) batchSize, batchSize, - tld, status.name(), dnsWriter); + tld, + status.name(), + dnsWriter); } totalBatchSizePerCommitDist.record(batchSize, tld, status.name(), dnsWriter); diff --git a/core/src/main/java/google/registry/dns/writer/VoidDnsWriterModule.java b/core/src/main/java/google/registry/dns/writer/VoidDnsWriterModule.java index b3378dcc9..9ace1ce36 100644 --- a/core/src/main/java/google/registry/dns/writer/VoidDnsWriterModule.java +++ b/core/src/main/java/google/registry/dns/writer/VoidDnsWriterModule.java @@ -14,6 +14,7 @@ package google.registry.dns.writer; +import dagger.Binds; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; @@ -23,14 +24,12 @@ import javax.inject.Named; /** Dagger module that disables DNS updates. */ @Module -public final class VoidDnsWriterModule { +public abstract class VoidDnsWriterModule { - @Provides + @Binds @IntoMap @StringKey(VoidDnsWriter.NAME) - static DnsWriter provideWriter(VoidDnsWriter writer) { - return writer; - } + abstract DnsWriter provideWriter(VoidDnsWriter writer); @Provides @IntoSet diff --git a/core/src/main/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java b/core/src/main/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java index d4ec3fd65..b47633a22 100644 --- a/core/src/main/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java +++ b/core/src/main/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java @@ -363,8 +363,8 @@ public class CloudDnsWriter extends BaseDnsWriter { *

    This call should be used in conjunction with {@link #getResourceRecordsForDomains} in a * get-and-set retry loop. * - *

    See {@link "Troubleshoot Cloud - * DNS"} for a list of errors produced by the Google Cloud DNS API. + *

    See Troubleshoot Cloud DNS for a + * list of errors produced by the Google Cloud DNS API. * * @throws ZoneStateException if the operation could not be completely successfully because the * records to delete do not exist, already exist or have been modified with different diff --git a/core/src/main/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java b/core/src/main/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java index ed5901573..3329fe2af 100644 --- a/core/src/main/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java +++ b/core/src/main/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterModule.java @@ -14,6 +14,7 @@ package google.registry.dns.writer.dnsupdate; +import dagger.Binds; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; @@ -32,12 +33,10 @@ public abstract class DnsUpdateWriterModule { return SocketFactory.getDefault(); } - @Provides + @Binds @IntoMap @StringKey(DnsUpdateWriter.NAME) - static DnsWriter provideWriter(DnsUpdateWriter writer) { - return writer; - } + abstract DnsWriter provideWriter(DnsUpdateWriter writer); @Provides @IntoSet diff --git a/core/src/main/java/google/registry/flows/ServerTridProviderModule.java b/core/src/main/java/google/registry/flows/ServerTridProviderModule.java index 96c29aa46..267de00cb 100644 --- a/core/src/main/java/google/registry/flows/ServerTridProviderModule.java +++ b/core/src/main/java/google/registry/flows/ServerTridProviderModule.java @@ -14,15 +14,13 @@ package google.registry.flows; +import dagger.Binds; import dagger.Module; -import dagger.Provides; /** Dagger module for the server Trid provider. */ @Module -public class ServerTridProviderModule { +public abstract class ServerTridProviderModule { - @Provides - static ServerTridProvider provideServerTridProvider(ServerTridProviderImpl defaultProvider) { - return defaultProvider; - } + @Binds + abstract ServerTridProvider provideServerTridProvider(ServerTridProviderImpl defaultProvider); } diff --git a/core/src/main/java/google/registry/flows/certs/CertificateChecker.java b/core/src/main/java/google/registry/flows/certs/CertificateChecker.java index 953937fd8..81dda2971 100644 --- a/core/src/main/java/google/registry/flows/certs/CertificateChecker.java +++ b/core/src/main/java/google/registry/flows/certs/CertificateChecker.java @@ -42,9 +42,10 @@ import org.bouncycastle.openssl.jcajce.JcaMiscPEMGenerator; import org.bouncycastle.util.io.pem.PemObjectGenerator; import org.bouncycastle.util.io.pem.PemWriter; import org.joda.time.DateTime; +import org.joda.time.DateTimeComparator; import org.joda.time.Days; -/** An utility to check that a given certificate meets our requirements */ +/** A utility to check that a given certificate meets our requirements */ public class CertificateChecker { private final ImmutableSortedMap maxValidityLengthSchedule; @@ -162,9 +163,9 @@ public class CertificateChecker { // Check if currently in validity period Date now = clock.nowUtc().toDate(); - if (certificate.getNotAfter().before(now)) { + if (DateTimeComparator.getInstance().compare(certificate.getNotAfter(), now) < 0) { violations.add(CertificateViolation.EXPIRED); - } else if (certificate.getNotBefore().after(now)) { + } else if (DateTimeComparator.getInstance().compare(certificate.getNotBefore(), now) > 0) { violations.add(CertificateViolation.NOT_YET_VALID); } @@ -231,8 +232,8 @@ public class CertificateChecker { X509Certificate certificate = getCertificate(certificateStr); DateTime now = clock.nowUtc(); // expiration date is one day after lastValidDate - Date lastValidDate = certificate.getNotAfter(); - if (lastValidDate.before(now.toDate())) { + DateTime lastValidDate = new DateTime(certificate.getNotAfter()); + if (lastValidDate.isBefore(now)) { return false; } /* @@ -242,12 +243,11 @@ public class CertificateChecker { * 2) client has received notification but the interval between now and * lastExpiringNotificationSentDate is greater than expirationWarningIntervalDays. */ - return !lastValidDate.after(now.plusDays(expirationWarningDays).toDate()) + return !lastValidDate.isAfter(now.plusDays(expirationWarningDays)) && (lastExpiringNotificationSentDate.equals(START_OF_TIME) || !lastExpiringNotificationSentDate .plusDays(expirationWarningIntervalDays) - .toDate() - .after(now.toDate())); + .isAfter(now)); } private String getViolationDisplayMessage(CertificateViolation certificateViolation) { diff --git a/core/src/main/java/google/registry/keyring/api/PgpHelper.java b/core/src/main/java/google/registry/keyring/api/PgpHelper.java index 5e3849ef4..2addf4b1e 100644 --- a/core/src/main/java/google/registry/keyring/api/PgpHelper.java +++ b/core/src/main/java/google/registry/keyring/api/PgpHelper.java @@ -104,9 +104,12 @@ public final class PgpHelper { PGPPublicKey publicKey = lookupPublicKey(publics, query, want); PGPPrivateKey privateKey; try { - PGPSecretKey secret = verifyNotNull(privates.getSecretKey(publicKey.getKeyID()), - "Keyring missing private key associated with public key id: %x (query '%s')", - publicKey.getKeyID(), query); + PGPSecretKey secret = + verifyNotNull( + privates.getSecretKey(publicKey.getKeyID()), + "Keyring missing private key associated with public key id: %s (query %s)", + publicKey.getKeyID(), + query); // We do not support putting a password on the private key so we're just going to // put char[0] here. privateKey = secret.extractPrivateKey( diff --git a/core/src/main/java/google/registry/model/ResourceTransferUtils.java b/core/src/main/java/google/registry/model/ResourceTransferUtils.java index 378d084ed..0288ad39e 100644 --- a/core/src/main/java/google/registry/model/ResourceTransferUtils.java +++ b/core/src/main/java/google/registry/model/ResourceTransferUtils.java @@ -57,6 +57,7 @@ public final class ResourceTransferUtils { public static TransferResponse createTransferResponse( EppResource eppResource, TransferData transferData) { assertIsContactOrDomain(eppResource); + @SuppressWarnings("NonCanonicalType") TransferResponse.Builder builder; if (eppResource instanceof Contact) { builder = new ContactTransferResponse.Builder().setContactId(eppResource.getForeignKey()); diff --git a/core/src/main/java/google/registry/model/domain/DomainBase.java b/core/src/main/java/google/registry/model/domain/DomainBase.java index 95b84ff9c..13a55e213 100644 --- a/core/src/main/java/google/registry/model/domain/DomainBase.java +++ b/core/src/main/java/google/registry/model/domain/DomainBase.java @@ -120,7 +120,7 @@ public class DomainBase extends EppResource * from (creationTime, deletionTime) there can only be one domain in the database with this name. * However, there can be many domains with the same name and non-overlapping lifetimes. * - * @invariant domainName == domainName.toLowerCase(Locale.ENGLISH) + *

    Invariant: domainName == domainName.toLowerCase(Locale.ENGLISH) */ @Expose String domainName; diff --git a/core/src/main/java/google/registry/model/eppoutput/Result.java b/core/src/main/java/google/registry/model/eppoutput/Result.java index afd767976..21b1acc63 100644 --- a/core/src/main/java/google/registry/model/eppoutput/Result.java +++ b/core/src/main/java/google/registry/model/eppoutput/Result.java @@ -147,7 +147,7 @@ public class Result extends ImmutableObject { this.msgLang = "en"; // All of our messages are English. } - /** @return true iff the response code is in the 1xxx category, representing success. */ + /** Returns true iff the response code is in the 1xxx category, representing success. */ public boolean isSuccess() { return code < 2000; } diff --git a/core/src/main/java/google/registry/model/host/HostBase.java b/core/src/main/java/google/registry/model/host/HostBase.java index f28138b48..7a29c8c9d 100644 --- a/core/src/main/java/google/registry/model/host/HostBase.java +++ b/core/src/main/java/google/registry/model/host/HostBase.java @@ -122,6 +122,7 @@ public class HostBase extends EppResource { @Deprecated @Override + @SuppressWarnings("InlineMeSuggester") public HostBase cloneProjectedAtTime(DateTime now) { return this; } diff --git a/core/src/main/java/google/registry/model/registrar/Registrar.java b/core/src/main/java/google/registry/model/registrar/Registrar.java index ed7531d92..84ca2c17b 100644 --- a/core/src/main/java/google/registry/model/registrar/Registrar.java +++ b/core/src/main/java/google/registry/model/registrar/Registrar.java @@ -892,7 +892,11 @@ public class Registrar extends UpdateAutoTimestampEntity implements Buildable, J return this; } - /** @throws IllegalArgumentException if provided passcode is not 5-digit numeric */ + /** + * Set the phone passcode. + * + * @throws IllegalArgumentException if provided passcode is not 5-digit numeric + */ public Builder setPhonePasscode(String phonePasscode) { checkArgument( phonePasscode == null || PHONE_PASSCODE_PATTERN.matcher(phonePasscode).matches(), diff --git a/core/src/main/java/google/registry/pricing/PricingModule.java b/core/src/main/java/google/registry/pricing/PricingModule.java index 9991f245c..3d7a33ee8 100644 --- a/core/src/main/java/google/registry/pricing/PricingModule.java +++ b/core/src/main/java/google/registry/pricing/PricingModule.java @@ -14,8 +14,8 @@ package google.registry.pricing; +import dagger.Binds; import dagger.Module; -import dagger.Provides; import dagger.multibindings.IntoMap; import dagger.multibindings.StringKey; import google.registry.model.pricing.PremiumPricingEngine; @@ -25,15 +25,14 @@ import google.registry.model.pricing.StaticPremiumListPricingEngine; * Dagger module for injecting pricing engines. * *

    To add a new pricing engine, create a new class that implements {@link PremiumPricingEngine}, - * and add a module that provides an instance of {@link PremiumPricingEngine} with a unique - * {@link StringKey} annotation, and also @Provides @IntoMap annotations. + * and add a module that provides an instance of {@link PremiumPricingEngine} with a unique {@link + * StringKey} annotation, and also @Provides @IntoMap annotations. */ @Module -public class PricingModule { +public abstract class PricingModule { - @Provides @IntoMap + @Binds + @IntoMap @StringKey(StaticPremiumListPricingEngine.NAME) - static PremiumPricingEngine provideStaticPremiumList(StaticPremiumListPricingEngine engine) { - return engine; - } + abstract PremiumPricingEngine provideStaticPremiumList(StaticPremiumListPricingEngine engine); } diff --git a/core/src/main/java/google/registry/rdap/RdapObjectClasses.java b/core/src/main/java/google/registry/rdap/RdapObjectClasses.java index 8d1f33b62..67583931f 100644 --- a/core/src/main/java/google/registry/rdap/RdapObjectClasses.java +++ b/core/src/main/java/google/registry/rdap/RdapObjectClasses.java @@ -195,7 +195,9 @@ final class RdapObjectClasses { *

    Not part of the spec, but seems convenient. */ private abstract static class RdapObjectBase extends ReplyPayloadBase { - @JsonableElement final ObjectClassName objectClassName; + @SuppressWarnings("unused") + @JsonableElement + final ObjectClassName objectClassName; @JsonableElement abstract Optional handle(); @JsonableElement abstract ImmutableList publicIds(); diff --git a/core/src/main/java/google/registry/rde/Ghostryde.java b/core/src/main/java/google/registry/rde/Ghostryde.java index 51393c6ac..a39e8ae44 100644 --- a/core/src/main/java/google/registry/rde/Ghostryde.java +++ b/core/src/main/java/google/registry/rde/Ghostryde.java @@ -44,10 +44,9 @@ import org.joda.time.DateTime; /** * Utility class for reading and writing data in the ghostryde container format. * - *

    Whenever we stage sensitive data to cloud storage (like XML RDE deposit data), we - * GHOST RYDE IT first to keep it safe from the prying - * eyes of anyone with access to the Google Cloud - * Console. + *

    Whenever we stage sensitive data to cloud storage (like XML RDE deposit data), we GHOST RYDE IT first to keep it safe from the prying eyes + * of anyone with access to the Google Cloud Console. * *

    The encryption is similar to the "regular" RyDE RDE deposit file encryption. The main * difference (and the reason we had to create a custom encryption) is that the RDE deposit has a @@ -63,35 +62,37 @@ import org.joda.time.DateTime; * *

    Here's how you write a file: * - *

       {@code
    + * 
    {@code
      * File in = new File("lol.txt");
      * File out = new File("lol.txt.ghostryde");
      * File lengthOut = new File("lol.length.ghostryde");
      * try (OutputStream output = new FileOutputStream(out);
      *     OutputStream lengthOutput = new FileOutputStream(lengthOut);
      *     OutputStream ghostrydeEncoder = Ghostryde.encoder(output, publicKey, lengthOut);
    - *     InputStream input = new FileInputStream(in)) {
    - *   ByteStreams.copy(input, ghostrydeEncoder);
    - * }}
    + * InputStream input = new FileInputStream(in)) { + * ByteStreams.copy(input, ghostrydeEncoder); + * } + * }
    * *

    Here's how you read a file: * - *

       {@code
    + * 
    {@code
      * File in = new File("lol.txt.ghostryde");
      * File out = new File("lol.txt");
      * Ghostryde ghost = new Ghostryde(1024);
      * try (InputStream fileInput = new FileInputStream(in);
      *     InputStream ghostrydeDecoder = new Ghostryde.decoder(fileInput, privateKey);
    - *     OutputStream fileOutput = new FileOutputStream(out)) {
    - *   ByteStreams.copy(ghostryderDecoder, fileOutput);
    - * }}
    + * OutputStream fileOutput = new FileOutputStream(out)) { + * ByteStreams.copy(ghostryderDecoder, fileOutput); + * } + * }
    * *

    Simple API

    * *

    If you're writing test code or are certain your data can fit in memory, you might find these * static methods more convenient: * - *

       {@code
    + * 
    {@code
      * byte[] data = "hello kitty".getBytes(UTF_8);
      * byte[] blob = Ghostryde.encode(data, publicKey);
      * byte[] result = Ghostryde.decode(blob, privateKey);
    diff --git a/core/src/main/java/google/registry/rde/JSchSshSession.java b/core/src/main/java/google/registry/rde/JSchSshSession.java
    index 0fa7646e0..8011a76c0 100644
    --- a/core/src/main/java/google/registry/rde/JSchSshSession.java
    +++ b/core/src/main/java/google/registry/rde/JSchSshSession.java
    @@ -86,8 +86,6 @@ final class JSchSshSession implements Closeable {
       /**
        * Opens a new SFTP channel over this SSH session.
        *
    -   * @throws JSchException
    -   * @throws SftpException
        * @see JSchSftpChannel
        */
       public JSchSftpChannel openSftpChannel() throws JSchException, SftpException {
    diff --git a/core/src/main/java/google/registry/rde/RdeMarshaller.java b/core/src/main/java/google/registry/rde/RdeMarshaller.java
    index 88d0e4ed8..6667f6ac8 100644
    --- a/core/src/main/java/google/registry/rde/RdeMarshaller.java
    +++ b/core/src/main/java/google/registry/rde/RdeMarshaller.java
    @@ -39,6 +39,7 @@ import google.registry.xml.XmlException;
     import google.registry.xml.XmlFragmentMarshaller;
     import java.io.ByteArrayOutputStream;
     import java.io.Serializable;
    +import java.io.UnsupportedEncodingException;
     import java.util.Collection;
     import javax.annotation.concurrent.NotThreadSafe;
     import javax.xml.bind.JAXBElement;
    @@ -84,14 +85,16 @@ public final class RdeMarshaller implements Serializable {
         ByteArrayOutputStream os = new ByteArrayOutputStream();
         try {
           XjcXmlTransformer.marshal(deposit, os, UTF_8, validationMode);
    -    } catch (XmlException e) {
    +      // TODO: Call StandardCharset.UTF_8 instead once we are one Java 17 runtime.
    +      String rdeDocument = os.toString("UTF-8");
    +      String marker = "\n";
    +      int startOfContents = rdeDocument.indexOf(marker);
    +      verify(startOfContents > 0, "Bad RDE document:\n%s", rdeDocument);
    +      return rdeDocument.substring(0, startOfContents + marker.length());
    +    } catch (XmlException | UnsupportedEncodingException e) {
           throw new RuntimeException(e);
         }
    -    String rdeDocument = os.toString();
    -    String marker = "\n";
    -    int startOfContents = rdeDocument.indexOf(marker);
    -    verify(startOfContents > 0, "Bad RDE document:\n%s", rdeDocument);
    -    return rdeDocument.substring(0, startOfContents + marker.length());
    +
       }
     
       /** Returns bottom-portion of XML document. */
    diff --git a/core/src/main/java/google/registry/rde/RdeStagingAction.java b/core/src/main/java/google/registry/rde/RdeStagingAction.java
    index 898a55f0c..636f8ea20 100644
    --- a/core/src/main/java/google/registry/rde/RdeStagingAction.java
    +++ b/core/src/main/java/google/registry/rde/RdeStagingAction.java
    @@ -68,13 +68,13 @@ import org.joda.time.Duration;
      * Action that kicks off a Dataflow job to stage escrow deposit XML files on GCS for RDE/BRDA for
      * all TLDs.
      *
    - * 

    Pending Deposits

    + *

    Pending Deposits

    * *

    This task starts by asking {@link PendingDepositChecker} which deposits need to be generated. * If there's nothing to deposit, we return 204 No Content; otherwise, we fire off a job and * redirect to its status GUI. The task can also be run in manual operation, as described below. * - *

    Dataflow

    + *

    Dataflow

    * * The Dataflow job finds the most recent history entry on or before watermark for each resource * type and loads the embedded resource from it, which is then projected to watermark time to @@ -84,9 +84,9 @@ import org.joda.time.Duration; * be included in the corresponding pending deposit. * *

    {@link Registrar} entities, both active and inactive, are included in all deposits. They are - * not rewinded point-in-time. + * not rewound point-in-time. * - *

    Afterward

    + *

    Afterward

    * *

    The XML deposit files generated by this job are humongous. A tiny XML report file is generated * for each deposit, telling us how much of what it contains. @@ -98,7 +98,7 @@ import org.joda.time.Duration; *

    To generate escrow deposits manually and locally, use the {@code nomulus} tool command {@code * GenerateEscrowDepositCommand}. * - *

    Logging

    + *

    Logging

    * *

    To identify the reduce worker request for a deposit in App Engine's log viewer, you can use * search text like {@code tld=soy}, {@code watermark=2015-01-01}, and {@code mode=FULL}. @@ -161,7 +161,7 @@ import org.joda.time.Duration; * *

    Determinism

    * - *

    The filename of an escrow deposit is determistic for a given (TLD, watermark, {@linkplain + *

    The filename of an escrow deposit is deterministic for a given (TLD, watermark, {@linkplain * RdeMode mode}) triplet. Its generated contents is deterministic in all the ways that we care * about. Its view of the database is strongly consistent in Cloud SQL automatically by nature of * the initial query for the history entry running at {@code READ_COMMITTED} transaction isolation diff --git a/core/src/main/java/google/registry/rde/RdeUtils.java b/core/src/main/java/google/registry/rde/RdeUtils.java index 9e3cc3e5c..0760400ab 100644 --- a/core/src/main/java/google/registry/rde/RdeUtils.java +++ b/core/src/main/java/google/registry/rde/RdeUtils.java @@ -100,8 +100,7 @@ public final class RdeUtils { } /** - * Generates an ID matching the regex {@code \w{1,13} } from a millisecond - * timestamp. + * Generates an ID matching the regex {@code \w{1,13}} from a millisecond timestamp. * *

    This routine works by turning the number of UTC milliseconds from the UNIX epoch into a * big-endian byte-array which is then converted to a base32 string without padding that's no diff --git a/core/src/main/java/google/registry/reporting/icann/IcannReportingUploadAction.java b/core/src/main/java/google/registry/reporting/icann/IcannReportingUploadAction.java index af9d88e79..27d6e6989 100644 --- a/core/src/main/java/google/registry/reporting/icann/IcannReportingUploadAction.java +++ b/core/src/main/java/google/registry/reporting/icann/IcannReportingUploadAction.java @@ -145,7 +145,7 @@ public final class IcannReportingUploadAction implements Runnable { + " exist.", cursorType, tldStr, filename, gcsFilename.getName(), gcsFilename.getBucket()); if (clock.nowUtc().dayOfMonth().get() == 1) { - logger.atInfo().log(logMessage + " This report may not have been staged yet."); + logger.atInfo().log("%s This report may not have been staged yet.", logMessage); } else { logger.atSevere().log(logMessage); } diff --git a/core/src/main/java/google/registry/request/JsonResponse.java b/core/src/main/java/google/registry/request/JsonResponse.java index 100e46709..516e2dbc3 100644 --- a/core/src/main/java/google/registry/request/JsonResponse.java +++ b/core/src/main/java/google/registry/request/JsonResponse.java @@ -37,7 +37,11 @@ public class JsonResponse { this.response = rsp; } - /** @see Response#setStatus */ + /** + * Sets the status. + * + * @see Response#setStatus + */ public void setStatus(int status) { response.setStatus(status); } @@ -54,12 +58,20 @@ public class JsonResponse { response.setPayload(JSON_SAFETY_PREFIX + toJSONString(checkNotNull(responseMap))); } - /** @see Response#setHeader */ + /** + * Sets the header. + * + * @see Response#setHeader + */ public void setHeader(String header, String value) { response.setHeader(header, value); } - /** @see Response#setDateHeader */ + /** + * Sets the date header. + * + *

    see Response#setDateHeader + */ public void setDateHeader(String header, DateTime timestamp) { response.setDateHeader(header, timestamp); } diff --git a/core/src/main/java/google/registry/request/RequestHandler.java b/core/src/main/java/google/registry/request/RequestHandler.java index 6611c8295..309d3bd0e 100644 --- a/core/src/main/java/google/registry/request/RequestHandler.java +++ b/core/src/main/java/google/registry/request/RequestHandler.java @@ -42,10 +42,11 @@ import org.joda.time.Duration; *

    This class creates an HTTP request processor from a Dagger component. It routes requests from * your servlet to an {@link Action @Action} annotated handler class. * - *

    Component Definition

    + *

    Component Definition

    + * + *

    Action instances are supplied on a per-request basis by invoking the methods on {@code C}. For + * example: * - *

    Action instances are supplied on a per-request basis by invoking the methods on {@code C}. - * For example: *

      * {@literal @Component}
      * interface ServerComponent {
    @@ -53,12 +54,13 @@ import org.joda.time.Duration;
      * }
    * *

    The rules for component methods are as follows: + * *

      - *
    1. Methods whose raw return type does not implement {@code Runnable} will be ignored - *
    2. Methods whose raw return type does not have an {@code @Action} annotation are ignored + *
    3. Methods whose raw return type does not implement {@code Runnable} will be ignored + *
    4. Methods whose raw return type does not have an {@code @Action} annotation are ignored *
    * - *

    Security Features

    + *

    Security Features

    * * @param request component type */ diff --git a/core/src/main/java/google/registry/tools/CommandUtilities.java b/core/src/main/java/google/registry/tools/CommandUtilities.java index 7a30a8572..6e1448d2b 100644 --- a/core/src/main/java/google/registry/tools/CommandUtilities.java +++ b/core/src/main/java/google/registry/tools/CommandUtilities.java @@ -46,6 +46,8 @@ class CommandUtilities { } } + // TODO: change Strings.repeat("-", n) to "-".repeat(n) once we are on Java 17 runtime. + @SuppressWarnings("InlineMeInliner") static String addHeader(String header, String body) { return String.format("%s:\n%s\n%s", header, Strings.repeat("-", header.length() + 1), body); } diff --git a/core/src/main/java/google/registry/tools/GetReservedListCommand.java b/core/src/main/java/google/registry/tools/GetReservedListCommand.java index e9b26bed5..9c3df49d0 100644 --- a/core/src/main/java/google/registry/tools/GetReservedListCommand.java +++ b/core/src/main/java/google/registry/tools/GetReservedListCommand.java @@ -16,7 +16,6 @@ package google.registry.tools; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; -import com.google.common.collect.Streams; import google.registry.model.tld.label.ReservedList.ReservedListEntry; import google.registry.model.tld.label.ReservedListDao; import java.util.Comparator; @@ -37,11 +36,11 @@ public class GetReservedListCommand implements Command { if (ReservedListDao.getLatestRevision(reservedListName).isPresent()) { System.out.printf( "%s\n", - Streams.stream( - ReservedListDao.getLatestRevision(reservedListName) - .get() - .getReservedListEntries() - .values()) + ReservedListDao.getLatestRevision(reservedListName) + .get() + .getReservedListEntries() + .values() + .stream() .sorted(Comparator.comparing(ReservedListEntry::getDomainLabel)) .map(ReservedListEntry::toString) .collect(Collectors.joining("\n"))); diff --git a/core/src/main/java/google/registry/tools/GetTldCommand.java b/core/src/main/java/google/registry/tools/GetTldCommand.java index f2c98e092..b255c8b5a 100644 --- a/core/src/main/java/google/registry/tools/GetTldCommand.java +++ b/core/src/main/java/google/registry/tools/GetTldCommand.java @@ -40,10 +40,12 @@ final class GetTldCommand implements Command { @Override public void run() throws JsonProcessingException, UnsupportedEncodingException { - try (PrintStream printStream = new PrintStream(System.out, false, UTF_8.name())) { - for (String tld : assertTldsExist(mainParameters)) { + // Don't use try-with-resources to manage standard output streams, closing the stream will + // cause subsequent output to standard output or standard error to be lost + // See: https://errorprone.info/bugpattern/ClosingStandardOutputStreams + PrintStream printStream = new PrintStream(System.out, false, UTF_8.name()); + for (String tld : assertTldsExist(mainParameters)) { printStream.println(objectMapper.writeValueAsString(Tld.get(tld))); } - } } } diff --git a/core/src/main/java/google/registry/tools/RegistryToolEnvironment.java b/core/src/main/java/google/registry/tools/RegistryToolEnvironment.java index 749e3eacc..f26ae0b7a 100644 --- a/core/src/main/java/google/registry/tools/RegistryToolEnvironment.java +++ b/core/src/main/java/google/registry/tools/RegistryToolEnvironment.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import google.registry.util.RegistryEnvironment; import google.registry.util.SystemPropertySetter; +import java.util.Map; /** Enum of production environments, used for the {@code --environment} flag. */ public enum RegistryToolEnvironment { @@ -93,7 +94,7 @@ public enum RegistryToolEnvironment { void setup(SystemPropertySetter systemPropertySetter) { instance = this; actualEnvironment.setup(systemPropertySetter); - for (ImmutableMap.Entry entry : extraProperties.entrySet()) { + for (Map.Entry entry : extraProperties.entrySet()) { systemPropertySetter.setProperty(entry.getKey(), entry.getValue()); } } diff --git a/core/src/main/java/google/registry/tools/ShellCommand.java b/core/src/main/java/google/registry/tools/ShellCommand.java index 7292fbcfa..65306bbdb 100644 --- a/core/src/main/java/google/registry/tools/ShellCommand.java +++ b/core/src/main/java/google/registry/tools/ShellCommand.java @@ -200,10 +200,9 @@ public class ShellCommand implements Command { private void encapsulatedRun(String[] args) throws Exception { PrintStream orgOut = System.out; PrintStream orgErr = System.err; - try (PrintStream newOut = - new PrintStream(new EncapsulatingOutputStream(System.out, "out: ")); - PrintStream newErr = - new PrintStream(new EncapsulatingOutputStream(System.out, "err: "))) { + PrintStream newOut = new PrintStream(new EncapsulatingOutputStream(System.out, "out: ")); + PrintStream newErr = new PrintStream(new EncapsulatingOutputStream(System.out, "err: ")); + try { System.setOut(newOut); System.setErr(newErr); runner.run(args); diff --git a/core/src/main/java/google/registry/tools/params/EnumParameter.java b/core/src/main/java/google/registry/tools/params/EnumParameter.java index 1635d180f..fefdc494b 100644 --- a/core/src/main/java/google/registry/tools/params/EnumParameter.java +++ b/core/src/main/java/google/registry/tools/params/EnumParameter.java @@ -16,10 +16,11 @@ package google.registry.tools.params; import google.registry.util.TypeUtils.TypeInstantiator; -/** Base class for Enum-based parameters. +/** + * Base class for Enum-based parameters. * *

    This is not necessary for single-value Enum parameters (i.e. arity = 1) as JCommander natively - * supports them, but is necessary for variable-arity ({@code List<Enum>}) parameters. + * supports them, but is necessary for variable-arity ({@code List}) parameters. */ public abstract class EnumParameter> extends ParameterConverterValidator { diff --git a/core/src/main/java/google/registry/ui/forms/FormField.java b/core/src/main/java/google/registry/ui/forms/FormField.java index 225ec2325..37ab2f7b7 100644 --- a/core/src/main/java/google/registry/ui/forms/FormField.java +++ b/core/src/main/java/google/registry/ui/forms/FormField.java @@ -75,7 +75,7 @@ import javax.annotation.concurrent.Immutable; *

    This class provides full type-safety if and only if you statically initialize * your FormField objects and write a unit test that causes the class to be loaded. * - *

    Exception Handling

    + *

    Exception Handling

    * *

    When values passed to {@link #convert} or {@link #extract} don't meet the contract, {@link * FormFieldException} will be thrown, which provides the field name and a short error message diff --git a/core/src/main/java/google/registry/ui/server/registrar/ConsoleOteSetupAction.java b/core/src/main/java/google/registry/ui/server/registrar/ConsoleOteSetupAction.java index 4b02806a4..a5a43dd7a 100644 --- a/core/src/main/java/google/registry/ui/server/registrar/ConsoleOteSetupAction.java +++ b/core/src/main/java/google/registry/ui/server/registrar/ConsoleOteSetupAction.java @@ -35,7 +35,7 @@ import google.registry.ui.server.SoyTemplateUtils; import google.registry.ui.soy.registrar.OteSetupConsoleSoyInfo; import google.registry.util.RegistryEnvironment; import google.registry.util.StringGenerator; -import java.util.HashMap; +import java.util.Map; import java.util.Optional; import javax.inject.Inject; import javax.inject.Named; @@ -90,7 +90,7 @@ public final class ConsoleOteSetupAction extends HtmlAction { ConsoleOteSetupAction() {} @Override - public void runAfterLogin(HashMap data) { + public void runAfterLogin(Map data) { checkState( !RegistryEnvironment.get().equals(PRODUCTION), "Can't create OT&E in prod"); @@ -122,7 +122,7 @@ public final class ConsoleOteSetupAction extends HtmlAction { return PATH; } - private void runPost(HashMap data) { + private void runPost(Map data) { try { checkState(clientId.isPresent() && email.isPresent(), "Must supply clientId and email"); @@ -162,7 +162,7 @@ public final class ConsoleOteSetupAction extends HtmlAction { } } - private void runGet(HashMap data) { + private void runGet(Map data) { // set the values to pre-fill, if given data.put("baseClientId", clientId.orElse(null)); data.put("contactEmail", email.orElse(null)); diff --git a/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java b/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java index e64a544c6..d3c0eaacf 100644 --- a/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java +++ b/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java @@ -45,7 +45,7 @@ import google.registry.ui.soy.registrar.FormsSoyInfo; import google.registry.ui.soy.registrar.RegistrarCreateConsoleSoyInfo; import google.registry.util.RegistryEnvironment; import google.registry.util.StringGenerator; -import java.util.HashMap; +import java.util.Map; import java.util.Optional; import java.util.function.Supplier; import java.util.stream.Stream; @@ -108,7 +108,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction { @Inject ConsoleRegistrarCreatorAction() {} @Override - public void runAfterLogin(HashMap data) { + public void runAfterLogin(Map data) { if (!registrarAccessor.isAdmin()) { response.setStatus(SC_FORBIDDEN); response.setPayload( @@ -165,7 +165,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction { } } - private void runPost(HashMap data) { + private void runPost(Map data) { try { checkPresent(clientId, "clientId"); checkPresent(name, "name"); @@ -263,7 +263,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction { } } - private void runGet(HashMap data) { + private void runGet(Map data) { // set the values to pre-fill, if given data.put("clientId", clientId.orElse(null)); data.put("name", name.orElse(null)); diff --git a/core/src/main/java/google/registry/ui/server/registrar/ConsoleUiAction.java b/core/src/main/java/google/registry/ui/server/registrar/ConsoleUiAction.java index fe22c10ca..7c925abd0 100644 --- a/core/src/main/java/google/registry/ui/server/registrar/ConsoleUiAction.java +++ b/core/src/main/java/google/registry/ui/server/registrar/ConsoleUiAction.java @@ -36,7 +36,7 @@ import google.registry.request.auth.AuthenticatedRegistrarAccessor.Role; import google.registry.ui.server.SoyTemplateUtils; import google.registry.ui.soy.registrar.ConsoleSoyInfo; import google.registry.util.RegistryEnvironment; -import java.util.HashMap; +import java.util.Map; import java.util.Optional; import javax.inject.Inject; @@ -92,7 +92,7 @@ public final class ConsoleUiAction extends HtmlAction { ConsoleUiAction() {} @Override - public void runAfterLogin(HashMap data) { + public void runAfterLogin(Map data) { SoyMapData soyMapData = new SoyMapData(); data.forEach((key, value) -> soyMapData.put(key, value)); diff --git a/core/src/main/java/google/registry/ui/server/registrar/HtmlAction.java b/core/src/main/java/google/registry/ui/server/registrar/HtmlAction.java index ca32133d2..6ff65c9e2 100644 --- a/core/src/main/java/google/registry/ui/server/registrar/HtmlAction.java +++ b/core/src/main/java/google/registry/ui/server/registrar/HtmlAction.java @@ -102,7 +102,7 @@ public abstract class HtmlAction implements Runnable { runAfterLogin(data); } - public abstract void runAfterLogin(HashMap data); + public abstract void runAfterLogin(Map data); public abstract String getPath(); } diff --git a/core/src/main/java/google/registry/ui/server/registrar/RegistryLockVerifyAction.java b/core/src/main/java/google/registry/ui/server/registrar/RegistryLockVerifyAction.java index c1a455fd7..68f20a6e7 100644 --- a/core/src/main/java/google/registry/ui/server/registrar/RegistryLockVerifyAction.java +++ b/core/src/main/java/google/registry/ui/server/registrar/RegistryLockVerifyAction.java @@ -27,7 +27,7 @@ import google.registry.request.auth.Auth; import google.registry.tools.DomainLockUtils; import google.registry.ui.server.SoyTemplateUtils; import google.registry.ui.soy.registrar.RegistryLockVerificationSoyInfo; -import java.util.HashMap; +import java.util.Map; import javax.inject.Inject; /** Action that allows for verification of registry lock / unlock requests */ @@ -63,7 +63,7 @@ public final class RegistryLockVerifyAction extends HtmlAction { } @Override - public void runAfterLogin(HashMap data) { + public void runAfterLogin(Map data) { try { boolean isAdmin = authResult.userAuthInfo().get().isUserAdmin(); final RegistryLock resultLock; diff --git a/core/src/main/java/google/registry/whois/NonCachingWhoisModule.java b/core/src/main/java/google/registry/whois/NonCachingWhoisModule.java index 6e4285bc4..cf1000f4a 100644 --- a/core/src/main/java/google/registry/whois/NonCachingWhoisModule.java +++ b/core/src/main/java/google/registry/whois/NonCachingWhoisModule.java @@ -21,7 +21,7 @@ import google.registry.config.RegistryConfig.Config; /** * Whois module for systems that require that we not cache EPP resources (e.g. the nomulus tool). * - *

    Dependencies

    + *

    Dependencies

    * *
      *
    • {@link google.registry.request.RequestModule RequestModule} diff --git a/core/src/main/java/google/registry/whois/WhoisModule.java b/core/src/main/java/google/registry/whois/WhoisModule.java index 8836762ba..a91525323 100644 --- a/core/src/main/java/google/registry/whois/WhoisModule.java +++ b/core/src/main/java/google/registry/whois/WhoisModule.java @@ -24,7 +24,7 @@ import google.registry.config.RegistryConfig.Config; /** * Dagger module for the whois package. * - *

      Dependencies

      + *

      Dependencies

      * *
        *
      • {@link google.registry.request.RequestModule RequestModule} diff --git a/core/src/main/java/google/registry/xml/TrimWhitespaceAdapter.java b/core/src/main/java/google/registry/xml/TrimWhitespaceAdapter.java index f0b978998..06b5c0116 100644 --- a/core/src/main/java/google/registry/xml/TrimWhitespaceAdapter.java +++ b/core/src/main/java/google/registry/xml/TrimWhitespaceAdapter.java @@ -25,9 +25,9 @@ import javax.xml.bind.annotation.adapters.XmlAdapter; * values can commonly be formatted like so: * *
        {@code
        - *   <ns:tag>
        - *     XML value here.
        - *   </ns:tag>
        + * 
        + *   XML value here.
        + * 
          * }
        */ public class TrimWhitespaceAdapter extends XmlAdapter { diff --git a/core/src/test/java/google/registry/batch/SendExpiringCertificateNotificationEmailActionTest.java b/core/src/test/java/google/registry/batch/SendExpiringCertificateNotificationEmailActionTest.java index 42c63511b..970e5b17b 100644 --- a/core/src/test/java/google/registry/batch/SendExpiringCertificateNotificationEmailActionTest.java +++ b/core/src/test/java/google/registry/batch/SendExpiringCertificateNotificationEmailActionTest.java @@ -582,10 +582,7 @@ class SendExpiringCertificateNotificationEmailActionTest { String registrarId = "registrarid"; String emailBody = action.getEmailBody( - registrarName, - certificateType, - DateTime.parse(certExpirationDateStr).toDate(), - registrarId); + registrarName, certificateType, DateTime.parse(certExpirationDateStr), registrarId); assertThat(emailBody).contains(registrarName); assertThat(emailBody).contains(certificateType.getDisplayName()); assertThat(emailBody).contains(certExpirationDateStr); @@ -614,7 +611,7 @@ class SendExpiringCertificateNotificationEmailActionTest { IllegalArgumentException.class, () -> action.getEmailBody( - "good registrar", null, DateTime.parse("2021-06-15").toDate(), "registrarId")); + "good registrar", null, DateTime.parse("2021-06-15"), "registrarId")); assertThat(thrown).hasMessageThat().contains("Certificate type cannot be null"); } @@ -627,7 +624,7 @@ class SendExpiringCertificateNotificationEmailActionTest { action.getEmailBody( "good registrar", CertificateType.FAILOVER, - DateTime.parse("2021-06-15").toDate(), + DateTime.parse("2021-06-15"), null)); assertThat(thrown).hasMessageThat().contains("Registrar Id cannot be null"); } diff --git a/core/src/test/java/google/registry/bsa/BsaDiffCreatorTest.java b/core/src/test/java/google/registry/bsa/BsaDiffCreatorTest.java index c317fe5f8..7bd5ef900 100644 --- a/core/src/test/java/google/registry/bsa/BsaDiffCreatorTest.java +++ b/core/src/test/java/google/registry/bsa/BsaDiffCreatorTest.java @@ -48,8 +48,14 @@ class BsaDiffCreatorTest { @Mock GcsClient gcsClient; - @Mock DownloadSchedule schedule; - @Mock CompletedJob completedJob; + @SuppressWarnings("DoNotMockAutoValue") + @Mock + DownloadSchedule schedule; + + @SuppressWarnings("DoNotMockAutoValue") + @Mock + CompletedJob completedJob; + @Mock IdnChecker idnChecker; BsaDiffCreator diffCreator; diff --git a/core/src/test/java/google/registry/bsa/persistence/BsaLabelUtilsTest.java b/core/src/test/java/google/registry/bsa/persistence/BsaLabelUtilsTest.java index 936b8bd99..0e982cd58 100644 --- a/core/src/test/java/google/registry/bsa/persistence/BsaLabelUtilsTest.java +++ b/core/src/test/java/google/registry/bsa/persistence/BsaLabelUtilsTest.java @@ -88,10 +88,8 @@ public class BsaLabelUtilsTest { when(replicaTm.loadByKey(any())).thenReturn(new BsaLabel("abc", fakeClock.nowUtc())); try { assertThat(isLabelBlocked("abc")).isTrue(); - /** - * If test fails, check and fix cache expiry in the config file. Do not increase the duration - * on the line below without proper discussion. - */ + // If test fails, check and fix cache expiry in the config file. Do not increase the duration + // on the line below without proper discussion. fakeClock.advanceBy(standardMinutes(1).plus(millis(1))); assertThat(isLabelBlocked("abc")).isTrue(); verify(replicaTm, times(2)).loadByKey(any()); diff --git a/core/src/test/java/google/registry/bsa/persistence/LabelDiffUpdatesTest.java b/core/src/test/java/google/registry/bsa/persistence/LabelDiffUpdatesTest.java index 7f458d996..6f8ab669e 100644 --- a/core/src/test/java/google/registry/bsa/persistence/LabelDiffUpdatesTest.java +++ b/core/src/test/java/google/registry/bsa/persistence/LabelDiffUpdatesTest.java @@ -62,7 +62,10 @@ class LabelDiffUpdatesTest { new JpaTestExtensions.Builder().withClock(fakeClock).buildIntegrationWithCoverageExtension(); @Mock IdnChecker idnChecker; - @Mock DownloadSchedule schedule; + + @SuppressWarnings("DoNotMockAutoValue") + @Mock + DownloadSchedule schedule; Tld app; Tld dev; diff --git a/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsMessageTransportTest.java b/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsMessageTransportTest.java index 506e08088..ffc3b5834 100644 --- a/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsMessageTransportTest.java +++ b/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsMessageTransportTest.java @@ -59,6 +59,7 @@ class DnsMessageTransportTest { private DnsMessageTransport resolver; @BeforeEach + @SuppressWarnings("AddressSelection") void beforeEach() throws Exception { simpleQuery = Message.newQuery(Record.newRecord(Name.fromString("example.com."), Type.A, DClass.IN)); diff --git a/core/src/test/java/google/registry/flows/certs/CertificateCheckerTest.java b/core/src/test/java/google/registry/flows/certs/CertificateCheckerTest.java index a8956dd53..7d7cc99e2 100644 --- a/core/src/test/java/google/registry/flows/certs/CertificateCheckerTest.java +++ b/core/src/test/java/google/registry/flows/certs/CertificateCheckerTest.java @@ -403,7 +403,7 @@ class CertificateCheckerTest { // Invalid curve KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC"); AlgorithmParameters apParam = AlgorithmParameters.getInstance("EC"); - apParam.init(new ECGenParameterSpec("secp128r1")); + apParam.init(new ECGenParameterSpec("secp521r1")); ECParameterSpec spec = apParam.getParameterSpec(ECParameterSpec.class); keyGen.initialize(spec, new SecureRandom()); X509Certificate certificate = diff --git a/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java b/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java index f9e720992..e7e6ad646 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java @@ -190,6 +190,8 @@ import google.registry.tmch.SmdrlCsvParser; import google.registry.tmch.TmchData; import google.registry.tmch.TmchTestData; import google.registry.xml.ValidationMode; +import java.io.BufferedReader; +import java.io.StringReader; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.util.Map; @@ -2762,7 +2764,11 @@ class DomainCreateFlowTest extends ResourceFlowTestCasePlease refer to the class javadoc of {@link DatabaseException} for more information. */ +@Disabled // TODO: re-enable test class after upgrading to Java 17. +// LogManager.updateConfiguration() is only supported in Java 9 and later. public class HibernateLoggingSuppressionTest { private static final String LOG_SUPPRESSION_TARGET = @@ -73,6 +74,7 @@ public class HibernateLoggingSuppressionTest { void suppressHibernateLogs() throws IOException { try (ByteArrayInputStream additionalProperties = new ByteArrayInputStream(LOGGING_PROPERTIES_LINE.getBytes(UTF_8))) { + /* LogManager.getLogManager() .updateConfiguration( additionalProperties, @@ -84,12 +86,14 @@ public class HibernateLoggingSuppressionTest { checkArgument(o == null, "Cannot override old value in this test"); return n; }); + */ } } void revertSuppressionOfHibernateLogs() throws IOException { try (ByteArrayInputStream additionalProperties = new ByteArrayInputStream(LOGGING_PROPERTIES_LINE.getBytes(UTF_8))) { + /* LogManager.getLogManager() .updateConfiguration( additionalProperties, @@ -100,6 +104,7 @@ public class HibernateLoggingSuppressionTest { } return null; }); + */ } } diff --git a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java index 53cb96995..e434dee03 100644 --- a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java +++ b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java @@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.truth.Truth.assertWithMessage; import static google.registry.testing.DatabaseHelper.insertSimpleResources; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.testcontainers.containers.PostgreSQLContainer.POSTGRESQL_PORT; import com.google.common.base.Charsets; @@ -172,7 +173,8 @@ public abstract class JpaTransactionManagerExtension File tempSqlFile = File.createTempFile("tempSqlFile", ".sql"); tempSqlFile.deleteOnExit(); exporter.export(extraEntityClasses, tempSqlFile); - executeSql(Files.readString(tempSqlFile.toPath())); + // TODO: Use Files.readString() once we upgrade to Java 17 runtime. + executeSql(new String(Files.readAllBytes(tempSqlFile.toPath()), UTF_8)); } assertReasonableNumDbConnections(); emf = createEntityManagerFactory(getJpaProperties()); diff --git a/core/src/test/java/google/registry/rde/RdeReportActionTest.java b/core/src/test/java/google/registry/rde/RdeReportActionTest.java index 866176f51..d6d8ae6d8 100644 --- a/core/src/test/java/google/registry/rde/RdeReportActionTest.java +++ b/core/src/test/java/google/registry/rde/RdeReportActionTest.java @@ -66,6 +66,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link RdeReportAction}. */ +@SuppressWarnings("DirectInvocationOnMock") // FakeUrlConnectionService mocks the getURL() method. public class RdeReportActionTest { private static final ByteSource REPORT_XML = RdeTestData.loadBytes("report.xml"); diff --git a/core/src/test/java/google/registry/reporting/icann/ActivityReportingQueryBuilderTest.java b/core/src/test/java/google/registry/reporting/icann/ActivityReportingQueryBuilderTest.java index 386c3e495..23c5dda0b 100644 --- a/core/src/test/java/google/registry/reporting/icann/ActivityReportingQueryBuilderTest.java +++ b/core/src/test/java/google/registry/reporting/icann/ActivityReportingQueryBuilderTest.java @@ -26,6 +26,7 @@ class ActivityReportingQueryBuilderTest { private final YearMonth yearMonth = new YearMonth(2017, 9); + @SuppressWarnings("NonCanonicalType") private ActivityReportingQueryBuilder createQueryBuilder(String datasetName) { return new ActivityReportingQueryBuilder( "domain-registry-alpha", diff --git a/core/src/test/java/google/registry/testing/FakeResponse.java b/core/src/test/java/google/registry/testing/FakeResponse.java index 3f72c2f46..f5038fcdb 100644 --- a/core/src/test/java/google/registry/testing/FakeResponse.java +++ b/core/src/test/java/google/registry/testing/FakeResponse.java @@ -24,6 +24,7 @@ import com.google.common.net.MediaType; import google.registry.request.Response; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.Cookie; import org.joda.time.DateTime; @@ -92,7 +93,7 @@ public final class FakeResponse implements Response { cookies.add(cookie); } - public ArrayList getCookies() { + public List getCookies() { return cookies; } diff --git a/core/src/test/java/google/registry/testing/FakeServletInputStream.java b/core/src/test/java/google/registry/testing/FakeServletInputStream.java index 2fb1e9df5..6489163f0 100644 --- a/core/src/test/java/google/registry/testing/FakeServletInputStream.java +++ b/core/src/test/java/google/registry/testing/FakeServletInputStream.java @@ -38,7 +38,6 @@ public final class FakeServletInputStream extends ServletInputStream { /** * Use a {@link ByteSource} as input for the servlet. Be sure to call {@link #close} after * your servlet runs so the resource opened via {@code bytes} gets closed. - * @throws IOException */ public FakeServletInputStream(ByteSource bytes) throws IOException { this.input = bytes.openStream(); diff --git a/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java b/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java index 40c18b1f3..f68ef4677 100644 --- a/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java +++ b/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java @@ -237,6 +237,7 @@ class NordnUploadActionTest { assertThat(domain.getLordnPhase()).isEqualTo(LordnPhase.NONE); } + @SuppressWarnings("DirectInvocationOnMock") private void testRun(String phase, String domain1, String domain2, String csv) throws Exception { action.phase = phase; action.run(); @@ -248,7 +249,8 @@ class NordnUploadActionTest { verify(httpUrlConnection).setRequestMethod("POST"); assertThat(httpUrlConnection.getURL()) .isEqualTo(new URL("http://127.0.0.1/LORDN/tld/" + phase)); - assertThat(connectionOutputStream.toString(UTF_8)).contains(csv); + // TODO: use toString(StandardCharsets.UTF_8) once we upgrade to Java 17. + assertThat(connectionOutputStream.toString("UTF-8")).contains(csv); verifyColumnCleared(domain1); verifyColumnCleared(domain2); cloudTasksHelper.assertTasksEnqueued( diff --git a/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java b/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java index 891401df0..e4008df20 100644 --- a/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java +++ b/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java @@ -101,6 +101,7 @@ class NordnVerifyActionTest { } @Test + @SuppressWarnings("DirectInvocationOnMock") void testSuccess_sendHttpRequest_urlIsCorrect() throws Exception { action.run(); assertThat(httpUrlConnection.getURL()).isEqualTo(new URL("http://127.0.0.1/blobio")); diff --git a/core/src/test/java/google/registry/tools/CreateTldCommandTest.java b/core/src/test/java/google/registry/tools/CreateTldCommandTest.java index 7eaa50791..32479ae86 100644 --- a/core/src/test/java/google/registry/tools/CreateTldCommandTest.java +++ b/core/src/test/java/google/registry/tools/CreateTldCommandTest.java @@ -282,7 +282,7 @@ class CreateTldCommandTest extends CommandTestCase { runCommandForced("co.uk", "--roid_suffix=COUK", "--dns_writers=VoidDnsWriter"); Tld registry = Tld.get("co.uk"); - assertThat(registry.getTldState(new DateTime())).isEqualTo(PREDELEGATION); + assertThat(registry.getTldState(DateTime.now(UTC))).isEqualTo(PREDELEGATION); assertThat(registry.getAddGracePeriodLength()).isEqualTo(Tld.DEFAULT_ADD_GRACE_PERIOD); assertThat(registry.getRedemptionGracePeriodLength()) .isEqualTo(Tld.DEFAULT_REDEMPTION_GRACE_PERIOD); diff --git a/core/src/test/java/google/registry/tools/GcpProjectConnectionTest.java b/core/src/test/java/google/registry/tools/GcpProjectConnectionTest.java index d73130b0e..942fe3eb4 100644 --- a/core/src/test/java/google/registry/tools/GcpProjectConnectionTest.java +++ b/core/src/test/java/google/registry/tools/GcpProjectConnectionTest.java @@ -73,7 +73,8 @@ final class GcpProjectConnectionTest { ByteArrayOutputStream output = new ByteArrayOutputStream(); getStreamingContent().writeTo(output); output.close(); - return output.toString(UTF_8); + // TODO: use toString(StandardCharsets.UTF_8) once we upgrade to Java 17. + return output.toString("UTF-8"); } } diff --git a/core/src/test/java/google/registry/tools/ShellCommandTest.java b/core/src/test/java/google/registry/tools/ShellCommandTest.java index a3b0a2487..d16dd9037 100644 --- a/core/src/test/java/google/registry/tools/ShellCommandTest.java +++ b/core/src/test/java/google/registry/tools/ShellCommandTest.java @@ -241,22 +241,22 @@ class ShellCommandTest { } @Test - void testEncapsulatedOutputStream_basicFuncionality() { + void testEncapsulatedOutputStream_basicFuncionality() throws Exception { ByteArrayOutputStream backing = new ByteArrayOutputStream(); try (PrintStream out = new PrintStream(new ShellCommand.EncapsulatingOutputStream(backing, "out: "))) { out.println("first line"); out.print("second line\ntrailing data"); } - assertThat(backing.toString()) + assertThat(backing.toString("UTF-8")) .isEqualTo("out: first line\nout: second line\nout: trailing data\n"); } @Test - void testEncapsulatedOutputStream_emptyStream() { + void testEncapsulatedOutputStream_emptyStream() throws Exception { ByteArrayOutputStream backing = new ByteArrayOutputStream(); new PrintStream(new ShellCommand.EncapsulatingOutputStream(backing, "out: ")).close(); - assertThat(backing.toString()).isEqualTo(""); + assertThat(backing.toString("UTF-8")).isEqualTo(""); } @Test @@ -275,8 +275,8 @@ class ShellCommandTest { shellCommand.encapsulateOutput = true; shellCommand.run(); - assertThat(stderr.toString()).isEmpty(); - assertThat(stdout.toString()) + assertThat(stderr.toString("UTF-8")).isEmpty(); + assertThat(stdout.toString("UTF-8")) .isEqualTo( "RUNNING \"command1\"\n" + "out: first line\nerr: second line\nerr: surprise!\nout: fragmented line\n" @@ -295,8 +295,8 @@ class ShellCommandTest { }); shellCommand.encapsulateOutput = true; shellCommand.run(); - assertThat(stderr.toString()).isEmpty(); - assertThat(stdout.toString()) + assertThat(stderr.toString("UTF-8")).isEmpty(); + assertThat(stdout.toString("UTF-8")) .isEqualTo( "RUNNING \"command1\"\n" + "out: first line\n" @@ -316,8 +316,8 @@ class ShellCommandTest { "do something"); shellCommand.encapsulateOutput = true; shellCommand.run(); - assertThat(stderr.toString()).isEmpty(); - assertThat(stdout.toString()) + assertThat(stderr.toString("UTF-8")).isEmpty(); + assertThat(stdout.toString("UTF-8")) .isEqualTo("RUNNING \"do\" \"something\"\nout: first line\nSUCCESS\n"); } diff --git a/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java b/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java index a17b8f7ea..0b8bcd773 100644 --- a/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java +++ b/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java @@ -77,6 +77,7 @@ class GenerateZoneFilesActionTest { testGenerate("tldCustomTtl.zone"); } + @SuppressWarnings("AddressSelection") void testGenerate(String goldenFileName) throws Exception { DateTime now = DateTime.now(DateTimeZone.UTC).withTimeAtStartOfDay(); diff --git a/core/src/test/java/google/registry/tools/server/ListDomainsActionTest.java b/core/src/test/java/google/registry/tools/server/ListDomainsActionTest.java index d484cea6b..a93dfe78d 100644 --- a/core/src/test/java/google/registry/tools/server/ListDomainsActionTest.java +++ b/core/src/test/java/google/registry/tools/server/ListDomainsActionTest.java @@ -63,7 +63,7 @@ class ListDomainsActionTest extends ListActionTestCase { @Test void testRun_noParameters() { action.tlds = ImmutableSet.of("foo"); - testRunSuccess(action, null, null, null); + testRunSuccess(action, Optional.empty(), Optional.empty(), Optional.empty()); } @Test diff --git a/core/src/test/java/google/registry/tools/server/ListHostsActionTest.java b/core/src/test/java/google/registry/tools/server/ListHostsActionTest.java index c584c1ab9..32b64536c 100644 --- a/core/src/test/java/google/registry/tools/server/ListHostsActionTest.java +++ b/core/src/test/java/google/registry/tools/server/ListHostsActionTest.java @@ -37,11 +37,7 @@ class ListHostsActionTest extends ListActionTestCase { @Test void testRun_noParameters() { - testRunSuccess( - action, - null, - null, - null); + testRunSuccess(action, Optional.empty(), Optional.empty(), Optional.empty()); } @Test diff --git a/core/src/test/java/google/registry/ui/server/console/ConsoleUserDataActionTest.java b/core/src/test/java/google/registry/ui/server/console/ConsoleUserDataActionTest.java index 885f5cae0..2fe15c4f1 100644 --- a/core/src/test/java/google/registry/ui/server/console/ConsoleUserDataActionTest.java +++ b/core/src/test/java/google/registry/ui/server/console/ConsoleUserDataActionTest.java @@ -32,7 +32,7 @@ import google.registry.testing.FakeConsoleApiParams; import google.registry.testing.FakeResponse; import google.registry.ui.server.registrar.ConsoleApiParams; import java.io.IOException; -import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Optional; import javax.servlet.http.Cookie; @@ -63,7 +63,7 @@ class ConsoleUserDataActionTest { createAction( Optional.of(FakeConsoleApiParams.get(Optional.of(authResult))), Action.Method.GET); action.run(); - ArrayList cookies = ((FakeResponse) consoleApiParams.response()).getCookies(); + List cookies = ((FakeResponse) consoleApiParams.response()).getCookies(); assertThat(cookies.stream().map(cookie -> cookie.getName()).collect(toImmutableList())) .containsExactly("X-CSRF-Token"); } diff --git a/db/gradle.lockfile b/db/gradle.lockfile index 93cd8dbd4..2ac10147b 100644 --- a/db/gradle.lockfile +++ b/db/gradle.lockfile @@ -1,13 +1,14 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor com.fasterxml.jackson.core:jackson-annotations:2.15.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson.core:jackson-core:2.15.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson.core:jackson-databind:2.15.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson.dataformat:jackson-dataformat-toml:2.15.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson:jackson-bom:2.15.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.docker-java:docker-java-api:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport-zerodep:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport:3.3.4=testCompileClasspath,testRuntimeClasspath @@ -25,51 +26,53 @@ com.google.api:gax:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.apis:google-api-services-sqladmin:v1beta4-rev20231208-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.auth:google-auth-library-credentials:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.auth:google-auth-library-oauth2-http:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.10.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.cloud.sql:jdbc-socket-factory-core:1.15.1=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.cloud.sql:postgres-socket-factory:1.15.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.10.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.errorprone:error_prone_annotations:2.7.1=checkstyle -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.flogger:flogger-system-backend:0.8=testRuntimeClasspath com.google.flogger:flogger:0.8=testCompileClasspath,testRuntimeClasspath com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor com.google.guava:failureaccess:1.0.2=testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:32.1.3-android=deploy_jar,runtimeClasspath com.google.guava:guava:33.0.0-jre=testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-apache-v2:1.42.3=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.http-client:google-http-client-gson:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.http-client:google-http-client:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor com.google.truth.extensions:truth-java8-extension:1.2.0=testCompileClasspath,testRuntimeClasspath com.google.truth:truth:1.2.0=testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor com.puppycrawl.tools:checkstyle:9.3=checkstyle commons-beanutils:commons-beanutils:1.9.4=checkstyle commons-codec:commons-codec:1.15=deploy_jar,runtimeClasspath,testRuntimeClasspath commons-collections:commons-collections:3.2.2=checkstyle commons-logging:commons-logging:1.2=deploy_jar,runtimeClasspath,testRuntimeClasspath info.picocli:picocli:4.6.2=checkstyle -io.github.java-diff-utils:java-diff-utils:4.12=testCompileClasspath,testRuntimeClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath io.grpc:grpc-context:1.27.2=deploy_jar,runtimeClasspath,testRuntimeClasspath io.opencensus:opencensus-api:0.31.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.opencensus:opencensus-contrib-http-util:0.31.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=testCompileClasspath,testRuntimeClasspath +javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath joda-time:joda-time:2.12.6=testCompileClasspath,testRuntimeClasspath junit:junit:4.13.2=testCompileClasspath,testRuntimeClasspath net.java.dev.jna:jna:5.13.0=testCompileClasspath,testRuntimeClasspath @@ -80,13 +83,10 @@ org.apache.httpcomponents:httpclient:4.5.14=deploy_jar,runtimeClasspath,testRunt org.apache.httpcomponents:httpcore:4.4.16=deploy_jar,runtimeClasspath,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath org.checkerframework:checker-compat-qual:2.5.3=testCompileClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.41.0=deploy_jar,runtimeClasspath org.checkerframework:checker-qual:3.42.0=testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,errorprone,testAnnotationProcessor org.flywaydb:flyway-core:9.22.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath org.jacoco:org.jacoco.agent:0.8.9=jacocoAgent,jacocoAnt @@ -109,10 +109,7 @@ org.ow2.asm:asm-tree:9.6=deploy_jar,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm-util:9.6=deploy_jar,runtimeClasspath,testRuntimeClasspath org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.postgresql:postgresql:42.7.1=deploy_jar,runtimeClasspath,testRuntimeClasspath org.reflections:reflections:0.10.2=checkstyle org.rnorth.duct-tape:duct-tape:1.0.8=testCompileClasspath,testRuntimeClasspath @@ -123,4 +120,4 @@ org.testcontainers:jdbc:1.19.3=testCompileClasspath,testRuntimeClasspath org.testcontainers:junit-jupiter:1.19.3=testCompileClasspath,testRuntimeClasspath org.testcontainers:postgresql:1.19.3=testCompileClasspath,testRuntimeClasspath org.testcontainers:testcontainers:1.19.3=testCompileClasspath,testRuntimeClasspath -empty=errorproneJavac,implementationApi,schema +empty=implementationApi,schema diff --git a/db/src/test/java/google/registry/sql/flyway/FlywayDeadlockTest.java b/db/src/test/java/google/registry/sql/flyway/FlywayDeadlockTest.java index 0be611e29..11bc205dc 100644 --- a/db/src/test/java/google/registry/sql/flyway/FlywayDeadlockTest.java +++ b/db/src/test/java/google/registry/sql/flyway/FlywayDeadlockTest.java @@ -29,9 +29,11 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.flogger.FluentLogger; +import com.google.common.io.ByteStreams; import java.io.File; import java.io.IOException; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Map; import java.util.Optional; import java.util.regex.Matcher; @@ -181,7 +183,8 @@ public class FlywayDeadlockTest { .splitToStream( readAllLines(path, UTF_8).stream() .map(line -> line.replaceAll("--.*", "")) - .filter(line -> !line.isBlank()) + // TODO: Use line.isBlank() one we are on Java 17. + .filter(line -> !line.trim().isEmpty()) .collect(joining(" "))) .map(FlywayDeadlockTest::getDdlLockedElementName) .filter(Optional::isPresent) @@ -211,7 +214,8 @@ public class FlywayDeadlockTest { .splitToList(executeShellCommand(changedScriptsCommand, Optional.of(rootDir))) .stream() .map(pathStr -> rootDir + File.separator + pathStr) - .map(Path::of) + // TODO: Use Path::of once we are on Java 17. + .map(path -> Paths.get(path)) .collect(toImmutableList()); if (changedPaths.isEmpty()) { logger.atInfo().log("There are no schema changes."); @@ -234,8 +238,9 @@ public class FlywayDeadlockTest { new ProcessBuilder(SHELL_COMMAND_SPLITTER.splitToList(command).toArray(new String[0])); workingDir.map(File::new).ifPresent(processBuilder::directory); Process process = processBuilder.start(); - String output = new String(process.getInputStream().readAllBytes(), UTF_8); - String error = new String(process.getErrorStream().readAllBytes(), UTF_8); + // TODO:Use InputStream.readAllBytes() once we are on Java 17. + String output = new String(ByteStreams.toByteArray(process.getInputStream()), UTF_8); + String error = new String(ByteStreams.toByteArray(process.getErrorStream()), UTF_8); try { process.waitFor(1, SECONDS); } catch (InterruptedException ie) { diff --git a/db/src/test/java/google/registry/sql/flyway/SchemaTest.java b/db/src/test/java/google/registry/sql/flyway/SchemaTest.java index a0ddcaf46..611d06bad 100644 --- a/db/src/test/java/google/registry/sql/flyway/SchemaTest.java +++ b/db/src/test/java/google/registry/sql/flyway/SchemaTest.java @@ -124,7 +124,7 @@ class SchemaTest { sqlContainer.getJdbcUrl(), sqlContainer.getUsername(), sqlContainer.getPassword()) .load(); flyway.migrate(); - logger.atInfo().log("Base schema version: %s", flyway.info().current().getVersion().toString()); + logger.atInfo().log("Base schema version: %s", flyway.info().current().getVersion()); // Deploy latest scripts from resources directory. flyway = @@ -135,8 +135,7 @@ class SchemaTest { .load(); flyway.migrate(); flyway.validate(); - logger.atInfo().log( - "Latest schema version: %s", flyway.info().current().getVersion().toString()); + logger.atInfo().log("Latest schema version: %s", flyway.info().current().getVersion()); } private static String[] getSchemaDumpCommand(String username, String dbName) { diff --git a/dependencies.gradle b/dependencies.gradle index 51121c7fb..3ccbdb45e 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -132,10 +132,10 @@ ext { 'com.google.cloud.sql:postgres-socket-factory:[1.2.1,)', 'com.google.cloud:google-cloud-core:[1.94.3,)', 'com.google.cloud:google-cloud-core-http:[1.94.3,)', - 'com.google.cloud:google-cloud-secretmanager:[1.4.0, 2.23.0]!!)', + 'com.google.cloud:google-cloud-secretmanager:[1.4.0, 2.23.0]!!', 'com.google.cloud:google-cloud-storage:[1.113.12, 2.22.6]!!', 'com.google.cloud:google-cloud-nio:[0.123.4, 0.126.19]!!', - 'com.google.cloud:google-cloud-tasks:[1.33.2,)', + 'com.google.cloud:google-cloud-tasks:[1.33.2, 2.23.0]!!', 'com.google.code.findbugs:jsr305:[3.0.2,)', 'com.google.code.gson:gson:[2.8.6,)', 'com.google.dagger:dagger-compiler:[2.33,)', @@ -194,7 +194,8 @@ ext { 'org.junit.jupiter:junit-jupiter-params:[5.6.2,)', 'org.junit.platform:junit-platform-runner:[1.6.2,)', 'org.junit.platform:junit-platform-suite-api:[1.6.2,)', - 'org.junit-pioneer:junit-pioneer:[0.7.0, 2.0.0[', + // TODO: remove the exclusive upper bound once we are on Java 17 runtime. + 'org.junit-pioneer:junit-pioneer:[0.7.0,2.0.0[', 'org.apache.avro:avro:[1.8.2,)', 'org.apache.beam:beam-runners-core-construction-java:[2.37.0,)', 'org.apache.beam:beam-runners-direct-java:[2.37.0,)', diff --git a/docs/build.gradle b/docs/build.gradle deleted file mode 100644 index 53ae3f3a9..000000000 --- a/docs/build.gradle +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -dependencies { - def deps = rootProject.dependencyMap - - implementation deps['com.beust:jcommander'] - implementation deps['com.google.appengine:appengine-api-1.0-sdk'] - implementation deps['com.google.code.findbugs:jsr305'] - implementation deps['com.google.flogger:flogger'] - implementation deps['com.google.guava:guava'] - implementation deps['com.google.re2j:re2j'] - implementation project(':core') - implementation project(':util') - - testImplementation deps['com.google.truth:truth'] - testImplementation deps['com.thoughtworks.qdox:qdox'] - testImplementation deps['junit:junit'] - testImplementation deps['org.junit.jupiter:junit-jupiter-api'] - testImplementation deps['org.junit.jupiter:junit-jupiter-engine'] - testImplementation deps['org.junit.platform:junit-platform-runner'] - testImplementation deps['org.junit.platform:junit-platform-suite-api'] - testImplementation deps['org.testcontainers:junit-jupiter'] -} - -test { - useJUnitPlatform() -} - -task flowDocsTool(type: JavaExec) { - systemProperty 'test.projectRoot', rootProject.projectRootDir - jvmArgs = ['--add-exports', 'jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED'] - classpath = sourceSets.main.runtimeClasspath - main = 'google.registry.documentation.FlowDocumentationTool' - - def arguments = [] - if (rootProject.flowDocsFile) { - arguments << "--output_file=${rootProject.flowDocsFile}" - } else { - arguments << "--output_file=${rootProject.projectRootDir}/docs/flows.md" - } - args arguments -} - -tasks.compileJava { - options.compilerArgs = ["--add-exports", - "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", - "--add-exports", - "jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", - "--add-exports", - "jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED"] - -} - -tasks.test { - jvmArgs = ['--add-exports', - 'jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED'] -} diff --git a/docs/buildscript-gradle.lockfile b/docs/buildscript-gradle.lockfile deleted file mode 100644 index 0d156738b..000000000 --- a/docs/buildscript-gradle.lockfile +++ /dev/null @@ -1,4 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -empty=classpath diff --git a/docs/flows.md b/docs/flows.md deleted file mode 100644 index c6fd540ec..000000000 --- a/docs/flows.md +++ /dev/null @@ -1,1072 +0,0 @@ -# Nomulus EPP Command API Documentation - -## ContactCheckFlow - -### Description - -An EPP flow that checks whether a contact can be provisioned. - -This flows can check the existence of multiple contacts simultaneously. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2306 - * Too many resource checks requested in one check command. - -## ContactCreateFlow - -### Description - -An EPP flow that creates a new contact. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2005 - * Internationalized postal infos can only contain ASCII characters. -* 2302 - * Resource with this id already exists. -* 2306 - * Declining contact disclosure is disallowed by server policy. - -## ContactDeleteFlow - -### Description - -An EPP flow that deletes a contact. - -Contacts that are in use by any domain cannot be deleted. The flow may return -immediately if a quick smoke check determines that deletion is impossible due to -an existing reference. However, a successful delete will always be asynchronous, -as all existing domains must be checked for references to the host before the -deletion is allowed to proceed. A poll message will be written with the success -or failure message when the process is complete. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * The specified resource belongs to another client. -* 2303 - * Resource with this id does not exist. -* 2304 - * Resource status prohibits this operation. -* 2305 - * Resource to be deleted has active incoming references. - -## ContactInfoFlow - -### Description - -An EPP flow that returns information about a contact. - -The response includes the contact's postal info, phone numbers, emails, the -authInfo which can be used to request a transfer and the details of the -contact's most recent transfer if it has ever been transferred. Any registrar -can see any contact's information, but the authInfo is only visible to the -registrar that owns the contact or to a registrar that already supplied it. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * The specified resource belongs to another client. -* 2303 - * Resource with this id does not exist. - -## ContactTransferApproveFlow - -### Description - -An EPP flow that approves a pending transfer on a contact. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, this flow allows the losing client to explicitly approve the -transfer request, which then becomes effective immediately. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * The specified resource belongs to another client. -* 2202 - * Authorization information for accessing resource is invalid. -* 2301 - * The resource does not have a pending transfer. -* 2303 - * Resource with this id does not exist. - -## ContactTransferCancelFlow - -### Description - -An EPP flow that cancels a pending transfer on a contact. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, this flow allows the gaining client to withdraw the transfer -request. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * Registrar is not the initiator of this transfer. -* 2202 - * Authorization information for accessing resource is invalid. -* 2301 - * The resource does not have a pending transfer. -* 2303 - * Resource with this id does not exist. - -## ContactTransferQueryFlow - -### Description - -An EPP flow that queries a pending transfer on a contact. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. This flow -can be used by the gaining or losing registrars (or anyone with the correct -authId) to see the status of a transfer, which may still be pending or may have -been approved, rejected, cancelled or implicitly approved by virtue of the -transfer period expiring. - -### Errors - -* 2002 - * Registrar is not logged in. - * Object has no transfer history. -* 2201 - * Registrar is not authorized to view transfer status. -* 2202 - * Authorization information for accessing resource is invalid. -* 2303 - * Resource with this id does not exist. - -## ContactTransferRejectFlow - -### Description - -An EPP flow that rejects a pending transfer on a contact. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, this flow allows the losing client to reject the transfer request. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * The specified resource belongs to another client. -* 2202 - * Authorization information for accessing resource is invalid. -* 2301 - * The resource does not have a pending transfer. -* 2303 - * Resource with this id does not exist. - -## ContactTransferRequestFlow - -### Description - -An EPP flow that requests a transfer on a contact. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, the transfer might be approved explicitly by the losing registrar -or rejected, and the gaining registrar can also cancel the transfer request. - -### Errors - -* 2002 - * Registrar is not logged in. - * Registrar already sponsors the object of this transfer request. -* 2201 - * Authorization info is required to request a transfer. -* 2202 - * Authorization information for accessing resource is invalid. -* 2300 - * The resource is already pending transfer. -* 2303 - * Resource with this id does not exist. -* 2304 - * Resource status prohibits this operation. - -## ContactUpdateFlow - -### Description - -An EPP flow that updates a contact. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2004 - * The specified status value cannot be set by clients. -* 2005 - * Internationalized postal infos can only contain ASCII characters. -* 2201 - * The specified resource belongs to another client. -* 2303 - * Resource with this id does not exist. -* 2304 - * This resource has clientUpdateProhibited on it, and the update does not - clear that status. - * Resource status prohibits this operation. -* 2306 - * Cannot add and remove the same value. - * Declining contact disclosure is disallowed by server policy. - -## DomainCheckFlow - -### Description - -An EPP flow that checks whether a domain can be provisioned. - -This flow also supports the EPP fee extension and can return pricing -information. - -### Errors - -* 2002 - * Registrar is not logged in. - * Command is not allowed in the current registry phase. -* 2004 - * Unknown currency. - * Domain label is not allowed by IDN table. - * Domain name is under tld which doesn't exist. -* 2005 - * Domain name must have exactly one part above the TLD. - * Domain name must not equal an existing multi-part TLD. -* 2201 - * Registrar is missing the billing account map for this currency type. - * Registrar is not authorized to access this TLD. -* 2306 - * Too many resource checks requested in one check command. - * Domain names can only contain a-z, 0-9, '.' and '-'. - * Periods for domain registrations must be specified in years. - * The requested fees cannot be provided in the requested currency. - * Non-IDN domain names cannot contain hyphens in the third or fourth - position. - * Domain labels cannot be longer than 63 characters. - * No part of a domain name can be empty. - * Fee checks for command phases and subphases are not supported. - * Domain name starts with xn-- but is not a valid IDN. - * Domain labels cannot begin with a dash. - * Restores always renew a domain for one year. - * Domain labels cannot end with a dash. - * Transfers always renew a domain for one year. - * Unknown fee command name. - * By server policy, fee check names must be listed in the availability - check. - -## DomainClaimsCheckFlow - -### Description - -An EPP flow that checks whether domain labels are trademarked. - -### Errors - -* 2002 - * Registrar is not logged in. - * Command is not allowed in the current registry phase. - * Claims checks are not allowed with allocation tokens. -* 2004 - * Domain name is under tld which doesn't exist. -* 2201 - * Registrar is missing the billing account map for this currency type. - * Registrar is not authorized to access this TLD. -* 2304 - * The claims period for this TLD has ended. -* 2306 - * Too many resource checks requested in one check command. - -## DomainCreateFlow - -### Description - -An EPP flow that creates a new domain resource. - -### Errors - -* 2002 - * Service extension(s) must be declared at login. - * Registrar is not logged in. - * The current registry phase allows registrations only with signed marks. - * The current registry phase does not allow for general registrations. - * Bulk pricing domain registered for too many years. - * Signed marks are only allowed during sunrise. - * An allocation token was provided that is invalid for premium domains. -* 2003 - * The provided mark does not match the desired domain label. - * Fees must be explicitly acknowledged when creating domains during the - Early Access Program. - * Fees must be explicitly acknowledged when performing any operations on a - premium name. - * Admin contact is required. - * Registrant is required. - * Technical contact is required. -* 2004 - * Unknown currency. - * The acceptance time specified in the claim notice is more than 48 hours - in the past. - * New registration period exceeds maximum number of years. - * The expiration time specified in the claim notice has elapsed. - * The fees passed in the transform command do not match the fees that will - be charged. - * Domain label is not allowed by IDN table. - * The checksum in the specified TCNID does not validate. - * Domain name is under tld which doesn't exist. -* 2005 - * Domain name must have exactly one part above the TLD. - * Domain name must not equal an existing multi-part TLD. - * The requested fee is expressed in a scale that is invalid for the given - currency. - * The specified TCNID is invalid. -* 2102 - * The 'maxSigLife' setting is not supported. - * The 'grace-period', 'applied' and 'refundable' fields are disallowed by - server policy. -* 2103 - * Specified extension is not implemented. -* 2201 - * The allocation token is invalid. - * Only a tool can pass a metadata extension. - * Registrar is not authorized to access this TLD. - * Registrar is missing the billing account map for this currency type. - * Registrar must be active in order to perform this operation. -* 2302 - * Resource with this id already exists. -* 2303 - * Resource linked to this domain does not exist. -* 2304 - * The allocation token is not currently valid. - * The claims period for this TLD has ended. - * Requested domain is reserved. - * Linked resource in pending delete prohibits operation. - * Requested domain requires a claims notice. - * Nameservers are not allow-listed for this TLD. - * Nameservers not specified for domain on TLD with nameserver allow list. - * The requested domain name is on the premium price list, and this - registrar has blocked premium registrations. - * Registrant is not allow-listed for this TLD. - * Requested domain does not require a claims notice. -* 2305 - * The allocation token is not valid for this domain. - * The allocation token is not valid for this registrar. - * The allocation token is not valid for this TLD. - * The allocation token was already redeemed. -* 2306 - * Anchor tenant domain create is for the wrong number of years. - * Trademarked domains cannot be registered before the sunrise period. - * The provided mark is not yet valid. - * The provided mark has expired. - * Signed mark data is revoked. - * Domain names can only contain a-z, 0-9, '.' and '-'. - * Periods for domain registrations must be specified in years. - * The requested fees cannot be provided in the requested currency. - * Non-IDN domain names cannot contain hyphens in the third or fourth - position. - * Domain label is blocked by the Brand Safety Alliance. - * Domain labels cannot be longer than 63 characters. - * More than one contact for a given role is not allowed. - * No part of a domain name can be empty. - * The fee description passed in the transform command matches multiple fee - types. - * The fee description passed in the transform command cannot be parsed. - * Domain has an invalid DS record. - * Domain name starts with xn-- but is not a valid IDN. - * The specified trademark validator is not supported. - * Domain labels cannot begin with a dash. - * Missing type attribute for contact. - * Too many DS records set on a domain. - * Too many nameservers set on this domain. - * Domain labels cannot end with a dash. - * Only encoded signed marks are supported. - -## DomainDeleteFlow - -### Description - -An EPP flow that deletes a domain. - -### Errors - -* 2002 - * Registrar is not logged in. - * Command is not allowed in the current registry phase. -* 2103 - * Specified extension is not implemented. -* 2201 - * The specified resource belongs to another client. - * Only a tool can pass a metadata extension. - * Registrar is not authorized to access this TLD. -* 2303 - * Resource with this id does not exist. -* 2304 - * Resource status prohibits this operation. -* 2305 - * Domain to be deleted has subordinate hosts. - -## DomainInfoFlow - -### Description - -An EPP flow that returns information about a domain. - -The registrar that owns the domain, and any registrar presenting a valid -authInfo for the domain, will get a rich result with all of the domain's fields. -All other requests will be answered with a minimal result containing only basic -information about the domain. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2004 - * Unknown currency. -* 2202 - * Authorization information for accessing resource is invalid. -* 2303 - * Resource with this id does not exist. -* 2306 - * Periods for domain registrations must be specified in years. - * The requested fees cannot be provided in the requested currency. - * Fee checks for command phases and subphases are not supported. - * Restores always renew a domain for one year. - * Transfers always renew a domain for one year. - -## DomainRenewFlow - -### Description - -An EPP flow that renews a domain. - -Registrars can use this flow to manually extend the length of a registration, -instead of relying on domain auto-renewal (where the registry performs an -automatic one-year renewal at the instant a domain would expire). - -ICANN prohibits any registration from being longer than ten years so if the -request would result in a registration greater than ten years long it will fail. -In practice this means it's impossible to request a ten-year renewal, since that -will always cause the new registration to be longer than 10 years unless it -comes in at the exact millisecond that the domain would have expired. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2003 - * Fees must be explicitly acknowledged when performing any operations on a - premium name. -* 2004 - * Unknown currency. - * New registration period exceeds maximum number of years. - * The fees passed in the transform command do not match the fees that will - be charged. - * The current expiration date is incorrect. -* 2005 - * The requested fee is expressed in a scale that is invalid for the given - currency. -* 2102 - * The 'grace-period', 'applied' and 'refundable' fields are disallowed by - server policy. -* 2201 - * The specified resource belongs to another client. - * Registrar is missing the billing account map for this currency type. - * Registrar is not authorized to access this TLD. - * Registrar must be active in order to perform this operation. - * The allocation token is invalid. -* 2303 - * Resource with this id does not exist. -* 2304 - * Resource status prohibits this operation. - * The allocation token is not currently valid. -* 2305 - * The __REMOVE_BULK_PRICING__ token is missing on a bulk pricing domain - command - * The __REMOVE_BULK_PRICING__ token is not allowed on non bulk pricing - domains - * The allocation token is not valid for this domain. - * The allocation token is not valid for this registrar. - * The allocation token is not valid for this TLD. - * The allocation token was already redeemed. -* 2306 - * Periods for domain registrations must be specified in years. - * The requested fees cannot be provided in the requested currency. - -## DomainRestoreRequestFlow - -### Description - -An EPP flow that requests that a domain in the redemption grace period be -restored. - -When a domain is deleted it is removed from DNS immediately and marked as -pending delete, but is not actually soft deleted. There is a period (by default -30 days) during which it can be restored by the original owner. When that period -expires there is a second period (by default 5 days) during which the domain -cannot be restored. After that period anyone can re-register this name. - -This flow is called a restore "request" because technically it is only supposed -to signal that the registrar requests the restore, which the registry can choose -to process or not based on a restore report that is submitted through an -out-of-band process and details the request. However, in practice this flow does -the restore immediately. This is allowable because all the fields on a restore -report are optional or have default values, and so by policy when the request -comes in we consider it to have been accompanied by a default-initialized report -which we auto-approve. - -Restores cost a fixed restore fee plus a one-year renewal fee for the domain. -The domain is restored to a single year expiration starting at the restore time, -regardless of what the original expiration time was. - -### Errors - -* 2002 - * Registrar is not logged in. - * Restore command cannot have other changes specified. -* 2003 - * Fees must be explicitly acknowledged when performing any operations on a - premium name. -* 2004 - * Unknown currency. - * The fees passed in the transform command do not match the fees that will - be charged. -* 2005 - * The requested fee is expressed in a scale that is invalid for the given - currency. -* 2102 - * The 'grace-period', 'applied' and 'refundable' fields are disallowed by - server policy. -* 2103 - * Specified extension is not implemented. -* 2201 - * The specified resource belongs to another client. - * Registrar is missing the billing account map for this currency type. - * Registrar is not authorized to access this TLD. - * Registrar must be active in order to perform this operation. -* 2303 - * Resource with this id does not exist. -* 2304 - * Requested domain is reserved. - * The requested domain name is on the premium price list, and this - registrar has blocked premium registrations. - * Domain is not eligible for restore. -* 2306 - * The requested fees cannot be provided in the requested currency. - -## DomainTransferApproveFlow - -### Description - -An EPP flow that approves a pending transfer on a domain. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, this flow allows the losing client to explicitly approve the -transfer request, which then becomes effective immediately. - -When the transfer was requested, poll messages and billing events were saved to -the database with timestamps such that they only would become active when the -transfer period passed. In this flow, those speculative objects are deleted and -replaced with new ones with the correct approval time. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * The specified resource belongs to another client. - * Registrar is not authorized to access this TLD. - * The allocation token is invalid. -* 2202 - * Authorization information for accessing resource is invalid. -* 2301 - * The resource does not have a pending transfer. -* 2303 - * Resource with this id does not exist. -* 2304 - * The allocation token is not currently valid. -* 2305 - * The allocation token is not valid for this domain. - * The allocation token is not valid for this registrar. - * The allocation token is not valid for this TLD. - * The allocation token was already redeemed. - -## DomainTransferCancelFlow - -### Description - -An EPP flow that cancels a pending transfer on a domain. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, this flow allows the gaining client to withdraw the transfer -request. - -When the transfer was requested, poll messages and billing events were saved to -the database with timestamps such that they only would become active when the -transfer period passed. In this flow, those speculative objects are deleted. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * Registrar is not the initiator of this transfer. - * Registrar is not authorized to access this TLD. -* 2202 - * Authorization information for accessing resource is invalid. -* 2301 - * The resource does not have a pending transfer. -* 2303 - * Resource with this id does not exist. - -## DomainTransferQueryFlow - -### Description - -An EPP flow that queries a pending transfer on a domain. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. This flow -can be used by the gaining or losing registrars (or anyone with the correct -authId) to see the status of a transfer, which may still be pending or may have -been approved, rejected, cancelled or implicitly approved by virtue of the -transfer period expiring. - -### Errors - -* 2002 - * Registrar is not logged in. - * Object has no transfer history. -* 2201 - * Registrar is not authorized to view transfer status. -* 2202 - * Authorization information for accessing resource is invalid. -* 2303 - * Resource with this id does not exist. - -## DomainTransferRejectFlow - -### Description - -An EPP flow that rejects a pending transfer on a domain. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, this flow allows the losing client to reject the transfer request. - -When the transfer was requested, poll messages and billing events were saved to -SQL with timestamps such that they only would become active when the transfer -period passed. In this flow, those speculative objects are deleted. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2201 - * The specified resource belongs to another client. - * Registrar is not authorized to access this TLD. -* 2202 - * Authorization information for accessing resource is invalid. -* 2301 - * The resource does not have a pending transfer. -* 2303 - * Resource with this id does not exist. - -## DomainTransferRequestFlow - -### Description - -An EPP flow that requests a transfer on a domain. - -The "gaining" registrar requests a transfer from the "losing" (aka current) -registrar. The losing registrar has a "transfer" time period to respond (by -default five days) after which the transfer is automatically approved. Within -that window, the transfer might be approved explicitly by the losing registrar -or rejected, and the gaining registrar can also cancel the transfer request. - -When a transfer is requested, poll messages and billing events are saved to the -database with timestamps such that they only become active when the -server-approval period passes. Keys to these speculative objects are saved in -the domain's transfer data, and on explicit approval, rejection or cancellation -of the request, they will be deleted (and in the approval case, replaced with -new ones with the correct approval time). - -### Errors - -* 2002 - * Registrar is not logged in. - * Registrar already sponsors the object of this transfer request. -* 2003 - * Fees must be explicitly acknowledged when performing any operations on a - premium name. -* 2004 - * Unknown currency. - * The fees passed in the transform command do not match the fees that will - be charged. -* 2005 - * The requested fee is expressed in a scale that is invalid for the given - currency. -* 2102 - * The 'grace-period', 'applied' and 'refundable' fields are disallowed by - server policy. -* 2201 - * Authorization info is required to request a transfer. - * Registrar is missing the billing account map for this currency type. - * Registrar is not authorized to access this TLD. - * Registrar must be active in order to perform this operation. - * The allocation token is invalid. -* 2202 - * Authorization information for accessing resource is invalid. -* 2300 - * The resource is already pending transfer. -* 2303 - * Resource with this id does not exist. -* 2304 - * Resource status prohibits this operation. - * Domain transfer period cannot be zero when using the fee transfer - extension. - * The requested domain name is on the premium price list, and this - registrar has blocked premium registrations. - * The allocation token is not currently valid. -* 2305 - * The allocation token is not valid for this domain. - * The allocation token is not valid for this registrar. - * The allocation token is not valid for this TLD. - * The allocation token was already redeemed. -* 2306 - * Domain transfer period must be one year. - * Domain transfer period must be zero or one year when using the superuser - EPP extension. - * Periods for domain registrations must be specified in years. - * The requested fees cannot be provided in the requested currency. - -## DomainUpdateFlow - -### Description - -An EPP flow that updates a domain. - -Updates can change contacts, nameservers and delegation signer data of a domain. -Updates cannot change the domain's name. - -Some status values (those of the form "serverSomethingProhibited") can only be -applied by the superuser. As such, adding or removing these statuses incurs a -billing event. There will be only one charge per update, even if several such -statuses are updated at once. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2003 - * At least one of 'add' or 'rem' is required on a secDNS update. - * Fees must be explicitly acknowledged when performing an operation which - is not free. - * Admin contact is required. - * Technical contact is required. - * Registrant is required. -* 2004 - * The specified status value cannot be set by clients. - * The fees passed in the transform command do not match the fees that will - be charged. -* 2102 - * Changing 'maxSigLife' is not supported. - * The 'urgent' attribute is not supported. -* 2103 - * Specified extension is not implemented. -* 2201 - * The specified resource belongs to another client. - * Only a tool can pass a metadata extension. - * Registrar is not authorized to access this TLD. -* 2303 - * Resource with this id does not exist. - * Resource linked to this domain does not exist. -* 2304 - * This resource has clientUpdateProhibited on it, and the update does not - clear that status. - * Resource status prohibits this operation. - * Linked resource in pending delete prohibits operation. - * Nameservers are not allow-listed for this TLD. - * Nameservers not specified for domain on TLD with nameserver allow list. - * Registrant is not allow-listed for this TLD. -* 2306 - * Cannot add and remove the same value. - * More than one contact for a given role is not allowed. - * Domain has an invalid DS record. - * Missing type attribute for contact. - * The secDNS:all element must have value 'true' if present. - * Too many DS records set on a domain. - * Too many nameservers set on this domain. - -## HelloFlow - -### Description - -A flow for an Epp "hello". - -### Errors - -* 2001 - * Generic XML syntax error that can be thrown by any flow. - -## HostCheckFlow - -### Description - -An EPP flow that checks whether a host can be provisioned. - -This flows can check the existence of multiple hosts simultaneously. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2306 - * Too many resource checks requested in one check command. - -## HostCreateFlow - -### Description - -An EPP flow that creates a new host. - -Hosts can be "external", or "internal" (also known as "in bailiwick"). Internal -hosts are those that are under a top level domain within this registry, and -external hosts are all other hosts. Internal hosts must have at least one ip -address associated with them, whereas external hosts cannot have any. This flow -allows creating a host name, and if necessary enqueues tasks to update DNS. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2003 - * Subordinate hosts must have an ip address. -* 2004 - * IP address version mismatch. - * Host names are limited to 253 characters. - * External hosts must not have ip addresses. -* 2005 - * Invalid host name. - * Host names must be in lower-case. - * Host names must be in normalized format. - * Host names must be puny-coded. -* 2302 - * Resource with this id already exists. -* 2303 - * Superordinate domain for this hostname does not exist. -* 2304 - * Superordinate domain for this hostname is in pending delete. -* 2306 - * Host names must be at least two levels below the registry suffix. - -## HostDeleteFlow - -### Description - -An EPP flow that deletes a host. - -Hosts that are in use by any domain cannot be deleted. The flow may return -immediately if a quick smoke check determines that deletion is impossible due to -an existing reference. However, a successful delete will always be asynchronous, -as all existing domains must be checked for references to the host before the -deletion is allowed to proceed. A poll message will be written with the success -or failure message when the process is complete. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2005 - * Host names must be in lower-case. - * Host names must be in normalized format. - * Host names must be puny-coded. -* 2201 - * The specified resource belongs to another client. -* 2303 - * Resource with this id does not exist. -* 2304 - * Resource status prohibits this operation. -* 2305 - * Resource to be deleted has active incoming references. - -## HostInfoFlow - -### Description - -An EPP flow that returns information about a host. - -The returned information included IP addresses, if any, and details of the -host's most recent transfer if it has ever been transferred. Any registrar can -see the information for any host. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2005 - * Host names must be in lower-case. - * Host names must be in normalized format. - * Host names must be puny-coded. -* 2303 - * Resource with this id does not exist. - -## HostUpdateFlow - -### Description - -An EPP flow that updates a host. - -Hosts can be "external", or "internal" (also known as "in bailiwick"). Internal -hosts are those that are under a top level domain within this registry, and -external hosts are all other hosts. Internal hosts must have at least one IP -address associated with them, whereas external hosts cannot have any. - -This flow allows changing a host name, and adding or removing IP addresses to -hosts. When a host is renamed from internal to external all IP addresses must be -simultaneously removed, and when it is renamed from external to internal at -least one must be added. If the host is renamed or IP addresses are added, tasks -are enqueued to update DNS accordingly. - -### Errors - -* 2002 - * Registrar is not logged in. -* 2004 - * The specified status value cannot be set by clients. - * Host names are limited to 253 characters. - * Cannot add IP addresses to an external host. - * Host rename from subordinate to external must also remove all IP - addresses. -* 2005 - * Host names must be in lower-case. - * Host names must be in normalized format. - * Host names must be puny-coded. - * Invalid host name. -* 2201 - * The specified resource belongs to another client. - * Domain for host is sponsored by another registrar. -* 2302 - * Host with specified name already exists. -* 2303 - * Resource with this id does not exist. - * Superordinate domain for this hostname does not exist. -* 2304 - * This resource has clientUpdateProhibited on it, and the update does not - clear that status. - * Resource status prohibits this operation. - * Superordinate domain for this hostname is in pending delete. - * Cannot remove all IP addresses from a subordinate host. - * Cannot rename an external host. -* 2306 - * Cannot add and remove the same value. - * Host names must be at least two levels below the registry suffix. - -## LoginFlow - -### Description - -An EPP flow for login. - -### Errors - -* 2001 - * Generic XML syntax error that can be thrown by any flow. -* 2002 - * Registrar is already logged in. -* 2100 - * Specified protocol version is not implemented. -* 2103 - * Specified extension is not implemented. -* 2200 - * Registrar certificate does not match stored certificate. - * Registrar IP address is not in stored allow list. - * Registrar certificate not present. - * Registrar password is incorrect. - * Registrar with this ID could not be found. -* 2201 - * Registrar account is not active. -* 2306 - * Specified language is not supported. -* 2307 - * Specified object service is not implemented. -* 2501 - * Registrar login failed too many times. - -## LogoutFlow - -### Description - -An EPP flow for logout. - -### Errors - -* 2002 - * Registrar is not logged in. - -## PollAckFlow - -### Description - -An EPP flow for acknowledging {@link PollMessage}s. - -Registrars refer to poll messages using an externally visible id generated by -{@link PollMessageExternalKeyConverter}. One-time poll messages are deleted from -the database once they are ACKed, whereas autorenew poll messages are simply -marked as read, and won't be delivered again until the next year of their -recurrence. - -### Errors - -* 2003 - * Message id is required. -* 2005 - * Message id is invalid. -* 2201 - * Registrar is not authorized to ack this message. -* 2303 - * Message with this id does not exist. - -## PollRequestFlow - -### Description - -An EPP flow for requesting {@link PollMessage}s. - -This flow uses an eventually consistent query to return the oldest poll message -for the registrar, as well as the total number of pending messages. Note that -poll messages whose event time is in the future (i.e. they are speculative and -could still be changed or rescinded) are ignored. The externally visible id for -the poll message that the registrar sees is generated by {@link -PollMessageExternalKeyConverter}. - -### Errors - -* 2005 - * Unexpected message id. - diff --git a/docs/gradle.lockfile b/docs/gradle.lockfile deleted file mode 100644 index 3f4ed8e43..000000000 --- a/docs/gradle.lockfile +++ /dev/null @@ -1,385 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -antlr:antlr:2.7.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -aopalliance:aopalliance:1.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -args4j:args4j:2.33=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.101tec:zkclient:0.10=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.beust:jcommander:1.60=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.10.3=testCompileClasspath -com.fasterxml.jackson.core:jackson-annotations:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-core:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-toml:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-joda:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml.jackson:jackson-bom:2.15.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.fasterxml:classmate:1.5.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor -com.github.ben-manes.caffeine:caffeine:2.9.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.docker-java:docker-java-api:3.3.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.docker-java:docker-java-transport-zerodep:3.3.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.docker-java:docker-java-transport:3.3.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.jnr:jffi:1.3.12=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-a64asm:1.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-constants:0.10.4=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-enxio:0.32.16=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-ffi:2.2.15=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-posix:3.1.18=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-unixsocket:0.38.21=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.jnr:jnr-x86asm:1.0.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.android:annotations:4.1.1.4=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api-client:google-api-client-appengine:1.35.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api-client:google-api-client-jackson2:2.0.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api-client:google-api-client-java6:1.35.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api-client:google-api-client-servlet:1.35.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api-client:google-api-client:1.35.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:gapic-google-cloud-storage-v2:2.22.6-alpha=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.47.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.171.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.171.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-bigtable-v2:2.30.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.107.13=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.12.19=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-spanner-v1:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-cloud-storage-v2:2.23.0-alpha=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:grpc-google-common-protos:2.29.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.47.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.171.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.171.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.30.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-bigtable-v2:2.30.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-datastore-v1:0.108.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-firestore-v1:3.15.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-monitoring-v3:3.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-pubsub-v1:1.107.13=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.12.19=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-secretmanager-v1:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-common-protos:2.29.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-iam-v1:1.24.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:api-common:2.21.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax-grpc:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax-httpjson:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-appengine:v1-rev20231107-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-bigquery:v2-rev20230812-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-cloudresourcemanager:v1-rev20230806-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-dataflow:v1b3-rev20220920-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-drive:v2-rev393-1.25.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-gmail:v1-rev20220404-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-groupssettings:v1-rev20210624-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-healthcare:v1-rev20231101-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-iamcredentials:v1-rev20211203-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-monitoring:v3-rev20231215-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-pubsub:v1-rev20220904-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-sheets:v4-rev20230815-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-sqladmin:v1beta4-rev20231208-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.apis:google-api-services-storage:v1-rev20231202-2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.appengine:appengine-api-1.0-sdk:1.9.86=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.appengine:appengine-testing:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-credentials:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auto.service:auto-service-annotations:1.1.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auto.value:auto-value-annotations:1.10.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.auto.value:auto-value:1.10.4=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor -com.google.cloud.bigdataoss:gcsio:2.2.16=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud.bigdataoss:util:2.2.16=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud.bigtable:bigtable-client-core-config:1.28.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud.datastore:datastore-v1-proto-client:2.17.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud.sql:jdbc-socket-factory-core:1.15.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud.sql:postgres-socket-factory:1.15.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-bigquerystorage:2.47.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-bigtable-stats:2.30.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-bigtable:2.30.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-core-grpc:2.28.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-core-http:2.21.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-core:2.28.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-firestore:3.15.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-monitoring:3.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-pubsub:1.125.13=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-pubsublite:1.12.19=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-secretmanager:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-spanner:6.55.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-storage:2.22.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:grpc-gcp:1.5.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.code.gson:gson:2.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.common.html.types:types:1.0.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.dagger:dagger:2.50=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.7.1=checkstyle -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.escapevelocity:escapevelocity:0.9.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.flatbuffers:flatbuffers-java:1.12.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.flogger:flogger-system-backend:0.8=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.flogger:flogger:0.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.flogger:google-extensions:0.8=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor -com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=annotationProcessor,errorprone,testAnnotationProcessor -com.google.guava:guava:31.0.1-jre=checkstyle -com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.gwt:gwt-user:2.10.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.http-client:google-http-client-apache-v2:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.http-client:google-http-client-appengine:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.http-client:google-http-client-gson:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.http-client:google-http-client-jackson2:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.http-client:google-http-client-protobuf:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.http-client:google-http-client:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.inject.extensions:guice-multibindings:4.1.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.inject:guice:4.1.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,errorprone,testAnnotationProcessor -com.google.j2objc:j2objc-annotations:1.3=checkstyle -com.google.j2objc:j2objc-annotations:2.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.jsinterop:jsinterop-annotations:2.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.monitoring-client:metrics:1.0.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.monitoring-client:stackdriver:1.0.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.oauth-client:google-oauth-client-appengine:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.oauth-client:google-oauth-client-java6:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.oauth-client:google-oauth-client-jetty:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.oauth-client:google-oauth-client-servlet:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.oauth-client:google-oauth-client:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java-util:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.re2j:re2j:1.7=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.template:soy:2021-02-01=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.truth:truth:1.2.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor -com.googlecode.json-simple:json-simple:1.1.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.ibm.icu:icu4j:74.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.jcraft:jsch:0.1.55=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.lmax:disruptor:3.4.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.puppycrawl.tools:checkstyle:9.3=checkstyle -com.squareup.okhttp3:okhttp:4.12.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.squareup.okio:okio-jvm:3.6.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.squareup.okio:okio:3.6.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.sun.istack:istack-commons-runtime:3.0.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.sun.xml.fastinfoset:FastInfoset:1.2.15=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.thoughtworks.paranamer:paranamer:2.7=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.thoughtworks.qdox:qdox:1.12.1=testCompileClasspath,testRuntimeClasspath -com.zaxxer:HikariCP:3.4.5=deploy_jar,runtimeClasspath,testRuntimeClasspath -commons-beanutils:commons-beanutils:1.9.4=checkstyle -commons-codec:commons-codec:1.16.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -commons-collections:commons-collections:3.2.2=checkstyle -commons-logging:commons-logging:1.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -dnsjava:dnsjava:3.5.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -info.picocli:picocli:4.6.2=checkstyle -io.confluent:common-config:5.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.confluent:common-utils:5.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.confluent:kafka-avro-serializer:5.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.confluent:kafka-schema-registry-client:5.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.github.classgraph:classgraph:4.8.162=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.github.java-diff-utils:java-diff-utils:4.12=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-alts:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-api:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-auth:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-census:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-context:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-core:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-googleapis:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-grpclb:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-inprocess:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-netty-shaded:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-netty:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf-lite:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-rls:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-services:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-stub:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-util:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-xds:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-buffer:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec-http2:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec-http:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec-socks:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-codec:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-common:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-handler-proxy:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-handler:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-resolver:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-tcnative-boringssl-static:2.0.52.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-tcnative-classes:2.0.52.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-transport-native-unix-common:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.netty:netty-transport:4.1.97.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-api:0.31.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-contrib-exemplar-util:0.31.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-contrib-grpc-metrics:0.31.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-contrib-grpc-util:0.31.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-contrib-http-util:0.31.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-contrib-resource-util:0.31.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-exporter-metrics-util:0.31.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-impl-core:0.31.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-impl:0.31.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.opencensus:opencensus-proto:0.2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.perfmark:perfmark-api:0.26.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.activation:activation:1.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.activation:javax.activation-api:1.2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.annotation:javax.annotation-api:1.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.annotation:jsr250-api:1.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -javax.jdo:jdo2-api:2.3-20090302111651=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.mail:mail:1.5.0-b01=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.persistence:javax.persistence-api:2.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.servlet:servlet-api:2.5=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.validation:validation-api:1.0.0.GA=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.xml.bind:jaxb-api:2.3.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -jline:jline:1.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -joda-time:joda-time:2.10.14=deploy_jar,runtimeClasspath,testRuntimeClasspath -junit:junit:4.13.2=testCompileClasspath,testRuntimeClasspath -net.bytebuddy:byte-buddy:1.12.18=deploy_jar,runtimeClasspath,testRuntimeClasspath -net.java.dev.jna:jna:5.13.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -net.sf.saxon:Saxon-HE:10.6=checkstyle -org.antlr:antlr4-runtime:4.9.3=checkstyle -org.apache.arrow:arrow-format:5.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.arrow:arrow-memory-core:5.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.arrow:arrow-vector:5.0.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.avro:avro:1.8.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-model-fn-execution:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-model-job-management:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-model-pipeline:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-runners-core-construction-java:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-runners-core-java:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-runners-google-cloud-dataflow-java:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-runners-java-fn-execution:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-core:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-expansion-service:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-extensions-arrow:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-extensions-avro:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-extensions-protobuf:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-fn-execution:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-harness:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-io-kafka:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-sdks-java-transform-service-launcher:2.53.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-vendor-grpc-1_54_0:0.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.beam:beam-vendor-guava-32_1_2-jre:0.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.commons:commons-compress:1.24.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.apache.commons:commons-csv:1.10.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.commons:commons-lang3:3.14.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.httpcomponents:httpclient:4.5.14=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apache.httpcomponents:httpcore:4.4.16=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath -org.bouncycastle:bcpg-jdk15on:1.67=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.bouncycastle:bcpkix-jdk15on:1.67=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.bouncycastle:bcprov-jdk15on:1.67=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.checkerframework:checker-compat-qual:2.5.3=compileClasspath,testCompileClasspath -org.checkerframework:checker-compat-qual:2.5.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:checker-qual:3.12.0=checkstyle -org.checkerframework:checker-qual:3.41.0=compileClasspath -org.checkerframework:checker-qual:3.42.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.jackson:jackson-core-asl:1.9.13=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.codehaus.jackson:jackson-mapper-asl:1.9.13=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.23=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.conscrypt:conscrypt-openjdk-uber:2.5.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-http:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-io:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-security:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-server:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-servlet:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-util-ajax:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.eclipse.jetty:jetty-util:9.4.49.v20220914=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.flywaydb:flyway-core:9.22.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.glassfish.jaxb:jaxb-runtime:2.3.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.glassfish.jaxb:txw2:2.3.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.gwtproject:gwt-user:2.10.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath -org.hamcrest:hamcrest:2.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.hibernate.common:hibernate-commons-annotations:5.1.2.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.hibernate:hibernate-core:5.6.15.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.hibernate:hibernate-hikaricp:5.6.15.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jacoco:org.jacoco.agent:0.8.9=jacocoAgent,jacocoAnt -org.jacoco:org.jacoco.ant:0.8.9=jacocoAnt -org.jacoco:org.jacoco.core:0.8.9=jacocoAnt -org.jacoco:org.jacoco.report:0.8.9=jacocoAnt -org.javassist:javassist:3.28.0-GA=checkstyle -org.jboss.logging:jboss-logging:3.4.3.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jboss:jandex:2.4.2.Final=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.9.10=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jetbrains:annotations:17.0.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.joda:joda-money:1.0.4=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.json:json:20231013=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.jsoup:jsoup:1.17.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-api:5.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.jupiter:junit-jupiter-engine:5.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-commons:1.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-launcher:1.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-runner:1.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-suite-api:1.10.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-suite-commons:1.10.1=testRuntimeClasspath -org.junit:junit-bom:5.10.1=testCompileClasspath,testRuntimeClasspath -org.jvnet.staxex:stax-ex:1.8=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testRuntimeClasspath -org.ow2.asm:asm-analysis:9.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-commons:9.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-commons:9.5=jacocoAnt -org.ow2.asm:asm-tree:9.5=jacocoAnt -org.ow2.asm:asm-tree:9.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm-util:9.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.ow2.asm:asm:9.5=jacocoAnt -org.ow2.asm:asm:9.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor -org.postgresql:postgresql:42.7.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.reflections:reflections:0.10.2=checkstyle -org.rnorth.duct-tape:duct-tape:1.0.8=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.slf4j:slf4j-api:1.7.36=testCompileClasspath -org.slf4j:slf4j-api:2.1.0-alpha1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.slf4j:slf4j-jdk14:2.1.0-alpha1=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.springframework:spring-core:5.3.27=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.springframework:spring-expression:5.3.27=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.springframework:spring-jcl:5.3.27=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.testcontainers:database-commons:1.19.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.testcontainers:jdbc:1.19.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.testcontainers:junit-jupiter:1.19.3=testCompileClasspath,testRuntimeClasspath -org.testcontainers:postgresql:1.19.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.testcontainers:testcontainers:1.19.3=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.threeten:threetenbp:1.6.8=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.tukaani:xz:1.5=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.w3c.css:sac:1.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.xerial.snappy:snappy-java:1.1.10.4=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.yaml:snakeyaml:2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -us.fatehi:schemacrawler-api:16.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -us.fatehi:schemacrawler-diagram:16.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -us.fatehi:schemacrawler-tools:16.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -us.fatehi:schemacrawler-utility:16.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -us.fatehi:schemacrawler:16.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -xerces:xmlParserAPIs:2.6.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -xpp3:xpp3:1.1.4c=deploy_jar,runtimeClasspath,testRuntimeClasspath -empty=errorproneJavac diff --git a/docs/src/main/java/google/registry/documentation/DocumentationGenerator.java b/docs/src/main/java/google/registry/documentation/DocumentationGenerator.java deleted file mode 100644 index cfac57673..000000000 --- a/docs/src/main/java/google/registry/documentation/DocumentationGenerator.java +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static com.google.common.collect.ImmutableList.toImmutableList; -import static java.util.Comparator.comparing; - -import com.google.common.collect.ImmutableList; -import google.registry.documentation.FlowDocumentation.ErrorCase; -import java.util.stream.Stream; -import javax.lang.model.element.Modifier; -import javax.lang.model.element.TypeElement; -import javax.lang.model.util.ElementFilter; -import jdk.javadoc.doclet.DocletEnvironment; - -/** - * Main entry point class for documentation generation. An instance of this class reads data via the - * javadoc system upon creation and stores it for answering future queries for documentation - * information. - */ -public final class DocumentationGenerator { - - private final DocletEnvironment sourceRoot; - - /** Returns a new DocumentationGenerator object with parsed information from javadoc. */ - public DocumentationGenerator() throws Exception { - sourceRoot = JavadocWrapper.getDocletEnv(); - } - - /** Returns generated Markdown output for the flows. Convenience method for clients. */ - public String generateMarkdown() { - return MarkdownDocumentationFormatter.generateMarkdownOutput(getFlowDocs()); - } - - /** Returns a list of flow documentation objects derived from this generator's data. */ - public ImmutableList getFlowDocs() { - // Relevant flows are leaf flows: precisely the concrete subclasses of Flow. - return getConcreteSubclassesStream(FlowDocumentation.BASE_FLOW_CLASS_NAME) - .sorted(comparing(element -> element.getSimpleName().toString())) - .map(typeElement -> new FlowDocumentation(typeElement, sourceRoot)) - .collect(toImmutableList()); - } - - /** Returns a list of all possible error cases that might occur. */ - public ImmutableList getAllErrors() { - // Relevant error cases are precisely the concrete subclasses of EppException. - return getConcreteSubclassesStream(FlowDocumentation.EXCEPTION_CLASS_NAME) - .map( - typeElement -> - new ErrorCase( - typeElement, - sourceRoot.getDocTrees().getDocCommentTree(typeElement), - sourceRoot.getTypeUtils())) - .collect(toImmutableList()); - } - - /** Helper to return all concrete subclasses of a given named class. */ - private Stream getConcreteSubclassesStream(String baseClassName) { - final TypeElement baseFlowTypeElement = - sourceRoot.getElementUtils().getTypeElement(baseClassName); - return ElementFilter.typesIn(sourceRoot.getIncludedElements()).stream() - .filter( - typeElement -> - sourceRoot - .getTypeUtils() - .isSubtype(typeElement.asType(), baseFlowTypeElement.asType()) - && !typeElement.getModifiers().contains(Modifier.ABSTRACT)); - } -} diff --git a/docs/src/main/java/google/registry/documentation/FlowDocumentation.java b/docs/src/main/java/google/registry/documentation/FlowDocumentation.java deleted file mode 100644 index 109da5612..000000000 --- a/docs/src/main/java/google/registry/documentation/FlowDocumentation.java +++ /dev/null @@ -1,370 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.collect.MoreCollectors.onlyElement; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ListMultimap; -import com.google.common.collect.Multimaps; -import com.google.re2j.Matcher; -import com.google.re2j.Pattern; -import com.sun.source.doctree.DocCommentTree; -import com.sun.source.doctree.DocTree; -import com.sun.source.doctree.DocTree.Kind; -import com.sun.source.doctree.LinkTree; -import com.sun.source.doctree.ReferenceTree; -import com.sun.source.doctree.UnknownBlockTagTree; -import google.registry.flows.EppException; -import google.registry.model.eppoutput.Result.Code; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.StringJoiner; -import java.util.TreeMap; -import javax.annotation.Nullable; -import javax.lang.model.element.AnnotationMirror; -import javax.lang.model.element.AnnotationValue; -import javax.lang.model.element.Modifier; -import javax.lang.model.element.TypeElement; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.util.Elements; -import javax.lang.model.util.Types; -import jdk.javadoc.doclet.DocletEnvironment; - -/** - * Class to represent documentation information for a single EPP flow. - * - *

        The static method {@link DocumentationGenerator#getFlowDocs} returns a list of {@link - * FlowDocumentation} instances corresponding to the leaf flows in the flows package, constructing - * the instances from class information returned from the javadoc system. Each instance has methods - * for retrieving relevant information about the flow, such as a description, error conditions, etc. - */ -public class FlowDocumentation { - - /** Constants for names of various relevant packages and classes. */ - static final String FLOW_PACKAGE_NAME = "google.registry.flows"; - - static final String BASE_FLOW_CLASS_NAME = FLOW_PACKAGE_NAME + ".Flow"; - static final String EXCEPTION_CLASS_NAME = FLOW_PACKAGE_NAME + ".EppException"; - static final String CODE_ANNOTATION_NAME = EXCEPTION_CLASS_NAME + ".EppResultCode"; - - /** Root of the source doclet environment. */ - private final DocletEnvironment sourceRoot; - - /** Type Element of the class. */ - private final TypeElement typeElement; - - /** Doc tree for the flow. */ - private final DocCommentTree docTree; - - /** Javadoc-tagged error conditions for this flow in list form. */ - private final List errors; - - /** Javadoc-tagged error conditions for this flow, organized by underlying error code. */ - private final ListMultimap errorsByCode; - - /** - * Creates a {@link FlowDocumentation} for this flow class using data from javadoc tags. Not - * public because clients should get FlowDocumentation objects via the DocumentationGenerator - * class. - */ - protected FlowDocumentation(TypeElement typeElement, DocletEnvironment sourceRoot) { - this.sourceRoot = sourceRoot; - this.typeElement = typeElement; - this.docTree = sourceRoot.getDocTrees().getDocCommentTree(typeElement); - errors = new ArrayList<>(); - // Store error codes in sorted order, and leave reasons in insert order. - errorsByCode = Multimaps.newListMultimap(new TreeMap<>(), ArrayList::new); - parseTags(); - } - - /** Name of the class for this flow. */ - public String getName() { - return typeElement.getSimpleName().toString(); - } - - /** Fully qualified name of the class for this flow. */ - public String getQualifiedName() { - return typeElement.getQualifiedName().toString(); - } - - /** Name of the package in which this flow resides. */ - public String getPackageName() { - return sourceRoot.getElementUtils().getPackageOf(typeElement).getQualifiedName().toString(); - } - - /** Javadoc of the class. */ - public String getDocTree() { - StringJoiner joiner = new StringJoiner(""); - docTree.getFullBody().forEach(dt -> joiner.add(dt.toString())); - return joiner.toString(); - } - - public ImmutableList getErrors() { - return ImmutableList.copyOf(errors); - } - - public ImmutableMultimap getErrorsByCode() { - return ImmutableMultimap.copyOf(errorsByCode); - } - - /** Iterates through javadoc tags on the underlying class and calls specific parsing methods. */ - private void parseTags() { - for (DocTree tag : docTree.getBlockTags()) { - if (tag.getKind() == DocTree.Kind.UNKNOWN_BLOCK_TAG) { - UnknownBlockTagTree unknownBlockTagTree = (UnknownBlockTagTree) tag; - // Everything else is not a relevant tag. - if (unknownBlockTagTree.getTagName().equals("error")) { - parseErrorTag(unknownBlockTagTree); - } - } - } - } - - /** Exception to throw when an @error tag cannot be parsed correctly. */ - private static class BadErrorTagFormatException extends IllegalStateException { - /** Makes a message to use as a prefix for the reason passed up to the superclass. */ - private static String makeMessage( - String reason, TypeElement typeElement, UnknownBlockTagTree tagTree) { - return String.format( - "Bad @error tag format (%s) in class %s - %s", - tagTree.toString(), typeElement.getQualifiedName(), reason); - } - - private BadErrorTagFormatException( - String reason, TypeElement typeElement, UnknownBlockTagTree tagTree) { - super(makeMessage(reason, typeElement, tagTree)); - } - - private BadErrorTagFormatException( - String reason, TypeElement typeElement, UnknownBlockTagTree tagTree, Exception cause) { - super(makeMessage(reason, typeElement, tagTree), cause); - } - } - - /** Parses a javadoc tag corresponding to an error case and updates the error mapping. */ - private void parseErrorTag(UnknownBlockTagTree tagTree) { - // Parse the @error tag text to find the @link inline tag. - LinkTree linkedTag; - try { - linkedTag = - tagTree.getContent().stream() - .filter(docTree -> docTree.getKind() == Kind.LINK) - .map(LinkTree.class::cast) - .collect(onlyElement()); - } catch (NoSuchElementException | IllegalArgumentException e) { - throw new BadErrorTagFormatException( - String.format( - "expected one @link tag in tag text but found %s: %s", - (e instanceof NoSuchElementException ? "none" : "multiple"), tagTree.toString()), - typeElement, - tagTree, - e); - } - // Check to see if the @link tag references a valid class. - ReferenceTree referenceTree = linkedTag.getReference(); - TypeElement referencedTypeElement = getReferencedElement(referenceTree); - if (referencedTypeElement == null) { - throw new BadErrorTagFormatException( - "could not resolve class from @link tag text: " + linkedTag.toString(), - typeElement, - tagTree); - } - // Try to convert the referenced class into an ErrorCase; fail if it's not an EppException. - ErrorCase error; - try { - DocCommentTree docCommentTree = - sourceRoot.getDocTrees().getDocCommentTree(referencedTypeElement); - error = new ErrorCase(referencedTypeElement, docCommentTree, sourceRoot.getTypeUtils()); - } catch (IllegalStateException | IllegalArgumentException e) { - throw new BadErrorTagFormatException( - "class referenced in @link is not a valid EppException: " - + referencedTypeElement.getQualifiedName(), - typeElement, - tagTree, - e); - } - // Success; store this as a parsed error case. - errors.add(error); - errorsByCode.put(error.getCode(), error); - } - - /** - * Try to find the {@link TypeElement} of the class in the {@link ReferenceTree}. - * - *

        Unfortunately the new Javadoc API doesn't expose the referenced class object directly, so we - * have to find it by trying to find out its fully qualified class name and then loading it from - * the {@link Elements}. - */ - private TypeElement getReferencedElement(ReferenceTree referenceTree) { - String signature = referenceTree.getSignature(); - Elements elements = sourceRoot.getElementUtils(); - TypeElement referencedTypeElement = elements.getTypeElement(signature); - // If the signature is already a qualified class name, we should find it directly. Otherwise - // only the simple class name is used in the @error tag and we try to find its package name. - if (referencedTypeElement == null) { - // First try if the error class is in the same package as the flow class that we are - // processing. - referencedTypeElement = - elements.getTypeElement(String.format("%s.%s", getPackageName(), signature)); - } - if (referencedTypeElement == null) { - // Then try if the error class is a nested class of the flow class that we are processing. - referencedTypeElement = - elements.getTypeElement(String.format("%s.%s", getQualifiedName(), signature)); - } - if (referencedTypeElement == null) { - // Lastly, the error class must have been imported. We read the flow class file, and try to - // find the import statement that ends with the simple class name. - String currentClassFilename = - String.format( - "%s/%s.java", - JavadocWrapper.SOURCE_PATH, getQualifiedName().replaceAll("\\.", "\\/")); - String unusedClassFileContent; - try { - unusedClassFileContent = Files.readString(Path.of(currentClassFilename), UTF_8); - } catch (IOException e) { - throw new RuntimeException(e); - } - // To understand this regex: the import statement must start with a new line or a semicolon, - // followed by any number of whitespaces, the word "import" (we don't consider static import), - // any number of whitespaces, repeats of "\w*." (this is not exactly precise, but for all - // well-named classes it should suffice), the signature, any number of whitespaces, and - // finally an ending semicolon. "?:" is used to designate non-capturing groups as we are only - // interested in capturing the fully qualified class name. - Pattern pattern = - Pattern.compile(String.format("(?:\\n|;)\\s*import\\s+((?:\\w*\\.)*%s)\\s*;", signature)); - Matcher matcher = pattern.matcher(unusedClassFileContent); - if (matcher.find()) { - referencedTypeElement = elements.getTypeElement(matcher.group(1)); - } - } - - return referencedTypeElement; - } - - /** - * Represents an error case for a flow, with a reason for the error and the EPP error code. - * - *

        This class is an immutable wrapper for the name of an {@link EppException} subclass that - * gets thrown to indicate an error condition. It overrides {@code equals()} and {@code - * hashCode()} so that instances of this class can be used in collections in the normal fashion. - */ - public static class ErrorCase { - - /** The non-qualified name of the exception class. */ - private final String name; - - /** The fully-qualified name of the exception class. */ - private final String className; - - /** The reason this error was thrown, normally documented on the low-level exception class. */ - private final String reason; - - /** Utility class to convert {@link TypeMirror} to {@link TypeElement}. */ - private final Types types; - - /** The EPP error code value corresponding to this error condition. */ - private final long errorCode; - - /** Constructs an ErrorCase from the corresponding class for a low-level flow exception. */ - protected ErrorCase(TypeElement typeElement, DocCommentTree commentTree, Types types) { - name = typeElement.getSimpleName().toString(); - className = typeElement.getQualifiedName().toString(); - // The javadoc comment on the class explains the reason for the error condition. - reason = commentTree.getFullBody().toString(); - this.types = types; - TypeElement highLevelExceptionTypeElement = getHighLevelExceptionFrom(typeElement); - errorCode = extractErrorCode(highLevelExceptionTypeElement); - checkArgument( - !typeElement.getModifiers().contains(Modifier.ABSTRACT), - "Cannot use an abstract subclass of EppException as an error case"); - } - - public String getName() { - return name; - } - - protected String getClassName() { - return className; - } - - public String getReason() { - return reason; - } - - public long getCode() { - return errorCode; - } - - /** Returns the direct subclass of EppException that this class is a subclass of (or is). */ - private TypeElement getHighLevelExceptionFrom(TypeElement typeElement) { - // While we're not yet at the root, move up the class hierarchy looking for EppException. - while (typeElement.getSuperclass() != null) { - TypeElement superClassTypeElement = - (TypeElement) types.asElement(typeElement.getSuperclass()); - if (superClassTypeElement.getQualifiedName().toString().equals(EXCEPTION_CLASS_NAME)) { - return typeElement; - } - typeElement = superClassTypeElement; - } - // Failure; we reached the root without finding a subclass of EppException. - throw new IllegalArgumentException( - String.format("Class referenced is not a subclass of %s", EXCEPTION_CLASS_NAME)); - } - - /** Returns the corresponding EPP error code for an annotated subclass of EppException. */ - private long extractErrorCode(TypeElement typeElement) { - try { - // We're looking for a specific annotation by name that should appear only once. - AnnotationMirror errorCodeAnnotation = - typeElement.getAnnotationMirrors().stream() - .filter(anno -> anno.getAnnotationType().toString().equals(CODE_ANNOTATION_NAME)) - .findFirst() - .get(); - // The annotation should have one element whose value converts to an EppResult.Code. - AnnotationValue value = - errorCodeAnnotation.getElementValues().entrySet().iterator().next().getValue(); - return Code.valueOf(value.getValue().toString()).code; - } catch (IllegalStateException e) { - throw new IllegalStateException( - "No error code annotation found on exception " + typeElement.getQualifiedName(), e); - } catch (ArrayIndexOutOfBoundsException | ClassCastException | IllegalArgumentException e) { - throw new IllegalStateException( - "Bad annotation on exception " + typeElement.getQualifiedName(), e); - } - } - - @Override - public boolean equals(@Nullable Object object) { - // The className field canonically identifies the EppException wrapped by this class, and - // all other instance state is derived from that exception, so we only check className. - return object instanceof ErrorCase && this.className.equals(((ErrorCase) object).className); - } - - @Override - public int hashCode() { - // See note for equals() - only className is needed for comparisons. - return className.hashCode(); - } - } -} diff --git a/docs/src/main/java/google/registry/documentation/FlowDocumentationTool.java b/docs/src/main/java/google/registry/documentation/FlowDocumentationTool.java deleted file mode 100644 index 29c448a9e..000000000 --- a/docs/src/main/java/google/registry/documentation/FlowDocumentationTool.java +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; -import com.google.common.io.Files; -import java.io.File; -import java.io.IOException; - -/** - * Tool to generate documentation for the EPP flows and corresponding external API. - * - *

        Mostly responsible for producing standalone documentation files (HTML and Markdown) from flow - * information objects; those call into javadoc to extract documentation information from the flows - * package source files. See the {@link FlowDocumentation} class for more details. - */ -@Parameters(separators = " =", commandDescription = "Tool to generate EPP API documentation") -public class FlowDocumentationTool { - - @Parameter( - names = {"-o", "--output_file"}, - description = "file where generated documentation will be written (use '-' for stdout)") - private String outputFileName; - - @Parameter( - names = {"--help", "--helpshort"}, - description = "print this help", - help = true) - private boolean displayHelp = false; - - /** Parses command line flags and then runs the documentation tool. */ - public static void main(String[] args) { - FlowDocumentationTool docTool = new FlowDocumentationTool(); - JCommander jcommander = new JCommander(docTool); - jcommander.setProgramName("flow_docs_tool"); - - try { - jcommander.parse(args); - } catch (ParameterException e) { - jcommander.usage(); - throw e; - } - - if (docTool.displayHelp) { - jcommander.usage(); - return; - } - - docTool.run(); - } - - /** Generates flow documentation and then outputs it to the specified file. */ - public void run() { - DocumentationGenerator docGenerator; - try { - docGenerator = new DocumentationGenerator(); - } catch (Exception e) { - throw new RuntimeException("IO error while running Javadoc tool", e); - } - String output = docGenerator.generateMarkdown(); - if (outputFileName.equals("-")) { - System.out.println(output); - } else { - if (outputFileName == null) { - outputFileName = "doclet.md"; - } - try { - Files.asCharSink(new File(outputFileName), UTF_8).write(output); - } catch (IOException e) { - throw new RuntimeException("Could not write to specified output file", e); - } - } - } -} diff --git a/docs/src/main/java/google/registry/documentation/JavadocWrapper.java b/docs/src/main/java/google/registry/documentation/JavadocWrapper.java deleted file mode 100644 index 12270e9ed..000000000 --- a/docs/src/main/java/google/registry/documentation/JavadocWrapper.java +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static google.registry.util.BuildPathUtils.getProjectRoot; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.google.common.collect.ImmutableList; -import com.google.common.flogger.FluentLogger; -import com.sun.tools.javac.file.JavacFileManager; -import com.sun.tools.javac.util.Context; -import java.io.File; -import java.util.Collection; -import java.util.EnumMap; -import java.util.Map; -import javax.tools.StandardLocation; -import jdk.javadoc.doclet.DocletEnvironment; -import jdk.javadoc.internal.tool.AccessKind; -import jdk.javadoc.internal.tool.JavadocTool; -import jdk.javadoc.internal.tool.Messager; -import jdk.javadoc.internal.tool.ToolOption; - -/** - * Wrapper class to simplify calls to the javadoc system and hide internal details. An instance - * represents a set of parameters for calling out to javadoc; these parameters can be set via the - * appropriate methods, and determine what files and packages javadoc will process. The actual - * running of javadoc occurs when calling getRootDoc() to retrieve a javadoc RootDoc. - */ -public final class JavadocWrapper { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - /** Shows any member visible at at least the default (package) level. */ - private static final AccessKind ACCESS_KIND = AccessKind.PACKAGE; - - /** Root directory for source files. */ - public static final String SOURCE_PATH = - getProjectRoot().resolve("core/src/main/java").toString(); - - /** Specific packages to generate documentation for. */ - private static final ImmutableList SOURCE_PACKAGE_NAMES = - ImmutableList.of(FlowDocumentation.FLOW_PACKAGE_NAME); - - /** - * Obtains a Javadoc {@link DocletEnvironment} object containing raw Javadoc documentation. Wraps - * a call to the static method {@link #createDocletEnv} and passes in instance-specific settings. - */ - public static DocletEnvironment getDocletEnv() throws Exception { - logger.atInfo().log("Starting Javadoc tool"); - File sourceFilePath = new File(SOURCE_PATH); - logger.atInfo().log("Using source directory: %s", sourceFilePath.getAbsolutePath()); - try { - return createDocletEnv(SOURCE_PATH, SOURCE_PACKAGE_NAMES); - } finally { - logger.atInfo().log("Javadoc tool finished"); - } - } - - /** - * Obtains a Javadoc {@link DocletEnvironment} object for the specified source path and - * package/Java names. If the source path is null, then the working directory is assumed as the - * source path. - * - *

        If a list of package names is provided, then Javadoc will run on these packages and all - * their subpackages, based out of the specified source path. - * - *

        If a list of file names is provided, then Javadoc will also run on these Java source files. - * The specified source path is not considered in this case. - * - * @param sourcePath the directory where to look for packages. - * @param packageNames name of the package to run javadoc on, including subpackages. - * @see - * Package jdk.javadoc.doclet - */ - private static DocletEnvironment createDocletEnv( - String sourcePath, Collection packageNames) throws Exception { - - // Create a context to hold settings for Javadoc. - Context context = new Context(); - - // Pre-register a messager for the context. - Messager.preRegister(context, JavadocWrapper.class.getName()); - - // Set source path option for Javadoc. - try (JavacFileManager fileManager = new JavacFileManager(context, true, UTF_8)) { - - fileManager.setLocation(StandardLocation.SOURCE_PATH, ImmutableList.of(new File(sourcePath))); - - // Create an instance of Javadoc. - JavadocTool javadocTool = JavadocTool.make0(context); - - // Set up javadoc tool options. - Map options = new EnumMap<>(ToolOption.class); - options.put(ToolOption.SHOW_PACKAGES, ACCESS_KIND); - options.put(ToolOption.SHOW_TYPES, ACCESS_KIND); - options.put(ToolOption.SHOW_MEMBERS, ACCESS_KIND); - options.put(ToolOption.SHOW_MODULE_CONTENTS, ACCESS_KIND); - options.put(ToolOption.SUBPACKAGES, packageNames); - - // Invoke Javadoc and ask it for a DocletEnvironment containing the specified packages. - return javadocTool.getEnvironment( - options, // options - ImmutableList.of(), // java names - ImmutableList.of()); // java files - } - } - - private JavadocWrapper() {} -} diff --git a/docs/src/main/java/google/registry/documentation/MarkdownDocumentationFormatter.java b/docs/src/main/java/google/registry/documentation/MarkdownDocumentationFormatter.java deleted file mode 100644 index 998aec153..000000000 --- a/docs/src/main/java/google/registry/documentation/MarkdownDocumentationFormatter.java +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.CharMatcher; -import com.google.common.base.Splitter; -import com.google.common.base.Strings; -import com.google.re2j.Matcher; -import com.google.re2j.Pattern; -import google.registry.documentation.FlowDocumentation.ErrorCase; -import java.util.ArrayList; -import java.util.List; - -/** Formatter that converts flow documentation into Markdown. */ -public final class MarkdownDocumentationFormatter { - - /** Header for flow documentation HTML output. */ - private static final String MARKDOWN_HEADER = "# Nomulus EPP Command API Documentation\n\n"; - - /** Pattern that naively matches HTML tags and entity references. */ - private static final Pattern HTML_TAG_AND_ENTITY_PATTERN = Pattern.compile("<[^>]*>|&[^;]*;"); - - /** 8 character indentation. */ - private static final String INDENT8 = Strings.repeat(" ", 8); - - /** Max linewidth for our markdown docs. */ - private static final int LINE_WIDTH = 80; - - /** - * Returns the string with all HTML tags stripped. Also, removes a single space after any newlines - * that have one (we get a single space indent for all lines but the first because of the way that - * javadocs are written in comments). - */ - @VisibleForTesting - static String fixHtml(String value) { - Matcher matcher = HTML_TAG_AND_ENTITY_PATTERN.matcher(value); - int pos = 0; - StringBuilder result = new StringBuilder(); - while (matcher.find(pos)) { - result.append(value, pos, matcher.start()); - switch (matcher.group(0)) { - case "

        ": - //

        is simply removed. - break; - case "&": - result.append("&"); - break; - case "<": - result.append("<"); - break; - case ">": - result.append(">"); - break; - case "&squot;": - result.append("'"); - break; - case """: - result.append("\""); - break; - default: - throw new IllegalArgumentException("Unrecognized HTML sequence: " + matcher.group(0)); - } - pos = matcher.end(); - } - - // Add the string after the last HTML sequence. - result.append(value.substring(pos)); - - return result.toString().replace("\n ", "\n"); - } - - /** Formats a list of words into a paragraph with less than maxWidth characters per line. */ - @VisibleForTesting - static String formatParagraph(List words, int maxWidth) { - int lineLength = 0; - - StringBuilder output = new StringBuilder(); - for (String word : words) { - // This check ensures that 1) don't add a space before the word and 2) always have at least - // one word per line, so that we don't mishandle a very long word at the end of a line by - // adding a blank line before the word. - if (lineLength > 0) { - // Do we have enough room for another word? - if (lineLength + 1 + word.length() > maxWidth) { - // No. End the line. - output.append('\n'); - lineLength = 0; - } else { - // Yes: Insert a space before the word. - output.append(' '); - ++lineLength; - } - } - - output.append(word); - lineLength += word.length(); - } - - output.append('\n'); - return output.toString(); - } - - /** Returns 'value' with words reflowed to maxWidth characters. */ - @VisibleForTesting - static String reflow(String text, int maxWidth) { - - // A list of words that will be constructed into the list of words in a paragraph. - ArrayList words = new ArrayList<>(); - - // Read through the lines, process a paragraph every time we get a blank line. - StringBuilder resultBuilder = new StringBuilder(); - for (String line : Splitter.on('\n').trimResults().split(text)) { - - // If we got a blank line, format our current paragraph and start fresh. - if (line.trim().isEmpty()) { - resultBuilder.append(formatParagraph(words, maxWidth)); - resultBuilder.append('\n'); - words.clear(); - continue; - } - - // Split the line into words and add them to the current paragraph. - words.addAll( - Splitter.on(CharMatcher.breakingWhitespace()).omitEmptyStrings().splitToList(line)); - } - - // Format the last paragraph, if any. - if (!words.isEmpty()) { - resultBuilder.append(formatParagraph(words, maxWidth)); - } - - return resultBuilder.toString(); - } - - /** Returns a string of HTML representing the provided flow documentation objects. */ - public static String generateMarkdownOutput(Iterable flowDocs) { - StringBuilder output = new StringBuilder(); - output.append(MARKDOWN_HEADER); - for (FlowDocumentation flowDoc : flowDocs) { - output.append(String.format("## %s\n\n", flowDoc.getName())); - output.append("### Description\n\n"); - output.append(String.format("%s\n", reflow(fixHtml(flowDoc.getDocTree()), LINE_WIDTH))); - output.append("### Errors\n\n"); - for (Long code : flowDoc.getErrorsByCode().keySet()) { - output.append(String.format("* %d\n", code)); - - flowDoc.getErrorsByCode().get(code).stream() - .map(ErrorCase::getReason) - .distinct() - .forEach( - reason -> { - output.append(" * "); - String wrappedReason = reflow(fixHtml(reason), LINE_WIDTH - 8); - - // Replace internal newlines with indentation and strip the final newline. - output.append(wrappedReason.trim().replace("\n", "\n" + INDENT8)); - output.append('\n'); - }); - } - output.append('\n'); - } - return output.toString(); - } - - private MarkdownDocumentationFormatter() {} -} diff --git a/docs/src/test/java/google/registry/documentation/FlowContext.java b/docs/src/test/java/google/registry/documentation/FlowContext.java deleted file mode 100644 index 38fd560a5..000000000 --- a/docs/src/test/java/google/registry/documentation/FlowContext.java +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static com.google.common.collect.MoreCollectors.onlyElement; -import static google.registry.util.BuildPathUtils.getProjectRoot; -import static java.util.stream.Collectors.joining; - -import com.google.common.base.Ascii; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.MultimapBuilder; -import com.google.common.collect.SetMultimap; -import com.google.common.collect.Sets; -import com.google.common.collect.Streams; -import com.thoughtworks.qdox.JavaDocBuilder; -import com.thoughtworks.qdox.model.JavaSource; -import google.registry.documentation.FlowDocumentation.ErrorCase; -import java.io.File; -import java.io.IOException; -import java.nio.file.DirectoryStream; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Set; - -/** - * Stores the context for a flow and computes exception mismatches between javadoc and tests. - * - *

        This class uses the flow_docs library built for the documentation generator tool to pull out - * the set of flow exceptions documented by custom javadoc tags on the specified flow. It then - * derives the corresponding test files for that flow and pulls out the imported names from those - * files, checking against a set of all possible flow exceptions to determine those used by this - * particular test. The set of javadoc-based exceptions and the set of imported exceptions should - * be identical, ensuring a correspondence between error cases listed in the documentation and - * those tested in the flow unit tests. - * - *

        If the two sets are not identical, the getMismatchedExceptions() method on this class will - * return a non-empty string containing messages about what the mismatches were and which lines - * need to be added or removed in which files in order to satisfy the correspondence condition. - */ -public class FlowContext { - /** Represents one of the two possible places an exception may be referenced from. */ - // TODO(b/19124943): This enum is only used in ErrorCaseMismatch and ideally belongs there, but - // can't go in the inner class because it's not a static inner class. At some point it might - // be worth refactoring so that this enum can be properly scoped. - private enum SourceType { JAVADOC, IMPORT } - - /** The package in which this flow resides. */ - final String packageName; - - /** The source file for this flow, used for help messages. */ - final String sourceFilename; - - /** The test files for this flow, used for help messages and extracting imported exceptions. */ - final Set testFilenames; - - /** The set of all possible exceptions that could be error cases for a flow. */ - final Set possibleExceptions; - - /** The set of exceptions referenced from the javadoc on this flow. */ - final Set javadocExceptions; - - /** Maps exceptions imported by the test files for this flow to the files in which they occur. */ - final SetMultimap importExceptionsToFilenames; - - /** - * Creates a FlowContext from a FlowDocumentation object and a set of all possible exceptions. - * The latter parameter is needed in order to filter imported names in the flow test file. - */ - public FlowContext(FlowDocumentation flowDoc, Set possibleExceptions) - throws IOException { - packageName = flowDoc.getPackageName(); - // Assume the standard filename conventions for locating the flow class's source file. - sourceFilename = "java/" + flowDoc.getQualifiedName().replace('.', '/') + ".java"; - testFilenames = getTestFilenames(flowDoc.getQualifiedName()); - checkState(testFilenames.size() >= 1, "No test files found for %s.", flowDoc.getName()); - this.possibleExceptions = possibleExceptions; - javadocExceptions = Sets.newHashSet(flowDoc.getErrors()); - importExceptionsToFilenames = getImportExceptions(); - } - - /** - * Helper to locate test files for this flow by looking in src/test/java/ for all files with the - * exact same relative filename as the flow file, but with a "*Test{,Case}.java" suffix. - */ - private static Set getTestFilenames(String flowName) throws IOException { - String commonPrefix = - getProjectRoot().resolve("core/src/test/java").resolve(flowName.replace('.', '/')) - .toString(); - return Sets.union( - getFilenamesMatchingGlob(commonPrefix + "*Test.java"), - getFilenamesMatchingGlob(commonPrefix + "*TestCase.java")); - } - - /** - * Helper to return the set of filenames matching the given glob. The glob should only have - * asterisks in the portion following the last slash (if there is one). - */ - private static Set getFilenamesMatchingGlob(String fullGlob) throws IOException { - Path globPath = FileSystems.getDefault().getPath(fullGlob); - Path dirPath = globPath.getParent(); - String glob = globPath.getFileName().toString(); - try (DirectoryStream dirStream = Files.newDirectoryStream(dirPath, glob)) { - return Streams.stream(dirStream).map(Object::toString).collect(toImmutableSet()); - } - } - - /** - * Returns a multimap mapping each exception imported in test files for this flow to the set of - * filenames for files that import that exception. - */ - private SetMultimap getImportExceptions() throws IOException { - ImmutableMultimap.Builder builder = new ImmutableMultimap.Builder<>(); - for (String testFileName : testFilenames) { - builder.putAll(testFileName, getImportExceptionsFromFile(testFileName)); - } - // Invert the mapping so that later we can easily map exceptions to where they were imported. - return MultimapBuilder.hashKeys().hashSetValues().build(builder.build().inverse()); - } - - /** - * Returns the set of exceptions imported in this test file. First extracts the set of - * all names imported by the test file, and then uses these to filter a global list of possible - * exceptions, so that the additional exception information available via the global list objects - * (which are ErrorCases wrapping exception names) can be preserved. - */ - private Set getImportExceptionsFromFile(String filename) throws IOException { - JavaDocBuilder builder = new JavaDocBuilder(); - JavaSource src = builder.addSource(new File(filename)); - final Set importedNames = Sets.newHashSet(src.getImports()); - return possibleExceptions - .stream() - .filter(errorCase -> importedNames.contains(errorCase.getClassName())) - .collect(toImmutableSet()); - } - - - /** - * Represents a mismatch in this flow for a specific error case and documents how to fix it. - * A mismatch occurs when the exception for this error case appears in either the source file - * javadoc or at least one matching test file, but not in both. - */ - private class ErrorCaseMismatch { - - /** The format for an import statement for a given exception name. */ - static final String IMPORT_FORMAT = "import %s;"; - - /** The format for a javadoc tag referencing a given exception name. */ - static final String JAVADOC_FORMAT = "@error {@link %s}"; - - // Template strings for printing output. - static final String TEMPLATE_HEADER = "Extra %s for %s:\n"; - static final String TEMPLATE_ADD = " Add %s to %s:\n + %s\n"; - static final String TEMPLATE_ADD_MULTIPLE = " Add %s to one or more of:\n%s + %s\n"; - static final String TEMPLATE_REMOVE = " Or remove %s in %s:\n - %s\n"; - static final String TEMPLATE_REMOVE_MULTIPLE = " Or remove %ss in:\n%s - %s\n"; - static final String TEMPLATE_MULTIPLE_FILES = " * %s\n"; - - /** The error case for which the mismatch was detected. */ - final ErrorCase errorCase; - - /** The source type where references could be added to fix the mismatch. */ - final SourceType addType; - - /** The source type where references could be removed to fix the mismatch. */ - final SourceType removeType; - - /** - * Constructs an ErrorCaseMismatch for the given ErrorCase and SourceType. The latter parameter - * indicates the source type this exception was referenced from. - */ - public ErrorCaseMismatch(ErrorCase errorCase, SourceType foundType) { - this.errorCase = errorCase; - // Effectively addType = !foundType. - addType = (foundType == SourceType.IMPORT ? SourceType.JAVADOC : SourceType.IMPORT); - removeType = foundType; - } - - /** Returns the line of code needed to refer to this exception from the given source type. */ - public String getCodeLineAs(SourceType sourceType) { - return sourceType == SourceType.JAVADOC - // Strip the flow package prefix from the exception class name if possible, for brevity. - ? String.format(JAVADOC_FORMAT, errorCase.getClassName().replace(packageName + ".", "")) - : String.format(IMPORT_FORMAT, errorCase.getClassName()); - } - - /** Helper to format a set of filenames for printing in a mismatch message. */ - private String formatMultipleFiles(Set filenames) { - checkArgument(filenames.size() >= 1, "Cannot format empty list of files."); - if (filenames.size() == 1) { - return filenames.stream().collect(onlyElement()); - } - return filenames - .stream() - .map(filename -> String.format(TEMPLATE_MULTIPLE_FILES, filename)) - .collect(joining("")); - } - - /** Helper to format the section describing how to add references to fix the mismatch. */ - private String makeAddSection() { - String addTypeString = Ascii.toLowerCase(addType.toString()); - String codeLine = getCodeLineAs(addType); - Set files = (addType == SourceType.JAVADOC - ? ImmutableSet.of(sourceFilename) - : testFilenames); - return (files.size() == 1 - ? String.format( - TEMPLATE_ADD, addTypeString, formatMultipleFiles(files), codeLine) - : String.format( - TEMPLATE_ADD_MULTIPLE, addTypeString, formatMultipleFiles(files), codeLine)); - } - - /** Helper to format the section describing how to remove references to fix the mismatch. */ - // TODO(b/19124943): Repeating structure from makeAddSection() - would be nice to clean up. - private String makeRemoveSection() { - String removeTypeString = Ascii.toLowerCase(removeType.toString()); - String codeLine = getCodeLineAs(removeType); - Set files = (removeType == SourceType.JAVADOC - ? ImmutableSet.of(sourceFilename) - : importExceptionsToFilenames.get(errorCase)); - return (files.size() == 1 - ? String.format( - TEMPLATE_REMOVE, removeTypeString, formatMultipleFiles(files), codeLine) - : String.format( - TEMPLATE_REMOVE_MULTIPLE, removeTypeString, formatMultipleFiles(files), codeLine)); - } - - /** Returns a string describing the mismatch for this flow exception and how to fix it. */ - @Override - public String toString() { - String headerSection = String.format( - TEMPLATE_HEADER, Ascii.toLowerCase(removeType.toString()), errorCase.getName()); - return headerSection + makeAddSection() + makeRemoveSection(); - } - } - - /** - * Returns a single string describing all mismatched exceptions for this flow. An empty string - * means no mismatched exceptions were found. - */ - public String getMismatchedExceptions() { - Set importExceptions = importExceptionsToFilenames.keySet(); - StringBuilder builder = new StringBuilder(); - for (ErrorCase errorCase : Sets.difference(javadocExceptions, importExceptions)) { - builder.append(new ErrorCaseMismatch(errorCase, SourceType.JAVADOC)).append("\n"); - } - for (ErrorCase errorCase : Sets.difference(importExceptions, javadocExceptions)) { - builder.append(new ErrorCaseMismatch(errorCase, SourceType.IMPORT)).append("\n"); - } - return builder.toString(); - } -} diff --git a/docs/src/test/java/google/registry/documentation/FlowDocumentationTest.java b/docs/src/test/java/google/registry/documentation/FlowDocumentationTest.java deleted file mode 100644 index bca9affd8..000000000 --- a/docs/src/test/java/google/registry/documentation/FlowDocumentationTest.java +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static com.google.common.truth.Truth.assertWithMessage; -import static google.registry.util.BuildPathUtils.getProjectRoot; - -import com.google.common.base.Joiner; -import java.nio.file.Files; -import java.nio.file.Path; -import org.junit.jupiter.api.Test; - -/** Tests to ensure that generated flow documentation matches the expected documentation. */ -class FlowDocumentationTest { - private static final Path GOLDEN_MARKDOWN_FILEPATH = getProjectRoot().resolve("docs/flows.md"); - - private static final String UPDATE_COMMAND = "./gradlew :docs:flowDocsTool"; - private static final String UPDATE_INSTRUCTIONS = - Joiner.on('\n') - .join( - "", - "-----------------------------------------------------------------------------------", - "Your changes affect the flow API documentation output. To update the golden version " - + "of the documentation, run:", - UPDATE_COMMAND, - ""); - - @Test - void testGeneratedMatchesGolden() throws Exception { - // Read the markdown file. - String goldenMarkdown = Files.readString(GOLDEN_MARKDOWN_FILEPATH); - - // Don't use Truth's isEqualTo() because the output is huge and unreadable for large files. - DocumentationGenerator generator = new DocumentationGenerator(); - if (!generator.generateMarkdown().equals(goldenMarkdown)) { - assertWithMessage(UPDATE_INSTRUCTIONS).fail(); - } - } -} diff --git a/docs/src/test/java/google/registry/documentation/FlowExceptionsTest.java b/docs/src/test/java/google/registry/documentation/FlowExceptionsTest.java deleted file mode 100644 index c636a63ae..000000000 --- a/docs/src/test/java/google/registry/documentation/FlowExceptionsTest.java +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static com.google.common.truth.Truth.assertWithMessage; - -import com.google.common.collect.Sets; -import com.google.common.flogger.FluentLogger; -import google.registry.documentation.FlowDocumentation.ErrorCase; -import java.util.Set; -import org.junit.jupiter.api.Test; - -/** - * Test to ensure accurate documentation of flow exceptions. - * - *

        This test goes through each flow and ensures that the exceptions listed in custom javadoc - * tags on the flow class match the import statements in the test case for that flow. Thus it - * catches the case where someone adds a test case for an exception without updating the javadoc, - * and the case where someone adds a javadoc tag to a flow without writing a test for this error - * condition. For example, there should always be a matching pair of lines such as the following: - * - *

        - *   src/main/java/.../flows/session/LoginFlow.java:
        - *     @error {@link AlreadyLoggedInException}
        - *
        - *   src/test/java/.../flows/session/LoginFlowTest.java:
        - *     import .....flows.session.LoginFlow.AlreadyLoggedInException;
        - * 
        - * - * If the first line is missing, this test fails and suggests adding the javadoc tag or removing - * the import. If the second line is missing, this test fails and suggests adding the import or - * removing the javadoc tag. - */ -@SuppressWarnings("javadoc") -class FlowExceptionsTest { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - @Test - void testExceptionCorrespondence() throws Exception { - DocumentationGenerator docGenerator = new DocumentationGenerator(); - Set possibleErrors = Sets.newHashSet(docGenerator.getAllErrors()); - Set mismatchingFlows = Sets.newHashSet(); - for (FlowDocumentation flow : docGenerator.getFlowDocs()) { - FlowContext context = new FlowContext(flow, possibleErrors); - String mismatches = context.getMismatchedExceptions(); - if (!mismatches.isEmpty()) { - logger.atWarning().log("%-40s FAIL\n\n%s", flow.getName(), mismatches); - mismatchingFlows.add(flow.getName()); - } else { - logger.atInfo().log("%-40s OK", flow.getName()); - } - } - assertWithMessage( - "Mismatched exceptions between flow documentation and tests. See test log for full " - + "details. The set of failing flows follows.") - .that(mismatchingFlows) - .isEmpty(); - } -} diff --git a/docs/src/test/java/google/registry/documentation/MarkdownDocumentationFormatterTest.java b/docs/src/test/java/google/registry/documentation/MarkdownDocumentationFormatterTest.java deleted file mode 100644 index 49e070242..000000000 --- a/docs/src/test/java/google/registry/documentation/MarkdownDocumentationFormatterTest.java +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.documentation; - -import static com.google.common.truth.Truth.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import java.util.Arrays; -import org.junit.jupiter.api.Test; - -/** Test conversion of javadocs to markdown. */ -class MarkdownDocumentationFormatterTest { - - @Test - void testHtmlSanitization() { - assertThat( - MarkdownDocumentationFormatter.fixHtml( - "First.

        Second. < > & &squot; "")) - .isEqualTo("First. Second. < > & ' \""); - assertThat(MarkdownDocumentationFormatter.fixHtml("

        Leading substitution.")) - .isEqualTo("Leading substitution."); - assertThat(MarkdownDocumentationFormatter.fixHtml("No substitution.")) - .isEqualTo("No substitution."); - } - - @Test - void testDedents() { - assertThat( - MarkdownDocumentationFormatter.fixHtml("First line\n\n

        Second line.\n Third line.")) - .isEqualTo("First line\n\nSecond line.\nThird line."); - } - - @Test - void testUnknownSequences() { - assertThrows( - IllegalArgumentException.class, () -> MarkdownDocumentationFormatter.fixHtml("&blech;")); - } - - @Test - void testParagraphFormatting() { - String[] words = {"first", "second", "third", "really-really-long-word", "more", "stuff"}; - String formatted = MarkdownDocumentationFormatter.formatParagraph(Arrays.asList(words), 16); - assertThat(formatted).isEqualTo("first second\nthird\nreally-really-long-word\nmore stuff\n"); - } - - @Test - void testReflow() { - String input = - "This is the very first line.\n" - + " \n" // add a little blank space to this line just to make things interesting. - + "This is the second paragraph. Aint\n" - + "it sweet?\n" - + "\n" - + "This is our third and final paragraph.\n" - + "It is multi-line and ends with no blank\n" - + "line."; - - String expected = - "This is the very\n" - + "first line.\n" - + "\n" - + "This is the\n" - + "second\n" - + "paragraph. Aint\n" - + "it sweet?\n" - + "\n" - + "This is our\n" - + "third and final\n" - + "paragraph. It is\n" - + "multi-line and\n" - + "ends with no\n" - + "blank line.\n"; - - assertThat(MarkdownDocumentationFormatter.reflow(input, 16)).isEqualTo(expected); - } - - MarkdownDocumentationFormatterTest() {} -} diff --git a/gradle.lockfile b/gradle.lockfile index 6a23bc82e..640eb3070 100644 --- a/gradle.lockfile +++ b/gradle.lockfile @@ -3,6 +3,7 @@ # This file is expected to be part of source control. com.google.code.findbugs:jsr305:3.0.2=checkstyle com.google.errorprone:error_prone_annotations:2.7.1=checkstyle +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.guava:failureaccess:1.0.1=checkstyle com.google.guava:guava:31.0.1-jre=checkstyle com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle @@ -23,4 +24,4 @@ org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt org.reflections:reflections:0.10.2=checkstyle -empty=errorprone,errorproneJavac,shadow +empty=errorprone,shadow diff --git a/gradle.properties b/gradle.properties index ce732df52..984e96711 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,6 @@ uploaderDestination= uploaderCredentialsFile= uploaderMultithreadedUpload= verboseTestOutput=false -flowDocsFile= enableDependencyLocking=true enableCrossReferencing=false testFilter= diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 27313fbc8..d0d403e27 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/java8compatibility/build.gradle b/java8compatibility/build.gradle deleted file mode 100644 index 2960637ad..000000000 --- a/java8compatibility/build.gradle +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2022 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -configurations { - all_prod_jars -} - -dependencies { - def deps = rootProject.dependencyMap - - testImplementation deps['com.google.guava:guava'] - testImplementation deps['com.google.truth:truth'] - testImplementation deps['org.junit.jupiter:junit-jupiter-api'] - testImplementation deps['org.junit.jupiter:junit-jupiter-engine'] - testImplementation deps['org.junit.jupiter:junit-jupiter-params'] - testRuntimeOnly project(path: ':core', configuration: 'deploy_jar') - - // Collection of jars that get deployed to Appengine. Please refer to - // ../appengine_war.gradle for more information. - // This includes nomulus production classes and all dependencies. - all_prod_jars project(path: ':core', configuration: 'deploy_jar') -} - -test { - def jarlist = configurations.all_prod_jars.each { - it.toURI().toURL() - }.join(',') - - systemProperty 'all_prod_jars', jarlist -} diff --git a/java8compatibility/buildscript-gradle.lockfile b/java8compatibility/buildscript-gradle.lockfile deleted file mode 100644 index 0d156738b..000000000 --- a/java8compatibility/buildscript-gradle.lockfile +++ /dev/null @@ -1,4 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -empty=classpath diff --git a/java8compatibility/src/test/java/google/registry/java8compatibility/ByteCodeVersionTest.java b/java8compatibility/src/test/java/google/registry/java8compatibility/ByteCodeVersionTest.java deleted file mode 100644 index 61f6d1259..000000000 --- a/java8compatibility/src/test/java/google/registry/java8compatibility/ByteCodeVersionTest.java +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2022 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.java8compatibility; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; - -import com.google.common.base.Splitter; -import com.google.common.collect.ImmutableList; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.stream.Stream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -/** - * Verifies that a list of user-specified jars are compatible with Java 8. - * - *

        User should use the {@link #JAR_LIST_PROPERTY_NAME} system property to pass in the - * fully-qualified filenames of the jars to be verified, separate by comma. - * - *

        To verify Java 8 compatibility, it is not sufficient to run tests with the Java 8 JVM. Many - * API jars, notably those for GCP services, are not exercised by tests. This class takes the - * conservative approach, and fails if any class is not compatible, regardless if it is in a - * production code path. - */ -class ByteCodeVersionTest { - - public static final String JAR_LIST_PROPERTY_NAME = "all_prod_jars"; - - /** - * The major version of bytecode at Java 8 target level. Technically this is a short value. - * However, a byte is sufficient for the lifetime of this class. - */ - private static final byte JAVA8_MAJOR_VERSION = (byte) 52; - // Offset of the major version number's lower byte in the class file. - private static final int MAJOR_VERSION_OFFSET = 7; - private static final int HEADER_LENGTH = MAJOR_VERSION_OFFSET + 1; - - private static ImmutableList jarsPaths; - - @BeforeAll - static void setup() { - jarsPaths = - ImmutableList.copyOf( - Splitter.on(',') - .omitEmptyStrings() - .trimResults() - .split(System.getProperty(JAR_LIST_PROPERTY_NAME))); - assertWithMessage("Jar list is empty.").that(jarsPaths).isNotEmpty(); - jarsPaths.forEach(path -> assertThat(path).endsWith(".jar")); - } - - @SuppressWarnings("unused") - private static Stream provideJarNames() { - return jarsPaths.stream() - .filter(pathStr -> new File(pathStr).exists()) - .map(pathStr -> Arguments.of(pathStr.substring(pathStr.lastIndexOf('/') + 1), pathStr)); - } - - @ParameterizedTest(name = "verifyBytecode_isJava8: {0}") - @MethodSource("provideJarNames") - void verifyBytecode_isJava8(String jarName, String jarPath) throws IOException { - ZipFile jarFile = new ZipFile(jarPath); - for (Enumeration entries = jarFile.entries(); entries.hasMoreElements(); ) { - verifyOneZipEntry(jarPath, jarFile, entries.nextElement()); - } - } - - private void verifyOneZipEntry(String jarPath, ZipFile jarFile, ZipEntry entry) - throws IOException { - /** - * A few jars (jaxb-api and bcprov-jdk15on) include Java 9+ module classes under - * META-INF/versions. They don't affect Java 8. - */ - if (entry.getName().startsWith("META-INF/versions/")) { - return; - } - if (!entry.getName().endsWith(".class")) { - return; - } - // Several jars include module-info.class at the root instead of under META-INF. This does not - // affect Java 8 either. - if (entry.getName().endsWith("module-info.class")) { - return; - } - try (InputStream inputStream = jarFile.getInputStream(entry)) { - byte[] header = inputStream.readNBytes(HEADER_LENGTH); - assertWithMessage("Malformed java class %s in %s.", entry.getName(), jarPath) - .that(header != null && header.length == HEADER_LENGTH) - .isTrue(); - assertWithMessage("Incompatible with Java 8: Class %s in %s.", entry.getName(), jarPath) - .that(header[MAJOR_VERSION_OFFSET]) - .isAtMost(JAVA8_MAJOR_VERSION); - } - } -} diff --git a/java_common.gradle b/java_common.gradle index 70c77559c..78de05033 100644 --- a/java_common.gradle +++ b/java_common.gradle @@ -71,8 +71,8 @@ configurations { } dependencies { - // compatibility with Java 8 - errorprone("com.google.errorprone:error_prone_core:2.3.4") + // compatibility with Java 17 + errorprone("com.google.errorprone:error_prone_core:2.23.0") } test { @@ -109,27 +109,37 @@ tasks.withType(Test).configureEach { } tasks.withType(JavaCompile).configureEach { - // The -Werror flag causes Intellij to fail on deprecated api use. - // Allow IDE user to turn off this flag by specifying a Gradle VM - // option from inside the IDE. - if (System.getProperty('no_werror') != 'true' && - // The core project throws an warning about Gradle annotation processor - // not compatible with Java source version > 8. Re-assess once the - // warning is fixed. - getProject().name != 'core') { - options.compilerArgs << "-Werror" - } - options.errorprone.disableWarningsInGeneratedCode = true - options.errorprone.errorproneArgumentProviders.add([ - asArguments: { - return ['-XepExcludedPaths:.*/build/generated/.*'] - }] as CommandLineArgumentProvider) - // Disable features currently incompatible with Java 12 - if ((JavaVersion.current().majorVersion as Integer) > 11) { - // This check is broken in Java 12. - // See https://github.com/google/error-prone/issues/1257 - options.errorprone.errorproneArgs=['-Xep:Finally:OFF'] - } + // The -Werror flag causes Intellij to fail on deprecated api use. + // Allow IDE user to turn off this flag by specifying a Gradle VM + // option from inside the IDE. + if (System.getProperty('no_werror') != 'true') { + options.compilerArgs << "-Werror" + } + if (name.equals('compileTestJava')) { + // Allow unused methods in tests. + options.errorprone.disable("UnusedMethod") + // Allow unused variables in tests. + options.errorprone.disable("UnusedVariable") + } + // Allow using non-constant strings in log. + options.errorprone.disable("FloggerLogString") + // Allow using @error in javadoc. + options.errorprone.disable("InvalidBlockTag") + // Allow creating format string as single-use variables. + options.errorprone.disable("InlineFormatString") + // TODO: enable this check once we fix all existing violations. + options.errorprone.disable("NullableOptional") + // Allow implicit cast from long to double. + options.errorprone.disable("LongDoubleConversion") + // Allow import of commonly-used names such as "Type". + options.errorprone.disable("BadImport") + // TODO: enable this once we are on Java 17 runtime. + options.errorprone.disable("InlineMeInliner") + options.errorprone.disableWarningsInGeneratedCode = true + options.errorprone.errorproneArgumentProviders.add([ + asArguments: { + return ['-XepExcludedPaths:.*/build/generated/.*'] + }] as CommandLineArgumentProvider) } compileJava { options.encoding = "UTF-8" } diff --git a/networking/gradle.lockfile b/networking/gradle.lockfile index b6dc9446b..20e0d54b5 100644 --- a/networking/gradle.lockfile +++ b/networking/gradle.lockfile @@ -1,9 +1,10 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor com.fasterxml.jackson.core:jackson-annotations:2.10.3=testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.docker-java:docker-java-api:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport-zerodep:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport:3.3.4=testCompileClasspath,testRuntimeClasspath @@ -11,84 +12,84 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.android:annotations:4.1.1.4=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api-client:google-api-client:1.35.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-common-protos:2.29.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-iam-v1:1.24.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:api-common:2.21.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax-grpc:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax-httpjson:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-common-protos:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-iam-v1:1.18.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:api-common:2.15.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax-grpc:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax-httpjson:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.appengine:appengine-api-1.0-sdk:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.appengine:appengine-testing:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-credentials:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-credentials:1.19.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.19.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.10.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value:1.10.4=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor -com.google.cloud:google-cloud-tasks:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.cloud:google-cloud-tasks:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.10.1=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.dagger:dagger-compiler:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger-spi:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger:2.50=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.devtools.ksp:symbol-processing-api:1.9.20-1.0.14=annotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=errorprone -com.google.errorprone:error_prone_annotations:2.7.1=annotationProcessor,checkstyle,testAnnotationProcessor -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.7.1=checkstyle +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:javac-shaded:9-dev-r4023-3=annotationProcessor,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.flogger:flogger-system-backend:0.8=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.flogger:flogger:0.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.googlejavaformat:google-java-format:1.5=annotationProcessor,testAnnotationProcessor com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=errorprone -com.google.guava:guava:31.0.1-jre=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-apache-v2:1.42.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.http-client:google-http-client-gson:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.http-client:google-http-client:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=errorprone -com.google.j2objc:j2objc-annotations:1.3=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java-util:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java-util:3.23.2=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.23.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.re2j:re2j:1.7=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.truth:truth:1.2.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor com.ibm.icu:icu4j:74.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.puppycrawl.tools:checkstyle:9.3=checkstyle com.squareup:javapoet:1.13.0=annotationProcessor,testAnnotationProcessor com.squareup:kotlinpoet:1.11.0=annotationProcessor,testAnnotationProcessor commons-beanutils:commons-beanutils:1.9.4=checkstyle -commons-codec:commons-codec:1.16.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +commons-codec:commons-codec:1.15=deploy_jar,runtimeClasspath,testRuntimeClasspath commons-collections:commons-collections:3.2.2=checkstyle commons-logging:commons-logging:1.2=deploy_jar,runtimeClasspath,testRuntimeClasspath info.picocli:picocli:4.6.2=checkstyle -io.github.java-diff-utils:java-diff-utils:4.12=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-alts:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-api:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-auth:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-context:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-core:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-googleapis:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-grpclb:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-inprocess:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-netty-shaded:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf-lite:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-services:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-stub:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-util:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-xds:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-alts:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-api:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-auth:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-context:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-core:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-googleapis:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-grpclb:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-netty-shaded:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf-lite:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-services:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-stub:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-xds:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.netty:netty-buffer:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec-http:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -105,7 +106,7 @@ io.perfmark:perfmark-api:0.26.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:activation:1.1=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:javax.activation-api:1.2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.annotation:javax.annotation-api:1.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath javax.mail:mail:1.5.0-b01=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.xml.bind:jaxb-api:2.4.0-b180830.0359=deploy_jar,runtimeClasspath,testRuntimeClasspath joda-time:joda-time:2.12.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -123,13 +124,10 @@ org.bouncycastle:bcprov-jdk15on:1.67=compileClasspath,deploy_jar,runtimeClasspat org.checkerframework:checker-compat-qual:2.5.3=compileClasspath,testCompileClasspath org.checkerframework:checker-compat-qual:2.5.5=annotationProcessor,testAnnotationProcessor org.checkerframework:checker-compat-qual:2.5.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=errorprone -org.checkerframework:checker-qual:3.12.0=annotationProcessor,checkstyle,testAnnotationProcessor +org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.41.0=compileClasspath org.checkerframework:checker-qual:3.42.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=errorprone org.codehaus.mojo:animal-sniffer-annotations:1.23=deploy_jar,runtimeClasspath,testRuntimeClasspath org.conscrypt:conscrypt-openjdk-uber:2.5.2=deploy_jar,runtimeClasspath,testRuntimeClasspath org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath @@ -159,10 +157,7 @@ org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle org.rnorth.duct-tape:duct-tape:1.0.8=testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-api:1.7.36=testCompileClasspath,testRuntimeClasspath @@ -170,4 +165,4 @@ org.testcontainers:junit-jupiter:1.19.3=testCompileClasspath,testRuntimeClasspat org.testcontainers:testcontainers:1.19.3=testCompileClasspath,testRuntimeClasspath org.threeten:threetenbp:1.6.8=deploy_jar,runtimeClasspath,testRuntimeClasspath org.yaml:snakeyaml:2.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -empty=errorproneJavac +empty= diff --git a/prober/gradle.lockfile b/prober/gradle.lockfile index 0707817b8..7a5305378 100644 --- a/prober/gradle.lockfile +++ b/prober/gradle.lockfile @@ -1,9 +1,10 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor com.fasterxml.jackson.core:jackson-annotations:2.10.3=testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.docker-java:docker-java-api:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport-zerodep:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport:3.3.4=testCompileClasspath,testRuntimeClasspath @@ -11,87 +12,87 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.android:annotations:4.1.1.4=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api-client:google-api-client:1.35.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-common-protos:2.29.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-iam-v1:1.24.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:api-common:2.21.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax-grpc:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax-httpjson:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api:gax:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-common-protos:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-iam-v1:1.18.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:api-common:2.15.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax-grpc:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax-httpjson:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.appengine:appengine-api-1.0-sdk:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.appengine:appengine-testing:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-credentials:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-credentials:1.19.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.19.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.10.4=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value:1.10.4=annotationProcessor,deploy_jar,runtimeClasspath,testAnnotationProcessor,testRuntimeClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor -com.google.cloud:google-cloud-tasks:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.cloud:google-cloud-tasks:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.10.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.dagger:dagger-compiler:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger-spi:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger:2.50=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.devtools.ksp:symbol-processing-api:1.9.20-1.0.14=annotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=errorprone -com.google.errorprone:error_prone_annotations:2.7.1=annotationProcessor,checkstyle,testAnnotationProcessor -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.7.1=checkstyle +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:javac-shaded:9-dev-r4023-3=annotationProcessor,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.flogger:flogger-system-backend:0.8=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.flogger:flogger:0.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.googlejavaformat:google-java-format:1.5=annotationProcessor,testAnnotationProcessor com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=errorprone -com.google.guava:guava:31.0.1-jre=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-apache-v2:1.42.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.http-client:google-http-client-gson:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.http-client:google-http-client:1.43.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=errorprone -com.google.j2objc:j2objc-annotations:1.3=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.monitoring-client:contrib:1.0.7=testCompileClasspath,testRuntimeClasspath com.google.monitoring-client:metrics:1.0.7=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java-util:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java-util:3.23.2=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.23.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.re2j:re2j:1.1=compileClasspath,testCompileClasspath com.google.re2j:re2j:1.7=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.truth:truth:1.2.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor com.ibm.icu:icu4j:74.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.puppycrawl.tools:checkstyle:9.3=checkstyle com.squareup:javapoet:1.13.0=annotationProcessor,testAnnotationProcessor com.squareup:kotlinpoet:1.11.0=annotationProcessor,testAnnotationProcessor commons-beanutils:commons-beanutils:1.9.4=checkstyle -commons-codec:commons-codec:1.16.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +commons-codec:commons-codec:1.15=deploy_jar,runtimeClasspath,testRuntimeClasspath commons-collections:commons-collections:3.2.2=checkstyle commons-logging:commons-logging:1.2=deploy_jar,runtimeClasspath,testRuntimeClasspath info.picocli:picocli:4.6.2=checkstyle -io.github.java-diff-utils:java-diff-utils:4.12=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-alts:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-api:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-auth:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-context:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-core:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-googleapis:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-grpclb:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-inprocess:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-netty-shaded:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf-lite:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-services:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-stub:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-util:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-xds:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-alts:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-api:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-auth:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-context:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-core:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-googleapis:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-grpclb:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-netty-shaded:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf-lite:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-services:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-stub:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-xds:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.netty:netty-buffer:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec-http:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -108,7 +109,7 @@ io.perfmark:perfmark-api:0.26.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:activation:1.1=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:javax.activation-api:1.2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.annotation:javax.annotation-api:1.3.2=deploy_jar,runtimeClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath javax.mail:mail:1.5.0-b01=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.xml.bind:jaxb-api:2.4.0-b180830.0359=deploy_jar,runtimeClasspath,testRuntimeClasspath joda-time:joda-time:2.12.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -128,13 +129,10 @@ org.bouncycastle:bcprov-jdk15on:1.67=compileClasspath,deploy_jar,runtimeClasspat org.checkerframework:checker-compat-qual:2.5.3=compileClasspath,testCompileClasspath org.checkerframework:checker-compat-qual:2.5.5=annotationProcessor,testAnnotationProcessor org.checkerframework:checker-compat-qual:2.5.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=errorprone -org.checkerframework:checker-qual:3.12.0=annotationProcessor,checkstyle,testAnnotationProcessor +org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.41.0=compileClasspath org.checkerframework:checker-qual:3.42.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=errorprone org.codehaus.mojo:animal-sniffer-annotations:1.23=deploy_jar,runtimeClasspath,testRuntimeClasspath org.conscrypt:conscrypt-openjdk-uber:2.5.2=deploy_jar,runtimeClasspath,testRuntimeClasspath org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath @@ -166,10 +164,7 @@ org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle org.rnorth.duct-tape:duct-tape:1.0.8=testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-api:1.7.36=testCompileClasspath,testRuntimeClasspath @@ -179,4 +174,4 @@ org.threeten:threetenbp:1.6.8=deploy_jar,runtimeClasspath,testRuntimeClasspath org.yaml:snakeyaml:2.2=deploy_jar,runtimeClasspath,testRuntimeClasspath xerces:xmlParserAPIs:2.6.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath xpp3:xpp3:1.1.4c=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -empty=errorproneJavac +empty= diff --git a/prober/src/main/java/google/registry/monitoring/blackbox/handler/WebWhoisActionHandler.java b/prober/src/main/java/google/registry/monitoring/blackbox/handler/WebWhoisActionHandler.java index 09240362d..fb1707550 100644 --- a/prober/src/main/java/google/registry/monitoring/blackbox/handler/WebWhoisActionHandler.java +++ b/prober/src/main/java/google/registry/monitoring/blackbox/handler/WebWhoisActionHandler.java @@ -87,7 +87,7 @@ public class WebWhoisActionHandler extends ActionHandler { if (response.status().equals(HttpResponseStatus.OK)) { logger.atInfo().log("Received Successful HttpResponseStatus"); - logger.atInfo().log("Response Received: " + response); + logger.atInfo().log("Response Received: %s", response); // On success, we always pass message to ActionHandler's channelRead0 method. super.channelRead0(ctx, msg); diff --git a/prober/src/test/java/google/registry/monitoring/blackbox/ProbingSequenceTest.java b/prober/src/test/java/google/registry/monitoring/blackbox/ProbingSequenceTest.java index cccf9127e..183f59f87 100644 --- a/prober/src/test/java/google/registry/monitoring/blackbox/ProbingSequenceTest.java +++ b/prober/src/test/java/google/registry/monitoring/blackbox/ProbingSequenceTest.java @@ -54,6 +54,7 @@ import org.mockito.Mockito; * UnrecoverableStateException}, using mocks of the steps or actions, as the sequences are run using * the main thread (with {@link EmbeddedChannel}). */ +@SuppressWarnings("DoNotMockAutoValue") class ProbingSequenceTest { private static final String PROTOCOL_NAME = "PROTOCOL"; diff --git a/prober/src/test/java/google/registry/monitoring/blackbox/testserver/TestServer.java b/prober/src/test/java/google/registry/monitoring/blackbox/testserver/TestServer.java index c2779daea..9bdc8b5e2 100644 --- a/prober/src/test/java/google/registry/monitoring/blackbox/testserver/TestServer.java +++ b/prober/src/test/java/google/registry/monitoring/blackbox/testserver/TestServer.java @@ -39,7 +39,6 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponseStatus; -import org.w3c.dom.Document; /** * Mock Server Superclass whose subclasses implement specific behaviors we expect blackbox server to @@ -137,7 +136,6 @@ public class TestServer { private static class EppHandler extends ChannelDuplexHandler { - Document doc; private ChannelPromise future; @Override @@ -157,7 +155,7 @@ public class TestServer { // LengthFieldBasedFrameDecoder. try { - doc = EppMessage.byteArrayToXmlDoc(messageBytes); + EppMessage.byteArrayToXmlDoc(messageBytes); ChannelFuture unusedFuture = future.setSuccess(); } catch (FailureException e) { ChannelFuture unusedFuture = future.setFailure(e); diff --git a/processor/gradle.lockfile b/processor/gradle.lockfile index f22669232..dde246ad9 100644 --- a/processor/gradle.lockfile +++ b/processor/gradle.lockfile @@ -1,43 +1,45 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.errorprone:error_prone_annotations:2.7.1=checkstyle -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=compileClasspath,testCompileClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor com.puppycrawl.tools:checkstyle:9.3=checkstyle com.squareup:javapoet:1.13.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath commons-beanutils:commons-beanutils:1.9.4=checkstyle commons-collections:commons-collections:3.2.2=checkstyle info.picocli:picocli:4.6.2=checkstyle +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor +javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor javax.persistence:javax.persistence-api:2.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath net.sf.saxon:Saxon-HE:10.6=checkstyle org.antlr:antlr4-runtime:4.9.3=checkstyle -org.checkerframework:checker-qual:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.41.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=annotationProcessor,errorprone,testAnnotationProcessor org.jacoco:org.jacoco.agent:0.8.9=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.9=jacocoAnt org.jacoco:org.jacoco.core:0.8.9=jacocoAnt @@ -46,9 +48,6 @@ org.javassist:javassist:3.28.0-GA=checkstyle org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle -empty=errorproneJavac +empty= diff --git a/processor/src/main/java/google/registry/processors/VKeyProcessor.java b/processor/src/main/java/google/registry/processors/VKeyProcessor.java index 47818742a..8b9da6d03 100644 --- a/processor/src/main/java/google/registry/processors/VKeyProcessor.java +++ b/processor/src/main/java/google/registry/processors/VKeyProcessor.java @@ -78,7 +78,7 @@ public class VKeyProcessor extends AbstractProcessor { .collect(toImmutableList()); checkState( actualAnnotations.size() == 1, - "% can have only one @WithVKey annotation", + "%s can have only one @WithVKey annotation", simpleTypeName); TypeName keyType = null; for (Map.Entry entry : diff --git a/proxy/gradle.lockfile b/proxy/gradle.lockfile index 2afe35db7..47bbf3fea 100644 --- a/proxy/gradle.lockfile +++ b/proxy/gradle.lockfile @@ -1,12 +1,13 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor com.beust:jcommander:1.60=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson.core:jackson-annotations:2.14.2=testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson.core:jackson-core:2.14.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.fasterxml.jackson:jackson-bom:2.14.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.docker-java:docker-java-api:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport-zerodep:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport:3.3.4=testCompileClasspath,testRuntimeClasspath @@ -17,118 +18,113 @@ com.google.api.grpc:gapic-google-cloud-storage-v2:2.22.6-alpha=compileClasspath, com.google.api.grpc:grpc-google-cloud-storage-v2:2.22.6-alpha=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.22.6-alpha=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.22.0=compileClasspath,testCompileClasspath -com.google.api.grpc:proto-google-common-protos:2.29.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-common-protos:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.17.0=compileClasspath,testCompileClasspath -com.google.api.grpc:proto-google-iam-v1:1.24.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-iam-v1:1.18.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api:api-common:2.14.0=compileClasspath,testCompileClasspath -com.google.api:api-common:2.21.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:api-common:2.15.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api:gax-grpc:2.31.0=compileClasspath,testCompileClasspath -com.google.api:gax-grpc:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax-grpc:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api:gax-httpjson:2.31.0=compileClasspath,testCompileClasspath -com.google.api:gax-httpjson:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax-httpjson:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api:gax:2.31.0=compileClasspath,testCompileClasspath -com.google.api:gax:2.38.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.api:gax:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.apis:google-api-services-cloudkms:v1-rev20231212-2.0.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.apis:google-api-services-monitoring:v3-rev20231215-2.0.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.apis:google-api-services-storage:v1-rev20230301-2.0.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.appengine:appengine-api-1.0-sdk:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.appengine:appengine-testing:1.9.86=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-credentials:1.19.0=compileClasspath,testCompileClasspath -com.google.auth:google-auth-library-credentials:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.19.0=compileClasspath,testCompileClasspath -com.google.auth:google-auth-library-oauth2-http:1.20.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-credentials:1.19.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.19.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.10.1=compileClasspath com.google.auto.value:auto-value-annotations:1.10.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value:1.10.4=annotationProcessor,deploy_jar,runtimeClasspath,testAnnotationProcessor,testRuntimeClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.cloud:google-cloud-core-grpc:2.21.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-core-http:2.21.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-core:2.21.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.cloud:google-cloud-tasks:2.23.0=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.10.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.dagger:dagger-compiler:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger-spi:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger:2.50=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.devtools.ksp:symbol-processing-api:1.9.20-1.0.14=annotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=errorprone -com.google.errorprone:error_prone_annotations:2.7.1=annotationProcessor,checkstyle,testAnnotationProcessor -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.7.1=checkstyle +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:javac-shaded:9-dev-r4023-3=annotationProcessor,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.flogger:flogger-system-backend:0.8=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.flogger:flogger:0.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.googlejavaformat:google-java-format:1.5=annotationProcessor,testAnnotationProcessor com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=errorprone -com.google.guava:guava:31.0.1-jre=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor +com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-apache-v2:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-appengine:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-gson:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-jackson2:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=errorprone -com.google.j2objc:j2objc-annotations:1.3=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.monitoring-client:contrib:1.0.7=testCompileClasspath,testRuntimeClasspath com.google.monitoring-client:metrics:1.0.7=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.monitoring-client:stackdriver:1.0.7=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java-util:3.23.2=compileClasspath,testCompileClasspath -com.google.protobuf:protobuf-java-util:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.23.2=compileClasspath,testCompileClasspath -com.google.protobuf:protobuf-java:3.25.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java-util:3.23.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.23.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.re2j:re2j:1.1=compileClasspath,testCompileClasspath com.google.re2j:re2j:1.7=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.truth:truth:1.2.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor com.ibm.icu:icu4j:74.2=deploy_jar,runtimeClasspath,testRuntimeClasspath com.puppycrawl.tools:checkstyle:9.3=checkstyle com.squareup:javapoet:1.13.0=annotationProcessor,testAnnotationProcessor com.squareup:kotlinpoet:1.11.0=annotationProcessor,testAnnotationProcessor commons-beanutils:commons-beanutils:1.9.4=checkstyle -commons-codec:commons-codec:1.15=compileClasspath,testCompileClasspath -commons-codec:commons-codec:1.16.0=deploy_jar,runtimeClasspath,testRuntimeClasspath +commons-codec:commons-codec:1.15=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath commons-collections:commons-collections:3.2.2=checkstyle commons-logging:commons-logging:1.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath info.picocli:picocli:4.6.2=checkstyle -io.github.java-diff-utils:java-diff-utils:4.12=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath io.grpc:grpc-alts:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-alts:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-alts:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-api:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-api:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-api:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-auth:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-auth:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-auth:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-context:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-context:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-core:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-googleapis:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-context:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-core:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-googleapis:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-grpclb:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-grpclb:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-inprocess:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-netty-shaded:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-grpclb:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-netty-shaded:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-protobuf-lite:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-protobuf-lite:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf-lite:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-protobuf:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-protobuf:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-rls:1.55.3=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-services:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-services:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.grpc:grpc-stub:1.55.3=compileClasspath,testCompileClasspath -io.grpc:grpc-stub:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-util:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-xds:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-stub:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-xds:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.netty:netty-buffer:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec-http:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.netty:netty-codec:4.1.59.Final=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -145,7 +141,7 @@ io.perfmark:perfmark-api:0.26.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:activation:1.1=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:javax.activation-api:1.2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.annotation:javax.annotation-api:1.3.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath javax.mail:mail:1.5.0-b01=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.xml.bind:jaxb-api:2.4.0-b180830.0359=deploy_jar,runtimeClasspath,testRuntimeClasspath joda-time:joda-time:2.12.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -165,13 +161,10 @@ org.bouncycastle:bcprov-jdk15on:1.67=compileClasspath,deploy_jar,runtimeClasspat org.checkerframework:checker-compat-qual:2.5.3=compileClasspath,testCompileClasspath org.checkerframework:checker-compat-qual:2.5.5=annotationProcessor,testAnnotationProcessor org.checkerframework:checker-compat-qual:2.5.6=deploy_jar,runtimeClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=errorprone -org.checkerframework:checker-qual:3.12.0=annotationProcessor,checkstyle,testAnnotationProcessor +org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.41.0=compileClasspath org.checkerframework:checker-qual:3.42.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=errorprone org.codehaus.mojo:animal-sniffer-annotations:1.23=deploy_jar,runtimeClasspath,testRuntimeClasspath org.conscrypt:conscrypt-openjdk-uber:2.5.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath @@ -203,10 +196,7 @@ org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle org.rnorth.duct-tape:duct-tape:1.0.8=testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-api:1.7.36=testCompileClasspath,testRuntimeClasspath @@ -214,4 +204,4 @@ org.testcontainers:junit-jupiter:1.19.3=testCompileClasspath,testRuntimeClasspat org.testcontainers:testcontainers:1.19.3=testCompileClasspath,testRuntimeClasspath org.threeten:threetenbp:1.6.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.yaml:snakeyaml:2.2=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -empty=errorproneJavac +empty= diff --git a/services/backend/gradle.lockfile b/services/backend/gradle.lockfile index 1bcc7e0d2..2077e9a9b 100644 --- a/services/backend/gradle.lockfile +++ b/services/backend/gradle.lockfile @@ -63,8 +63,8 @@ com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=compileC com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api:api-common:2.21.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -114,7 +114,7 @@ com.google.cloud:google-cloud-pubsublite:1.12.19=compileClasspath,runtimeClasspa com.google.cloud:google-cloud-secretmanager:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-spanner:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:grpc-gcp:1.5.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/services/bsa/gradle.lockfile b/services/bsa/gradle.lockfile index 1bcc7e0d2..2077e9a9b 100644 --- a/services/bsa/gradle.lockfile +++ b/services/bsa/gradle.lockfile @@ -63,8 +63,8 @@ com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=compileC com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api:api-common:2.21.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -114,7 +114,7 @@ com.google.cloud:google-cloud-pubsublite:1.12.19=compileClasspath,runtimeClasspa com.google.cloud:google-cloud-secretmanager:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-spanner:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:grpc-gcp:1.5.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/services/default/gradle.lockfile b/services/default/gradle.lockfile index 1bcc7e0d2..2077e9a9b 100644 --- a/services/default/gradle.lockfile +++ b/services/default/gradle.lockfile @@ -63,8 +63,8 @@ com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=compileC com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api:api-common:2.21.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -114,7 +114,7 @@ com.google.cloud:google-cloud-pubsublite:1.12.19=compileClasspath,runtimeClasspa com.google.cloud:google-cloud-secretmanager:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-spanner:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:grpc-gcp:1.5.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/services/pubapi/gradle.lockfile b/services/pubapi/gradle.lockfile index 1bcc7e0d2..2077e9a9b 100644 --- a/services/pubapi/gradle.lockfile +++ b/services/pubapi/gradle.lockfile @@ -63,8 +63,8 @@ com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=compileC com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api:api-common:2.21.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -114,7 +114,7 @@ com.google.cloud:google-cloud-pubsublite:1.12.19=compileClasspath,runtimeClasspa com.google.cloud:google-cloud-secretmanager:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-spanner:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:grpc-gcp:1.5.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/services/tools/gradle.lockfile b/services/tools/gradle.lockfile index 1bcc7e0d2..2077e9a9b 100644 --- a/services/tools/gradle.lockfile +++ b/services/tools/gradle.lockfile @@ -63,8 +63,8 @@ com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.55.0=compileC com.google.api.grpc:proto-google-cloud-spanner-v1:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-storage-v2:2.23.0-alpha=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api:api-common:2.21.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -114,7 +114,7 @@ com.google.cloud:google-cloud-pubsublite:1.12.19=compileClasspath,runtimeClasspa com.google.cloud:google-cloud-secretmanager:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-spanner:6.55.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.22.6=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:grpc-gcp:1.5.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.15.7=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath diff --git a/settings.gradle b/settings.gradle index 308241f90..f0f0b72f7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -34,7 +34,6 @@ rootProject.name = 'nomulus' include 'common' include 'core' include 'db' -include 'docs' include 'integration' include 'networking' include 'processor' @@ -46,5 +45,4 @@ include 'services:backend' include 'services:bsa' include 'services:tools' include 'services:pubapi' -include 'java8compatibility' include "console-webapp" diff --git a/util/gradle.lockfile b/util/gradle.lockfile index 0d0adc938..e891a888f 100644 --- a/util/gradle.lockfile +++ b/util/gradle.lockfile @@ -1,9 +1,10 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. +aopalliance:aopalliance:1.0=annotationProcessor,errorprone,testAnnotationProcessor com.fasterxml.jackson.core:jackson-annotations:2.10.3=testCompileClasspath,testRuntimeClasspath -com.github.ben-manes.caffeine:caffeine:2.7.0=annotationProcessor,errorprone,testAnnotationProcessor com.github.ben-manes.caffeine:caffeine:2.9.3=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.github.ben-manes.caffeine:caffeine:3.0.5=annotationProcessor,errorprone,testAnnotationProcessor com.github.docker-java:docker-java-api:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport-zerodep:3.3.4=testCompileClasspath,testRuntimeClasspath com.github.docker-java:docker-java-transport:3.3.4=testCompileClasspath,testRuntimeClasspath @@ -11,87 +12,88 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.android:annotations:4.1.1.4=deploy_jar,runtimeClasspath,testRuntimeClasspath com.google.api-client:google-api-client:1.35.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.api.grpc:proto-google-cloud-tasks-v2:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.122.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.122.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-common-protos:2.29.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api.grpc:proto-google-iam-v1:1.24.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api:api-common:2.21.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api:gax-grpc:2.38.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api:gax-httpjson:2.38.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.api:gax:2.38.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.113.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.113.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-common-protos:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api.grpc:proto-google-iam-v1:1.18.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api:api-common:2.15.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api:gax-grpc:2.32.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api:gax-httpjson:2.32.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.api:gax:2.32.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.appengine:appengine-api-1.0-sdk:1.9.86=compileClasspath,deploy_jar,runtimeClasspath com.google.appengine:appengine-api-1.0-sdk:2.0.24=testCompileClasspath,testRuntimeClasspath com.google.appengine:appengine-api-stubs:2.0.24=testCompileClasspath,testRuntimeClasspath com.google.appengine:appengine-testing:1.9.86=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-credentials:1.20.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.auth:google-auth-library-oauth2-http:1.20.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.auto.value:auto-value-annotations:1.10.4=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-credentials:1.19.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auth:google-auth-library-oauth2-http:1.19.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto.value:auto-value-annotations:1.10.2=compileClasspath +com.google.auto.value:auto-value-annotations:1.10.4=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.auto.value:auto-value-annotations:1.9=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value:1.10.4=annotationProcessor,deploy_jar,runtimeClasspath,testAnnotationProcessor,testRuntimeClasspath -com.google.auto:auto-common:0.10=annotationProcessor,errorprone,testAnnotationProcessor -com.google.cloud:google-cloud-tasks:2.32.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.code.findbugs:jFormatString:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.auto:auto-common:1.2.1=annotationProcessor,errorprone,testAnnotationProcessor +com.google.cloud:google-cloud-tasks:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.10.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.dagger:dagger-compiler:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger-spi:2.50=annotationProcessor,testAnnotationProcessor com.google.dagger:dagger:2.50=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.devtools.ksp:symbol-processing-api:1.9.20-1.0.14=annotationProcessor,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotations:2.23.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotations:2.3.4=errorprone -com.google.errorprone:error_prone_annotations:2.7.1=annotationProcessor,checkstyle,testAnnotationProcessor -com.google.errorprone:error_prone_check_api:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_type_annotations:2.3.4=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotations:2.23.0=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.errorprone:error_prone_annotations:2.7.1=checkstyle +com.google.errorprone:error_prone_check_api:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_type_annotations:2.23.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:javac-shaded:9-dev-r4023-3=annotationProcessor,testAnnotationProcessor +com.google.errorprone:javac:9+181-r4173-1=errorproneJavac com.google.flogger:flogger-system-backend:0.8=testRuntimeClasspath com.google.flogger:flogger:0.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.googlejavaformat:google-java-format:1.5=annotationProcessor,testAnnotationProcessor com.google.guava:failureaccess:1.0.1=annotationProcessor,checkstyle,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.guava:guava-parent:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava-testlib:33.0.0-jre=testCompileClasspath,testRuntimeClasspath -com.google.guava:guava:27.0.1-jre=errorprone -com.google.guava:guava:31.0.1-jre=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.guava:guava:31.0.1-jre=checkstyle +com.google.guava:guava:32.1.1-jre=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:guava:33.0.0-jre=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle,compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-apache-v2:1.42.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client-gson:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.http-client:google-http-client:1.43.3=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.j2objc:j2objc-annotations:1.1=errorprone -com.google.j2objc:j2objc-annotations:1.3=annotationProcessor,checkstyle,testAnnotationProcessor +com.google.inject:guice:5.1.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.j2objc:j2objc-annotations:1.3=checkstyle com.google.j2objc:j2objc-annotations:2.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.oauth-client:google-oauth-client:1.34.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java-util:3.25.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.25.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.google.protobuf:protobuf-java:3.4.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java-util:3.23.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +com.google.protobuf:protobuf-java:3.19.6=annotationProcessor,errorprone,testAnnotationProcessor +com.google.protobuf:protobuf-java:3.23.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.re2j:re2j:1.7=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.google.truth:truth:1.2.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -com.googlecode.java-diff-utils:diffutils:1.3.0=annotationProcessor,errorprone,testAnnotationProcessor com.ibm.icu:icu4j:74.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.puppycrawl.tools:checkstyle:9.3=checkstyle com.squareup:javapoet:1.13.0=annotationProcessor,testAnnotationProcessor com.squareup:kotlinpoet:1.11.0=annotationProcessor,testAnnotationProcessor commons-beanutils:commons-beanutils:1.9.4=checkstyle -commons-codec:commons-codec:1.16.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-codec:commons-codec:1.15=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath commons-collections:commons-collections:3.2.2=checkstyle commons-logging:commons-logging:1.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath info.picocli:picocli:4.6.2=checkstyle -io.github.java-diff-utils:java-diff-utils:4.12=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-alts:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-api:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-auth:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-context:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-core:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-googleapis:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-grpclb:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-inprocess:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-netty-shaded:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf-lite:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-protobuf:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-services:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-stub:1.59.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -io.grpc:grpc-util:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath -io.grpc:grpc-xds:1.59.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.github.eisop:dataflow-errorprone:3.34.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor +io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-alts:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-api:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-auth:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-context:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-core:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-googleapis:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-grpclb:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-netty-shaded:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf-lite:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-protobuf:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-services:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath +io.grpc:grpc-stub:1.56.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +io.grpc:grpc-xds:1.56.1=deploy_jar,runtimeClasspath,testRuntimeClasspath io.opencensus:opencensus-api:0.31.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.opencensus:opencensus-contrib-http-util:0.31.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.opencensus:opencensus-proto:0.2.0=deploy_jar,runtimeClasspath,testRuntimeClasspath @@ -99,7 +101,7 @@ io.perfmark:perfmark-api:0.26.0=deploy_jar,runtimeClasspath,testRuntimeClasspath javax.activation:activation:1.1=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.activation:javax.activation-api:1.2.0=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.annotation:javax.annotation-api:1.3.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath +javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,errorprone,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath javax.mail:mail:1.5.0-b01=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath javax.xml.bind:jaxb-api:2.4.0-b180830.0359=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath joda-time:joda-time:2.12.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -118,13 +120,10 @@ org.bouncycastle:bcpkix-jdk15on:1.67=compileClasspath,deploy_jar,runtimeClasspat org.bouncycastle:bcprov-jdk15on:1.67=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.checkerframework:checker-compat-qual:2.5.5=annotationProcessor,testAnnotationProcessor org.checkerframework:checker-compat-qual:2.5.6=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:checker-qual:3.0.0=errorprone -org.checkerframework:checker-qual:3.12.0=annotationProcessor,checkstyle,testAnnotationProcessor +org.checkerframework:checker-qual:3.12.0=checkstyle +org.checkerframework:checker-qual:3.33.0=annotationProcessor,errorprone,testAnnotationProcessor org.checkerframework:checker-qual:3.41.0=compileClasspath org.checkerframework:checker-qual:3.42.0=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.checkerframework:dataflow:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.checkerframework:javacutil:3.0.0=annotationProcessor,errorprone,testAnnotationProcessor -org.codehaus.mojo:animal-sniffer-annotations:1.17=errorprone org.codehaus.mojo:animal-sniffer-annotations:1.23=deploy_jar,runtimeClasspath,testRuntimeClasspath org.conscrypt:conscrypt-openjdk-uber:2.5.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.hamcrest:hamcrest-core:2.2=testCompileClasspath,testRuntimeClasspath @@ -157,10 +156,7 @@ org.ow2.asm:asm-commons:9.5=jacocoAnt org.ow2.asm:asm-tree:9.5=jacocoAnt org.ow2.asm:asm:9.5=jacocoAnt org.ow2.asm:asm:9.6=deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.pcollections:pcollections:2.1.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:plume-util:1.0.6=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:reflection-util:0.0.2=annotationProcessor,errorprone,testAnnotationProcessor -org.plumelib:require-javadoc:0.1.0=annotationProcessor,errorprone,testAnnotationProcessor +org.pcollections:pcollections:3.1.4=annotationProcessor,errorprone,testAnnotationProcessor org.reflections:reflections:0.10.2=checkstyle org.rnorth.duct-tape:duct-tape:1.0.8=testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-api:1.7.36=testCompileClasspath,testRuntimeClasspath @@ -168,4 +164,4 @@ org.testcontainers:junit-jupiter:1.19.3=testCompileClasspath,testRuntimeClasspat org.testcontainers:testcontainers:1.19.3=testCompileClasspath,testRuntimeClasspath org.threeten:threetenbp:1.6.8=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.yaml:snakeyaml:2.2=compileClasspath,deploy_jar,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -empty=errorproneJavac +empty= diff --git a/util/src/main/java/google/registry/util/CidrAddressBlock.java b/util/src/main/java/google/registry/util/CidrAddressBlock.java index d46e37122..f0d5ad4df 100644 --- a/util/src/main/java/google/registry/util/CidrAddressBlock.java +++ b/util/src/main/java/google/registry/util/CidrAddressBlock.java @@ -292,18 +292,17 @@ public class CidrAddressBlock implements Iterable, Serializable { } /** - * @return the standard {@code String} representation of the IP portion - * of this CIDR block (a.b.c.d, or a:b:c::d) + * Returns the standard {@code String} representation of the IP portion of this CIDR block + * (a.b.c.d, or a:b:c::d) * - *

        NOTE: This is not reliable for comparison operations. It is - * more reliable to normalize strings into {@link InetAddress}s and - * then compare. + *

        NOTE: This is not reliable for comparison operations. It is more reliable to normalize + * strings into {@link InetAddress}s and then compare. * *

        Consider: + * *

          - *
        • {@code "10.11.12.0"} is equivalent to {@code "10.11.12.000"} - *
        • {@code "2001:db8::"} is equivalent to - * {@code "2001:0DB8:0000:0000:0000:0000:0000:0000"} + *
        • {@code "10.11.12.0"} is equivalent to {@code "10.11.12.000"} + *
        • {@code "2001:db8::"} is equivalent to {@code "2001:0DB8:0000:0000:0000:0000:0000:0000"} *
        */ public String getIp() { diff --git a/util/src/main/java/google/registry/util/PosixTarHeader.java b/util/src/main/java/google/registry/util/PosixTarHeader.java index 510052317..28be62457 100644 --- a/util/src/main/java/google/registry/util/PosixTarHeader.java +++ b/util/src/main/java/google/registry/util/PosixTarHeader.java @@ -172,6 +172,7 @@ public final class PosixTarHeader { } /** Returns the modified time as a UTC {@link DateTime} object. */ + @SuppressWarnings("JodaDateTimeConstants") public DateTime getMtime() { return new DateTime(Long.parseLong(extractField(136, 12).trim(), 8) * MILLIS_PER_SECOND, UTC); } @@ -332,7 +333,7 @@ public final class PosixTarHeader { setMode(DEFAULT_MODE); setUid(DEFAULT_UID); setGid(DEFAULT_GID); - setMtime(new DateTime(UTC)); + setMtime(DateTime.now(UTC)); setType(DEFAULT_TYPE); setMagic(); setVersion(); @@ -417,6 +418,7 @@ public final class PosixTarHeader { * epoch in UTC time. Because {@link DateTime} has millisecond precision, it gets rounded down * (floor) to the second. */ + @SuppressWarnings("JodaDateTimeConstants") public Builder setMtime(DateTime mtime) { checkNotNull(mtime, "mtime"); setField("mtime", 136, 12, String.format("%011o", mtime.getMillis() / MILLIS_PER_SECOND)); diff --git a/util/src/main/java/google/registry/util/Retrier.java b/util/src/main/java/google/registry/util/Retrier.java index 8bf4a2fef..1a32458d1 100644 --- a/util/src/main/java/google/registry/util/Retrier.java +++ b/util/src/main/java/google/registry/util/Retrier.java @@ -159,7 +159,7 @@ public class Retrier implements Serializable { failureReporter.beforeRetry(e, failures, attempts); try { // Wait 100ms on the first attempt, doubling on each subsequent attempt. - sleeper.sleep(Duration.millis(pow(2, failures) * 100)); + sleeper.sleep(Duration.millis(pow(2, failures) * 100L)); } catch (InterruptedException e2) { // Since we're not rethrowing InterruptedException, set the interrupt state on the thread // so the next blocking operation will know to abort the thread. diff --git a/util/src/main/java/google/registry/util/SendEmailService.java b/util/src/main/java/google/registry/util/SendEmailService.java index 7479d630d..faada1099 100644 --- a/util/src/main/java/google/registry/util/SendEmailService.java +++ b/util/src/main/java/google/registry/util/SendEmailService.java @@ -66,14 +66,13 @@ public class SendEmailService { if (!ALLOWED_ENVS.contains( Ascii.toUpperCase(System.getProperty("google.registry.environment", "UNITTEST")))) { logger.atInfo().log( - String.format( - "Email with subject %s would have been sent to recipients %s", - emailMessage.subject().substring(0, Math.min(emailMessage.subject().length(), 15)), - String.join( - " , ", - emailMessage.recipients().stream() - .map(ia -> ia.toString()) - .collect(toImmutableSet())))); + "Email with subject %s would have been sent to recipients %s", + emailMessage.subject().substring(0, Math.min(emailMessage.subject().length(), 15)), + String.join( + " , ", + emailMessage.recipients().stream() + .map(ia -> ia.toString()) + .collect(toImmutableSet()))); } else { retrier.callWithRetry( () -> { diff --git a/util/src/main/java/google/registry/util/X509Utils.java b/util/src/main/java/google/registry/util/X509Utils.java index 7304b4f9c..da9cc4f3e 100644 --- a/util/src/main/java/google/registry/util/X509Utils.java +++ b/util/src/main/java/google/registry/util/X509Utils.java @@ -46,6 +46,7 @@ import java.util.NoSuchElementException; import java.util.Optional; import javax.annotation.Nullable; import javax.annotation.Tainted; +import org.joda.time.DateTimeComparator; /** X.509 Public Key Infrastructure (PKI) helper functions. */ public final class X509Utils { @@ -169,12 +170,15 @@ public final class X509Utils { public static void verifyCrl( X509Certificate rootCert, @Nullable X509CRL oldCrl, @Tainted X509CRL newCrl, Date now) throws GeneralSecurityException { - if (oldCrl != null && newCrl.getThisUpdate().before(oldCrl.getThisUpdate())) { - throw new CRLException(String.format( - "New CRL is more out of date than our current CRL. %s < %s\n%s", - newCrl.getThisUpdate(), oldCrl.getThisUpdate(), newCrl)); + if (oldCrl != null + && DateTimeComparator.getInstance().compare(newCrl.getThisUpdate(), oldCrl.getThisUpdate()) + < 0) { + throw new CRLException( + String.format( + "New CRL is more out of date than our current CRL. %s < %s\n%s", + newCrl.getThisUpdate(), oldCrl.getThisUpdate(), newCrl)); } - if (newCrl.getNextUpdate().before(now)) { + if (DateTimeComparator.getInstance().compare(newCrl.getNextUpdate(), now) < 0) { throw new CRLException("CRL has expired.\n" + newCrl); } newCrl.verify(rootCert.getPublicKey()); diff --git a/util/src/main/java/google/registry/util/YamlUtils.java b/util/src/main/java/google/registry/util/YamlUtils.java index 1fdb18901..137032d15 100644 --- a/util/src/main/java/google/registry/util/YamlUtils.java +++ b/util/src/main/java/google/registry/util/YamlUtils.java @@ -86,7 +86,8 @@ public final class YamlUtils { @SuppressWarnings("unchecked") private static Map mergeMaps( Map defaultMap, Map customMap) { - for (String key : defaultMap.keySet()) { + for (Map.Entry e : defaultMap.entrySet()) { + String key = e.getKey(); if (!customMap.containsKey(key)) { continue; } @@ -99,7 +100,7 @@ public final class YamlUtils { } else { newValue = customMap.get(key); } - defaultMap.put(key, newValue); + e.setValue(newValue); } return defaultMap; } diff --git a/util/src/test/java/google/registry/util/PasswordUtilsTest.java b/util/src/test/java/google/registry/util/PasswordUtilsTest.java index 994c3ff3e..80cad0f42 100644 --- a/util/src/test/java/google/registry/util/PasswordUtilsTest.java +++ b/util/src/test/java/google/registry/util/PasswordUtilsTest.java @@ -72,7 +72,7 @@ final class PasswordUtilsTest { byte[] salt = SALT_SUPPLIER.get(); String password = "mySuperSecurePassword"; String hashedPassword = hashPassword(password, salt); - assertThat(verifyPassword(password + "a", hashedPassword, base64().encode(salt)).isEmpty()) - .isTrue(); + assertThat(verifyPassword(password + "a", hashedPassword, base64().encode(salt)).isPresent()) + .isFalse(); } } diff --git a/util/src/test/java/google/registry/util/TeeOutputStreamTest.java b/util/src/test/java/google/registry/util/TeeOutputStreamTest.java index b813b0778..8592a2487 100644 --- a/util/src/test/java/google/registry/util/TeeOutputStreamTest.java +++ b/util/src/test/java/google/registry/util/TeeOutputStreamTest.java @@ -45,9 +45,10 @@ class TeeOutputStreamTest { outputB.write("b".getBytes(UTF_8)); outputC.write("c".getBytes(UTF_8)); // Check the results. - assertThat(outputA.toString()).isEqualTo("hello world!a"); - assertThat(outputB.toString()).isEqualTo("hello world!b"); - assertThat(outputC.toString()).isEqualTo("hello world!c"); + // TODO: Use toString(StandardCharsets.UTF_8) once we can use Java 17. + assertThat(outputA.toString("UTF-8")).isEqualTo("hello world!a"); + assertThat(outputB.toString("UTF-8")).isEqualTo("hello world!b"); + assertThat(outputC.toString("UTF-8")).isEqualTo("hello world!c"); } @Test