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 The pipeline is broadly divided into two parts -- creating the {@link DepositFragment}s, and
* processing them.
*
- * Sample Reasons:
*
* 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 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 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 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:
*
- * Here's how you read a file:
*
- * If you're writing test code or are certain your data can fit in memory, you might find these
* static methods more convenient:
*
- * 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.
*
- * {@link Registrar} entities, both active and inactive, are included in all deposits. They are
- * not rewinded point-in-time.
+ * not rewound point-in-time.
*
- * 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}.
*
- * 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;
*
* 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.
*
- * 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:
* The rules for component methods are as follows:
+ *
* 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 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.
*
- * 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 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 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 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 ":
- // 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 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 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:
- *
- * 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 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:
+ *
* 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
+ *
*
*
- * @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
@@ -245,7 +245,7 @@ class BsaDiffCreator {
abstract Long orderId();
- static
Parameters Reference
+ * Parameters Reference
*
*
*
*
- * Patharg Reference
+ * Patharg Reference
*
* @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 {
* {@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);
+ * }
+ * } {@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
*
* {@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 = "
Pending Deposits
+ * Pending Deposits
*
* 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.
*
* Afterward
+ * Afterward
*
* Logging
+ * Logging
*
* Determinism
*
- * Component Definition
+ * Component Definition
+ *
+ *
* {@literal @Component}
* interface ServerComponent {
@@ -53,12 +54,13 @@ import org.joda.time.Duration;
* }
*
*
- *
*
- * Security Features
+ * Security Features
*
* @param Exception Handling
+ * Exception Handling
*
* Dependencies
+ * Dependencies
*
*
*
Dependencies
+ * Dependencies
*
*
*
{@code
- * <ns:tag>
- * XML value here.
- * </ns:tag>
+ *
*/
public class TrimWhitespaceAdapter extends XmlAdapter
- * 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
- *
*/
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